ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL数据库02

2022-05-04 22:01:23  阅读:134  来源: 互联网

标签:02 varchar int 数据库 主键 MySQL table create id


字符编码与配置文件

  • 查看MySQL默认字符编码:\s

如果是5.X系列,显示的编码有多种:latin1;gbk
如果是8.X系列,显示的统一是:utf8mb4;utf8mb4是utf8优化版本,支持存储表情。

  • 统一字符编码:

5.X默认编码有多种,可能会导致乱码的情况,所以应该统一编码。

使用my-default.ini配置文件来统一字符编码。

配置文件设置步骤:

  1. 拷贝一份该配置文件并修改名称为my.ini
  2. 清空my.ini文件内的内容
  3. 添加固定的配置信息即可
  4. 保存并重启服务端即可生效>>>:net stop mysql;net start mysql

固定的配置信息:

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

 

存储引擎

什么是存储引擎:

存储引擎可以理解为处理数据的不同方式。引擎决定数据库存取数据的方式==>不同的特点==>不同的用户体验。

引擎是建表时规定,提供给表使用的,不是数据库。

查看存储引擎:

show engines;展示所有引擎

MyISAM>>>:

5.1之前版本MySQL默认的存储引擎

特点:存取数据的速度快,但是功能很少,安全性较低。

InnoDB>>>:

5.1之后版本MySQL默认的存储引擎

特点:有诸多功能,安全性较高,但是存取速度没有MyISAM快。

自定义选择存储引擎:

create table t1(id int)engine=myisam;
create table t2(id int)engine=innodb;
create table t3(id int)engine=blackhole;
create table t4(id int)engine=memory;

创建表的完整语法

create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
)engine=innodb charset=utf8;

[]:表示可选参数

ps:

1.字段名和字段类型是必须的
2.数字和约束条件是可选的
3.约束条件可以写多个,空格隔开即可;eg:字段名1 字段类型(数字) 约束条件1 约束条件2 约束条件3
4.最后一行字段结尾不能加逗号!!!

MySQL的数据类型

Mysql数据库数据类型包括:整型,浮点型,字符类型,时间类型,枚举类型,集合类型。

  • 整型

  1. tinyint>>>:1bytes=8bit
  2. smallint>>>:2bytes=16bit
  3. mediumint>>>:3bytes=24bit
  4. int>>>:4bytes=32bit
  5. bigint>>>:8bytes=64bit

不同类型的整型所占的字节数不一样,决定所占空间及存放数据的大写,从上往下能够存储的数字范围越来越大!!!

整型需要考虑正负数的问题,如果需要存储负数,则需要占据一个比特位。

所有的整型都默认带有正负号。去除正负号则需要使用约束条件。

约束条件:

unsigned:无符号    eg:create table t1(id tinyint unsigned)

zerofill:位数不够用0填充    eg:create table t2(id interesting(3)zerofill)

  • 浮点型

  1. float>>>:float(255,30)     总共255位;小数位占30位   【精度最低;最常用】
  2. double>>>:double(255,30)    总共255位;小数位占30位  【精度高;占位多】
  3. decimal>>>:decimal(65,30)    总共65位;小数位占30位   【字符串存;全精度】

这三种浮点型:从上往下其精确度越来越高!!!decimal>double>float

(M,D)>>>:M为位数;D为小数位数。

  • 字符类型

  1. char>>>:定长     

char(4)>>>:最大只能存储四个字符,如果超出则报错;如果不够则用空格补全。

char的特点:整存整取,速度快;但是会造成一定的存储空间的浪费。

  1. varchar>>>:不定长     

varchar(4)>>>:最大只能存储四个,如果超出则报错;如果不够则有几个存几个。

varchar的特点:节省存储空间;但是存取数据的速度相较于char来说较慢。

ps:varchar的存取数据的方式:

varchar在存数据的时候会生成一个1bytes的报头,用来记录数据长度;varchar在取数据的时候先会读取1bytes的报头,然后再从中获取真实数据长度。

总结:数据长度相近的数据提倡用char来存放数据,数据需要高速存取,以空间换时间,采用char类型。

  • 枚举与集合

  1. 枚举(enum)>>>:单选
create table t14(
      id int,
    name varchar(32),
    gender enum('male','female','others')
  );
'''插入数据的时候 针对gender只能填写提前定义好的数值'''
  1. 集合(set)>>>:多选
create table t15(
      id int,
    name varchar(32),
    hobby set('篮球','足球','双色球','排球','水球','肉球')
  );
  • 时间类型

  1. date>>>:年月日
  2. datetime>>>:年月日时分秒
  3. time>>>:时分秒
  4. year>>>:年
create table t1(
    id int,
  name varchar(32),
  reg_time datetime,
  birth date,
  study_time time,
  join_time year
);

约束条件

字段类型与约束条件的关系:

约束条件是基于字段类型之上的额外限制。

eg:id int unsigned>>>:字段类型int规定了id字段只能存整数,约束条件unsigned指的是整数基础之上还必须是正数。

  • unsigned:无符号   

eg:create table t1(id tinyint unsigned)

  • zerofill:位数不够用0填充   

eg:create table t2(id interesting(3)zerofill)

  • not null:非空

eg:create table t3(id int ,name varchar(32)not null)

insert into t18(id) values(2);  # 报错
insert into t18(id,name) values(2,null);  # 报错
insert into t18(id,name) values(2,'');  # 不报错
  • default:默认值

eg:create table t4(id int ,name varchar(32)default 'jason')

  • unique:唯一值

单列唯一:某个字段下对应的数据不能重复,是唯一的。

create table t20(
    id int,
    name varchar(32) unique
  );

多列唯一:多个字段下对应的数据组合到一起的结果不能重复,是唯一的。

create table t21(
      id int,
    host varchar(32),
    port int,
    unique(host,port)
  );
  • primary key:主键

单从约束层面上看,primary key相当于not null + unique。>>>:(非空且唯一)。

eg:create table t6 (id int primary key)

InnoDB存储引擎规定的一张表,有且必须要有一个主键,用于构建表。主键可以加快数据的查询速度(类似于书的目录)。

如果创建表创建的时候没有设置主键也没有其他的键,那么InnoDB会采用一个隐藏的字段作为表的主键(隐藏就意味着而无法使用 即无法加快数据查询);
如果没有主键,但是有非空且唯一的字段,那么会自动升级成主键(从上往下的第一个)。

create table t23(
              tid int,
              pid int not null unique,
              cid int not null unique
          );

ps:

  1. 表默认都有主键,且只能拥有一个主键字段
  2. 没有设置主键的表,数据库系统会自上而下将第一个规定为unique not null字段自动提升为primary key 主键
  3. 如果整个表都没有unique not null 字段且没有primary key 字段,系统会默认创建一个隐藏字段作为主键
  4. 通常必须手动指定表的主键,一般用id字段,且id字段一般类型为int, 因为int类型可以为auto_increment
  • auto_increment:自增

专门配合主键一起使用,用户以后在添加数据的时候就不需要自己记忆主键值。

create table t25(
      id int primary key auto_increment,
    name varchar(32)
  );

总结:

以后在创建规范的表的时候,一般都会有一个主键字段的编写如下:
id int primary key auto_increment

 

标签:02,varchar,int,数据库,主键,MySQL,table,create,id
来源: https://www.cnblogs.com/-sunflower-/p/16222589.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有