@数据库的基本操作:约束
MySQL数据库基础操作(约束)
约束:
1.主键约束(单字段主键,多字段主键)
2.外键约束
3.非空约束
4.唯一约束
5.默认约束
6.设置表的自动增长
主键约束:(PRIMARY KEY)
单字段主键:不能重复出现
特点:唯一,非空
-- 创建表必须创建数据库进行连接
-- 创建单字段主键约束(可以有2种方式)
#第一种将id这个字段定义成该表主键,直接在字段后面添加primary key关键字
CREATE TABLE emp
(
id INT PRIMARY KEY,
name VARCHAR(20),
dept_id INT,
salary FLOAT
);
效果图:
--查看表结构
DESC emp;
效果图:
-- 插入数据,验证主键
#第二种或者是在字段列表后面添加primary key(字段名)
CREATE TABLE emp_1
(
id INT,
name VARCHAR(20),
dept_id INT,
salary FLOAT,
PRIMARY KEY(id)
);
--查看表结构
DESC emp_1;
效果图:
多字段联合主键约束
: 不能完全一样,多个字段一样不可以
--多字段联合主键约束
CREATE TABLE emp_2
(
id INT ,
name VARCHAR(20),
dept_id INT,
salary FLOAT,
PRIMARY KEY(id,name)
);
-- 查看表结构
DESC emp_2
效果图:
-- 外键约束
#在附表创建的语句中添加外键约束
语法格式:
create table 表名
(
字段1 类型,
字段2 类型,
………….,
constraint 外键约束名 foreign key(外键字段名)
references 关联主表(关联主表字段)
);
例子
CREATE TABLE dept
(
id INT PRIMARY KEY,
name VARCHAR(20),
location VARCHAR(50)
)ENGINE=InnoDB;
CREATE TABLE emp_3
(
id INT PRIMARY KEY,
name VARCHAR(20),
dept_id INT,
salary FLOAT,
CONSTRAINT fk_emp_dept FOREIGN KEY(dept_id) REFERENCES dept(id)
)ENGINE=InnoDB;
-- 插入数据,验证主键
INSERT INTO emp_3 VALUES(1,'小明',4,5000);
INSERT INTO dept VALUES(4,'eee','广');
INSERT INTO emp_3 VALUES(1,'小明',4,5000);
--查看dept表
DESC dept;
效果图:
--查看emp_3表
DESC emp_3;
效果图:
-- 非空约束
# 当创建表时指定表的字段不能为空,可以使用非空约束,如果添加数据没有指定值,系统会报错
CREATE TABLE emp
(
id INT PRIMARY KEY NOT NULL,
name VARCHAR(20) NOT NULL,
dept_id INT,
salary FLOAT
);
-- 插入一条数据
INSERT INTO emp VALUES(1,'',4,5000);
INSERT INTO emp VALUES(1,NULL,4,5000);
效果图:
--唯一性约束
#当创建表时指定表的字段不能为空,可以使用非空约束,如果添加数据没有指定值,系统会报错
CREATE TABLE emp(
id INT PRIMARY KEY,
name VARCHAR(20)UNIQUE,
dept_id INT,
salary FLOAT
);
-- 插入一条姓名null的语句
INSERT INTO emp_5 VALUES(1,'你好',4,5000);
INSERT INTO emp_5 VALUES(2,NULL,4,5000);
INSERT INTO emp_5 VALUES(3,'',4,5000)
效果图:
--默认约束
#在创建表时指定某一列默认值,如性别默认设置成“男”,在插入一条新记录时,可以不为该字段赋值,系统会字段赋值。
CREATE TABLE emp_6
(
id INT PRIMARY KEY,
name VARCHAR(20),
dept_id INT,
salary FLOAT DEFAULT 2500
);
INSERT INTO emp_6 VALUES(1,'项目',4,null);
INSERT INTO emp_6(id, name,dept_id)VALUES(2,'得到',4);
-- 查看表
SELECT * FROM emp_6;
效果图:
-- 属性值自动增长约束
#每次插入新记录,希望由系统生成自动增长主键值,可以添加AUTO_INCREMENT关键字来实现,添加该关键字的列必须是数字主键列
CREATE TABLE emp_7
(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20),
dept_id INT,
salary FLOAT
);
INSERT INTO emp_7(name,dept_id)VALUES('得到',4);
效果图:
查看数据表结构
查看字段。字段类型,主键,默认值
DESC/DESCRIBLE<表名>;
显示创建表的详细语句
show create table <表名>;