2018年3月14日学习总结

时间:2021-07-07 11:49:14

数据约束

1.默认值

CREATE TABLE student(

    sid INT,

    sname VARCHAR(20),

    ssex VARCHAR(5),

    address VARCHAR(100) DEFAULT '山东淄博'

)

INSERT INTO student(sid,sname,ssex)

VALUES(1,'张三','');

INSERT INTO student VALUES(2,'李四','','山东济南');

SELECT * FROM student;

DROP  TABLE student;

 

设置山东淄博为默认值,没有添加值的时候默认显示山东淄博,但是如果下面字段添加了值则显示当前添加的值,允许添加值为null。

2.非空

CREATE TABLE student(

 

    sid INT NOT NULL,

    sname VARCHAR(20) NOT NULL,

    ssex VARCHAR(5) NOT NULL,

    address VARCHAR(100)

 

)

 

3.唯一约束

CREATE TABLE student(

 

    sid INT UNIQUE,

    sname VARCHAR(20),

    ssex VARCHAR(5),

    address VARCHAR(20)

)

 

唯一字段可以插入null,唯一约束对null不起作用

如果在设置了唯一的字段名中插入的字段相同,出现错误

 

4.主键(非空+唯一)

不能为空,只能有一个,相当于身份证

CREATE TABLE student(

 

    sid INT PRIMARY KEY,

    sname VARCHAR(20),

    ssex VARCHAR(5),

    address VARCHAR(20)

 

)

如果重复或者为null ,会出现错误

5.自增长

是在主键基础上实现自增长

CREATE TABLE student(

 

    sid INT PRIMARY KEY AUTO_INCREMENT,

    sname VARCHAR(20),

    ssex VARCHAR(5),

    address VARCHAR(20)

 

)

INSERT INTO student(sname,ssex,address) VALUES('张三','','山东淄博');

sid自动增长,从0开始

 

CREATE TABLE student(

 

    sid INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT,

    sname VARCHAR(20),

    ssex VARCHAR(5),

    address VARCHAR(20)

 

)

 

零填充,当数字不满4位时,其他位数用零进行填充

Delete from student清空表的时候只删除数据,删除不了约束,当再添数据时,会出现下面的情况

 

TRUNCATE TABLE student;清空表的时候可以删除数据和表约束,当再次添加数据时,重新自增长

6.外键

CREATE TABLE emp(

    eid INT PRIMARY KEY AUTO_INCREMENT,

    ename VARCHAR(20) NOT NULL,

     deptid INT

     CONSTRAINT fk_deptid FOREIGN KEY(deptid)

定义一个外键名

     REFERENCES dept(did)

 )

没有设置外键的是主表,设置外键的是副表,先插入主表的数据

注意:

                     1)被约束的表称为副表,约束别人的表称为主表,外键设置在副表上的!!!

                     2)主表的参考字段通用为主键

                     3)添加数据: 先添加主表,再添加副表

                     4)修改数据: 先修改副表,再修改主表

                     5)删除数据: 先删除副表,再删除主表

 

7.级联操作

CREATE TABLE emp(

    eid INT PRIMARY KEY AUTO_INCREMENT,

    ename VARCHAR(20) NOT NULL,

     deptid INT

     CONSTRAINT fk_deptid FOREIGN KEY(deptid) ON UPDATE CASCADE或者ON DELETE CASCADE

定义一个外键名

     REFERENCES dept(did)

 )

级联修改: ON UPDATE CASCADE

级联删除: ON DELETE CASCADE

将上面语句添加后可以修改或删除数据

连接查询

  1. 1.     交叉连接

SELECT * FROM tb1 CROSS JOIN tb2;不建议用

  1. 2.     内连接

SELECT * FROM tb1 INNER JOIN tb2 ON tb1.f1=tb2.c1;用得较多

筛选条件

  1. 3.     左外连接

连接条件和内连接一样,内连接的结果基础上,加上左边表中所有不符合连接条件的数据,相应本应放右边表的字段的位置就自动补为“null”值。

SELECT * FROM product LEFT JOIN product_type ON product.protype_id=product_type.protype_id;

 

  1. 4.     右外连接
SELECT * FROM product right product_type ON product.protype_id=product_type.protype_id;