07 列属性:字段属性:null、default、comment、primary key、unique key
NULL 属性
NULL 属性:表示字段为空
如果对应的值为YES,表示该字段可以为空,默认创建表的时候,如果不设置,默认是YES,即可以为空
如果对应的值为NO,表示该字段不可以为空
default 默认值
default默认值,当字段被设计的时候(创建表字段的时候),如果设置了默认值,那么当用户插入数据的是时候,就可以不插入字段的值,会显示默认值
如果没有设置默认值,那么默认是null
CREATE table stu(
`name` VARCHAR(10) NOT NULL, -- 设置 用户名不可以为空
age int default 18 -- 设置默认值 年龄默认18
);
desc stu;
-- 插入数据: default默认会触发默认值
INSERT into stu VALUES('张三2',default);
COMMENT 列描述
定义列描述
-- 创建表
CREATE TABLE 表名 (
nickname VARCHAR (20) COMMENT '昵称',
gender VARCHAR (4) COMMENT '昵称',
mobile VARCHAR (20) COMMENT '手机号',
age TINYINT(2) COMMENT '年龄',
birth date COMMENT '生日',
);
查看列 描述:就是查看表创建语句
show create table member;
primary key 主键
主键:primary key,在一张表中,有且只能创建一个字段为主键,主键的值具有唯一性
创建主键
随表创建
主键创建完后,默认主键不可为空
在创建表的时候,就可以将字段指定为主键,主要分为2种方式:
1、 直接在需要当做主键的字段后面,添加 primary key 属性即可
2、 在所有字段的后面,增加 primary key(指定字段),来指定哪些字段可以作为主键
-- 方式一:
CREATE table pk1(
id int PRIMARY key, -- 指定id 为主键,主键一般不为空,具有唯一性
`name` VARCHAR(10) NOT NULL, -- 用户名不可以为空
age int default 18 -- 年龄默认18
);
-- 方式二
CREATE table pk2(
id int, -- 主键一般不为空,具有唯一性
`name` VARCHAR(10) NOT NULL, -- 用户名不可以为空
age int default 18, -- 年龄默认18
primary key(id) -- 指定id 为主键,
);
表后新增
语法:
ALTER table 表名 add PRIMARY KEY(字段名);
查看主键
方式一:通过查看表结构语句,来查看主键
desc member;
方式二:通过查看表的创建语句,来查看主键
show create table member;
删除主键
主键虽然删除了,但是该字段 依然是不可为空
语法:
alter table member drop primary key;
复合主键
学生成绩表:一个学生可以选修多门课程,一个课程可以由多个学生选择,但是一个学生在一门课的成绩只能有一个成绩
此时需要创建复合主键stu_no和course_no
-- 学生成绩表
CREATE table stu_score(
stu_no char(10) COMMENT '学号', -- 唯一
course_no char(10) COMMENT '课程编号', -- 唯一
score TINYINT not null COMMENT '成绩',
PRIMARY KEY(stu_no,course_no) -- 指定 stu_no,course_no 为复合主键,来决定学生成绩的唯一性
);
主键约束
主键一旦添加后,那么对应字段的要求如下:
- 当前字段对应的值不能为空
- 当前字段对应的值不能重复
auto increment 自动增长
当给某个字段设置了 auto increment属性后,该列的数据在没有提供确定数据的时候,会根据之前已经存在的数值基础上自动增长,填充数据
自动增长只适用于数值
基本语法:在指定字段后,新增 auto_increment 属性即可
-- 自动增长 auto increment
CREATE TABLE increment(
id int PRIMARY KEY auto_increment COMMENT '主键自增长id',
`name` varchar(10) COMMENT '用户名',
age int DEFAULT 18 COMMENT '年龄'
);
desc increment;
-- 插入数据:想要触发自增长,一定不能给定具体的值
INSERT INTO increment VALUES(null,'张三3',default);
-- 或者下面的语法插入:id没有设置,默认是自整长 age有默认值
INSERT INTO increment(name) VALUES('张三3');
修改自增长
查看自整长:查看表结构
show creare table increment
修改自增长:
alter table increment auto_increment=值;
删除和新增 自增长
删除自增长:就是在字段属性后 不在保留 auto_increment这个属性即可
-- 相当于将id 重新修改一下:注意:此处不可重新再增加 primary key 了
alter table increment modify id int;
-- 增加自增长,重新设置 自增长属性即可
alter table increment modify id int auto_increment;
初始设置
在系统中,有一组变量用来维护自增长的初始值和步长
-- 查看自增长初始变量
show variables like 'auto_increment%';
unique key 唯一键
唯一键:用来保证对应字段的数值的唯一性,NULL除外 **
主键虽然也可以保证对应字段的数值唯一性,但是一张表只能有一个主键**
唯一键的特点:
- 一张表中可以有多个唯一键
- 唯一键允许字段为NULL,而且NULL可以有多个(主要是NULL不参与比较)
创建唯一键
随表创建
在创建表的时候,就可以将字段指定为主键,主要分为2种方式:
1、 直接在需要当做主键的字段后面,添加 unique key 属性即可 , key可以省略
2、 在所有字段的后面,增加 unique key(指定字段),来指定哪些字段可以作为唯一键
-- 方式一:
CREATE table uk1(
id int unique key, -- 指定id 为唯一键,具有唯一性 key可以省略
`name` VARCHAR(10) NOT NULL, -- 用户名不可以为空
age int default 18 -- 年龄默认18
);
-- 方式二
CREATE table uk2(
id int,
`name` VARCHAR(10) NOT NULL, -- 用户名不可以为空
age int default 18, -- 年龄默认18
unique key(id) -- 指定id 为 唯一键,
);
表后新增
语法:
ALTER table 表名 add UNIQUE(字段名1,字段名2);
查看唯一键
方式一:通过查看表结构语句,来查看主键
desc uk1;
方式二:通过查看表的创建语句,来查看主键
show create table uk1;
删除唯一键
语法:
alter table member drop index 字段名;
复合唯一键
和复合主键一样,都可以使用多个保证来保证数值的唯一性