MySQL表的操作(创建,查看,修改,删除)、数据类型(tinyint,bit,小数,char,varchar,日期和时间,enum和set)、表的约束(主键,外键等)-总结二

二、MySQL表的操作:

1 .创建表

语法:

CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

说明:
不同的存储引擎,创建表的文件不一样。
users 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:users.frm:表结构、users.MYD:表数、users.MYI:表索引

2. 查看表结构

desc 表名;

3.修改表

添加字段:ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);

修改字段:类型:ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column datatype]...); 名称:ALTER TABLE tablenameCHANGE name newname datatype; --新字段需要完整定义

删除字段:ALTER TABLE tablename DROP (column);

修改表名:ALTER TABLE tablename RENAME to newtablename;(to:可以省掉)

4. 删除表

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

eg: drop table t1;

三、数据类型

1. 数值类型

1.1 tinyint类型

带符号范围-128~127(默认是有符号的),无符号范围0~255(tinyint unsigned)。越界插入数值会报错。

1.2 bit类型

基本语法:bit(M): 位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。

注意事项:(1)bit字段在显示时,是按照ASCII码对应的值显示。如传入65显示的是A。

                  (2)如果我们有这样的值,只存放0或1,这时可以定义bit(1)。这样可以节省空间。

1.3 小数类型

1.3.1 float    语法:float(m, d) [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节

                  eg:float(4,2)表示的范围是-99.99 ~ 99.99;  float(4,2) unsigned范围是 0 ~ 99.99

1.3.2  decimal  语法:decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数

                  eg:  decimal(5,2) 表示的范围是 -999.99 ~ 999.99;decimal(5,2) unsigned 表示的范围 0 ~ 999.99

区别:float和decimal表示的精度不一样,float表示的精度大约是7位,decimal整数最大位数m为65(默认是10),支持小数最大位数d是30(默认为0)。需要小数的精度高时使用decimal。

2.字符串类型

2.1  char

语法:char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255

说明:char(2) 表示可以存放两个字符,可以是字母或汉字,但是不能超过2个

2.2 varchar

语法:varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节,有1-3 个字节用于记录数据大小,有效字节  数是65532。

说明:varchar(len)的len和表的编码相关:utf8时一个字符占用3个字节;gbk时一个字符占用2字节,varchar(n)的参数n最大值是65532/一个字符占用的字节数,utf8中是21844;gbk中是32766

2.3  char与varchar

(1)如果数据长度确定,使用定长(char),比如:身份证,手机号,md5                                                                           

(2)如果数据长度变化,使用变长(varchar), 比如:名字,地址,但要保证最长的能存的进去。                                            

(3)定长的磁盘空间比较浪费,但是效率高。           (4)变长的磁盘空间比较节省,但是效率低。

2.4  日期和时间类型

datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从1000到9999,占用八字节
date:日期 'yyyy-mm-dd',占用三字节
timestamp:时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss格式和datetime完全一致,占用四字节(添加数据时,时间戳自动补上当前时间)

2.5 enum和set

语法:  

enum:枚举“单选”类型;enum('选项1','选项2','选项3',...); 选项值依次对应如下数字:1,2,3,....最多65535个;

set:集合,“多选”类型;set('选项值1','选项值2','选项值3', ...);选项值依次对应如下数字:1,2,4,8,16,32,.... 最多64个。

集合查询使用find_ in_ set函数:                                                                                                                       find_in_set(sub,str_list) :如果 sub 在 str_list 中,则返回下标;如果不在,返回0; str_list 用逗号分隔的字符串。

四、表的约束

4.1 空属性: 两个值:null(默认的)和 not null(不为空)                  eg: class_name varchar(20) not null,

4. 默认值 default              eg:  age tinyint unsigned default 0,

4.3 列描述 comment,用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进解; 

                    desc查看不到注释信息,通过show可以看到(eg: show create table tt2\G)。

4.4 zerofill: 如果宽度小于设定的宽度,自动填充0。 eg: a int(5) unsigned zerofill;

4.5  主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型。

       eg: id int unsigned primary key comment '学号不能为空',         6primary key(id, course)  复合键

追加主键:  alter table 表名 add primary key(字段列表) 

主键约束:主键对应的字段中不能重复,一旦重复,操作失败。

删除主键:  alter table 表名 drop primary key;

4.6 自增长auto_increment:当对应的字段不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作得到新的值。通常和主键搭配使用,作为逻辑主键。

特点: (1)任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)
         (2)自增长字段必须是整数
         (3)一张表最多只能有一个自增长                              eg:   id int unsigned primary key auto_increment,

在插入后获取上次插入的 AUTO_INCREMENT 的值(批量插入获取的是第一个值)eg:select last_insert_id(); --1

4.7 唯一键unique:  唯一键允许为空,而且可以多个为空

4.8  外键foreign key:用于定义主表和从表之间的关系,外键约束主要定义在从表上,主表必须是有主键约束或unique约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null

语法:foreign key (字段名) references 主表(列)

猜你喜欢

转载自blog.csdn.net/qq_43109561/article/details/88999273