澳门威利斯人_威利斯人娱乐「手机版」

来自 办公软件 2019-05-18 19:34 的文章
当前位置: 澳门威利斯人 > 办公软件 > 正文

MYSQL基础操作之数据约束与关联查询

 个人博客地址:https://www.vastyun.com

MYSQL基础操作之数据约束与涉及查询,mysql基础约束关联

 一、MYSQL约束

壹.暗中认可值约束,当字段未有插入值的时候,mysql自动给该字段分配私下认可值。
私下认可值的字段允许为空。
对默许值字段也得以插入null。

1 CREATE TABLE STUDENT(
2     ID INT,
3     NAME VARCHAR(20),
4     ADDRESS VARCHAR(20) DEFAULT '京口区'
5 );
6 INSERT INTO STUDENT (ID, NAME ) VALUES (1,'张三');
7 INSERT INTO STUDENT (ID , NAME,ADDRESS ) VALUES (2,'李四' ,NULL);

 

图片 1

二.非空封锁

1 CREATE TABLE STUDENT(
2     ID INT,
3     NAME VARCHAR(20),
4     GENDER VARCHAR(2) NOT NULL
5 );

 

2.1非空字段必须赋值(错误呈现)

INSERT INTO STUDENT (ID , NAME) VALUES(1, '李四');

 

图片 2

二.二不能够插入null(错误显示)

INSERT INTO STUDENT (ID , NAME) VALUES (1, '张三' ,NULL);

 

图片 3

 

三.唯1约束

1 CREATE TABLE STUDENT (
2     ID INT UNIQUE,
3     NAME VARCHAR(20)
4 );
5 INSERT INTO STUDENT (ID , NAME) VALUES (1, '张三');

 

上边语句试行爆发错误

INSERT INTO STUDENT (ID , NAME) VALUES (1, '李四');

 

错误提醒

图片 4

四.主键约束(非空 唯1),平时每张表都会设置贰个主键字段。用于标注表记录的唯1性。
 主键一般都是绝非事情含义的。

1 CREATE TABLE STUDENT(
2     ID INT PRIMARY KEY,
3     NAME VARCHAR(20)
4 );
5 
6 INSERT INTO STUDENT (ID , NAME) VALUES (1, '张三');

上边语句实行展现错误

INSERT INTO STUDENT (ID , NAME ) VALUES (NULL , '李四');

张冠李戴提示

图片 5

上边错误也是一种错误

INSERT INTO STUDENT (ID ,NAME ) VALUES (1, '李四');

图片 6

五.自拉长约束
能够自行的一日千里

 CREATE TABLE STUDENT(
    ID INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(20)
);
INSERT INTO STUDENT (NAME) VALUES ('张三');
INSERT INTO STUDENT (NAME) VALUES ('李四');

图片 7

整表数据删除,不影响自增的去除语句

DELETE FROM STUDENT;

删除表之后再也(不用再次创下造表),增添插入语句如图所示

图片 8

去除表中全体数据,删除了那几个之外键也是用那么些讲话。

DELETE FROM STUDENT;

重复插入数据

图片 9

陆.外键约束

被封锁的表为副表,外键设置在副表上

eg:成立员工表(副表),成立单位表(主表),先成立主表,再成立副表

CREATE TABLE DEPT(
    ID INT PRIMARY KEY,
    DEPTID VARCHAR(20)
);

INSERT INTO DEPT (ID , DEPTNAME) VALUES (1, '软件设计部门');
INSERT INTO DEPT (ID , DEPTNAME) VALUES (2, '人事部');
INSERT INTO DEPT (ID , DEPTNAME) VALUES (3, '财务部');
INSERT INTO DEPT (ID , DEPTNAME) VALUES (4, '运营部');

CREATE TABLE EMPLOYEE(
    ID INT PRIMARY KEY AUTO_INCREMENT,
    EMPNAME VARCHAR(20),
    DEPTID INT,
    CONSTRAINT EMPLOYEE_DEPT_FK FOREIGN KEY (DEPTID) REFERENCES DEPT(ID)
);

INSERT INTO EMPLOYEE (EMPNAME , DEPTID) VALUES ('张三' , 1);
INSERT INTO EMPLOYEE (EMPNAME , DEPTID) VALUES ('李四' , 2);
INSERT INTO EMPLOYEE (EMPNAME , DEPTID) VALUES ('王五' , 3);
INSERT INTO EMPLOYEE (EMPNAME , DEPTID) VALUES ('赵六' , 4);

询问两张表

图片 10

图片 11

7.底下举办级联关联,意味着,当主表修改时,副表也修改

修改以上表的开创语句,玉石俱焚复插入新的言语

 1 DROP TABLE EMPLOYEE;
 2 
 3 CREATE TABLE EMPLOYEE(
 4     ID INT PRIMARY KEY AUTO_INCREMENT,
 5     EMPNAME VARCHAR(20),
 6     DEPTID INT,
 7     CONSTRAINT EMPLOYEE_DEPT_FK FOREIGN KEY (DEPTID) REFERENCES DEPT(ID) ON UPDATE CASCADE ON DELETE CASCADE
 8 );
 9 
10 INSERT INTO EMPLOYEE (EMPNAME , DEPTID) VALUES ('张三' , 1);
11 INSERT INTO EMPLOYEE (EMPNAME , DEPTID) VALUES ('李四' , 2);
12 INSERT INTO EMPLOYEE (EMPNAME , DEPTID) VALUES ('王五' , 3);
13 INSERT INTO EMPLOYEE (EMPNAME , DEPTID) VALUES ('赵六' , 4);

询问如图所示

图片 12

修改主表的一条记下

UPDATE DEPT SET ID=5 WHERE ID=4;

主表的运转结果

图片 13

副表的周转结果

图片 14


二、关联合检查询

1.交叉查询

SELECT * FROM EMPLOYEE,DEPT;

图片 15

2.内再三再四查询

多表查询规则:一)查询哪些表    2)明确什么字段    三)表与表之间的查询条件(连接表的数额-1)

1 SELECT EMPNAME , dept.DEPTNAME
2         FROM EMPLOYEE
3         INNER JOIN DEPT
4         ON EMPLOYEE.DEPTID = DEPT.ID;

图片 16

三.选择小名

1 SELECT EMPNAME AS '员工姓名', D.DEPTNAME AS '部门' -- 注意这里的D
2                 FROM EMPLOYEE AS E
3                 INNER JOIN DEPT AS D
4                 ON E.DEPTID = D.ID;

图片 17

肆.左外接连查询,左边的数目肯定会完全显示。查询时先写左表

率先大家改变一下副表

UPDATE EMPLOYEE SET DEPTID = NULL WHERE  ID= 4;

 

 

 图片 18

借使是内三番五次查询则呈现

图片 19

若是左连接查询

1  SELECT    D.DEPTNAME, E.EMPNAME
2                  FROM DEPT AS D -- 左表
3                  LEFT OUTER JOIN EMPLOYEE AS E -- 右表
4                  ON D.ID = E.DEPTID;

 

图片 20

右连接其实和左连接同样,只是查询表的地点不相同,上边是右连接,展现的和左连接的等同

1  SELECT D.DEPTNAME,E.EMPNAME
2                 FROM EMPLOYEE AS E-- 左表
3                 RIGHT JOIN DEPT AS D -- 右表
4                 ON E.ID = D.ID;

 

图片 21

伍.自连接查询,自连接查询一般选择于表数据为树状结构。

先是大家成立表并查询

 1 CREATE TABLE PERSON(
 2     ID INT PRIMARY KEY AUTO_INCREMENT,
 3     NAME VARCHAR(20),
 4     BOSSID INT
 5 );
 6 
 7 INSERT INTO PERSON (NAME,BOSSID) VALUES ('张三',NULL);
 8 INSERT INTO PERSON (NAME,BOSSID) VALUES ('李四',1);
 9 INSERT INTO PERSON (NAME,BOSSID) VALUES ('王五',2);
10 INSERT INTO PERSON (NAME,BOSSID) VALUES ('赵六',3);
11 INSERT INTO PERSON (NAME,BOSSID) VALUES ('李七',3);
12 
13 SELECT P.NAME AS '老板' ,B.NAME AS '员工'
14     FROM PERSON AS P
15     RIGHT JOIN PERSON AS B
16     ON P.ID = B.BOSSID;

 

来得结果

图片 22

只顾上边创设表的BOSSID的布局。

壹、MYSQL约束 一.默许值约束,当字段未有插入值的时候,mysql自动给该字段分配暗许...

一、MYSQL约束

一.私下认可值约束,当字段未有插入值的时候,mysql自动给该字段分配默许值。
暗中认可值的字段允许为空。
对默许值字段也得以插入null。

1 CREATE TABLE STUDENT(
2     ID INT,
3     NAME VARCHAR(20),
4     ADDRESS VARCHAR(20) DEFAULT '京口区'
5 );
6 INSERT INTO STUDENT (ID, NAME ) VALUES (1,'张三');
7 INSERT INTO STUDENT (ID , NAME,ADDRESS ) VALUES (2,'李四' ,NULL);

 

图片 23

二.非空羁绊

1 CREATE TABLE STUDENT(
2     ID INT,
3     NAME VARCHAR(20),
4     GENDER VARCHAR(2) NOT NULL
5 );

 

贰.壹非空字段必须赋值(错误显示)

INSERT INTO STUDENT (ID , NAME) VALUES(1, '李四');

 

图片 24

二.二不能够插入null(错误显示)

INSERT INTO STUDENT (ID , NAME) VALUES (1, '张三' ,NULL);

 

图片 25

 

三.唯1约束

1 CREATE TABLE STUDENT (
2     ID INT UNIQUE,
3     NAME VARCHAR(20)
4 );
5 INSERT INTO STUDENT (ID , NAME) VALUES (1, '张三');

 

下边语句施行发生错误

INSERT INTO STUDENT (ID , NAME) VALUES (1, '李四');

 

谬误提示

图片 26

四.主键约束(非空 唯一),平时每张表都会设置3个主键字段。用于标注表记录的唯1性。
 主键一般都以平素不职业含义的。

1 CREATE TABLE STUDENT(
2     ID INT PRIMARY KEY,
3     NAME VARCHAR(20)
4 );
5 
6 INSERT INTO STUDENT (ID , NAME) VALUES (1, '张三');

上边语句实施展现错误

INSERT INTO STUDENT (ID , NAME ) VALUES (NULL , '李四');

荒唐提示

图片 27

上边错误也是一种错误

INSERT INTO STUDENT (ID ,NAME ) VALUES (1, '李四');

图片 28

5.自增加约束
能够自行的递增

 CREATE TABLE STUDENT(
    ID INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(20)
);
INSERT INTO STUDENT (NAME) VALUES ('张三');
INSERT INTO STUDENT (NAME) VALUES ('李四');

图片 29

整表数据删除,不影响自增的删减语句

DELETE FROM STUDENT;

删除表之后再度(不用再创立表),增加插入语句如图所示

图片 30

除去表中全体数据,删除却键也是用这一个讲话。

DELETE FROM STUDENT;

再度插入数据

图片 31

陆.外键约束

被束缚的表为副表,外键设置在副表上

eg:创制职员和工人表(副表),成立单位表(主表),先创立主表,再成立副表

CREATE TABLE DEPT(
    ID INT PRIMARY KEY,
    DEPTID VARCHAR(20)
);

INSERT INTO DEPT (ID , DEPTNAME) VALUES (1, '软件设计部门');
INSERT INTO DEPT (ID , DEPTNAME) VALUES (2, '人事部');
INSERT INTO DEPT (ID , DEPTNAME) VALUES (3, '财务部');
INSERT INTO DEPT (ID , DEPTNAME) VALUES (4, '运营部');

CREATE TABLE EMPLOYEE(
    ID INT PRIMARY KEY AUTO_INCREMENT,
    EMPNAME VARCHAR(20),
    DEPTID INT,
    CONSTRAINT EMPLOYEE_DEPT_FK FOREIGN KEY (DEPTID) REFERENCES DEPT(ID)
);

INSERT INTO EMPLOYEE (EMPNAME , DEPTID) VALUES ('张三' , 1);
INSERT INTO EMPLOYEE (EMPNAME , DEPTID) VALUES ('李四' , 2);
INSERT INTO EMPLOYEE (EMPNAME , DEPTID) VALUES ('王五' , 3);
INSERT INTO EMPLOYEE (EMPNAME , DEPTID) VALUES ('赵六' , 4);

本文由澳门威利斯人发布于办公软件,转载请注明出处:MYSQL基础操作之数据约束与关联查询

关键词: 澳门威利斯人