07 列属性:字段属性:null、default、comment、primary key、unique key

NULL 属性

NULL 属性:表示字段为空

如果对应的值为YES,表示该字段可以为空,默认创建表的时候,如果不设置,默认是YES,即可以为空
如果对应的值为NO,表示该字段不可以为空

image

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);

image

image

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 为主键,
);

image

表后新增

语法:

ALTER table 表名 add PRIMARY KEY(字段名);

查看主键

方式一:通过查看表结构语句,来查看主键

desc member;

方式二:通过查看表的创建语句,来查看主键

show create table member;

image

删除主键

主键虽然删除了,但是该字段 依然是不可为空

语法:

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 为复合主键,来决定学生成绩的唯一性
);

image

主键约束

主键一旦添加后,那么对应字段的要求如下:

  • 当前字段对应的值不能为空
  • 当前字段对应的值不能重复

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');


image

修改自增长

查看自整长:查看表结构

show creare table increment

修改自增长:

alter table increment auto_increment=值;

image

删除和新增 自增长

删除自增长:就是在字段属性后 不在保留 auto_increment这个属性即可

-- 相当于将id 重新修改一下:注意:此处不可重新再增加 primary key 了
alter table increment modify id int;

-- 增加自增长,重新设置 自增长属性即可
alter table increment modify id int auto_increment;

初始设置

在系统中,有一组变量用来维护自增长的初始值和步长

-- 查看自增长初始变量
show variables like 'auto_increment%';

image

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 为 唯一键,
);

image

表后新增

语法:

ALTER table 表名 add UNIQUE(字段名1,字段名2);

查看唯一键

方式一:通过查看表结构语句,来查看主键

desc uk1;

方式二:通过查看表的创建语句,来查看主键

show create table uk1;

image

删除唯一键

语法:

alter table member drop index 字段名;

复合唯一键

和复合主键一样,都可以使用多个保证来保证数值的唯一性

posted @ 2024-07-08 15:47  songxia777  阅读(4)  评论(0编辑  收藏  举报