MySQL基础02

目标
1)数据约束
2)数据库设计(表约束)
3)存储过程
4)触发器
5)mysql权限问题

1.SQL语句分类:

DDL:数据库定义语言
create/drop/alter
DML:数据库操作语言
insert/delete/update/truncate
DQL: 数据库查询语言
select/show

2.数据约束,也叫表的约束

什么是数据约束?
对用户操作表的数据进行约束。

常见约束:
1)默认值;DEFAULT
作用:当用户对使用默认值得字段不插入值得时候,就会使用默认值。

语法: DEFAULT

2)非空;NOT NULL

作用:限制字段必须赋值。

语法: NOT NULL

CREATE TABLE student(
       id INT,
       NAME VARCHAR(20),
       gender VARCHAR(2) NOT NULL -- 非空
)
INSERT INTO student(id, NAME, gender) VALUES(1, "李四", NULL)  -- 系统会自己加一个空字符串。在工具中可以使用NULL值,如果是在terminal就不会越过,会报错。

非空字段必须赋值,非空字段不能赋NULL值。
3)唯一;UNIQUE

作用:限制有值得情况下唯一性,可有有多个NULL值。

4)主键;PRIMARY KEY

作用:非空+唯一。
设计表的时候,主键一定要是非业务含义的。

5)自增长;AUTO_INCREMENT

作用:自动递增。自增长的字段可以不赋值。
例子: id INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT,
— 从1开始
注意:ZEROFILL, 零填充。(就是从0001)开始,如果没有ZEROFILL,那么就从1开始。

注意:
DELETE FROM studen; — 不影响自增长约束。
TRUNCATE TABLE student; — 可以影响自增长约束

6)外键;“

作用:约束两张表的数据。

3.关联查询

交叉连接查询,不推荐,会产生笛卡尔成绩现象。

SELECT empName,deptName FROM employee,dept;

内连接查询

需求:查询员工及所在部门(显示员工姓名,部门名称)
夺标查询规则:

1)确定查询哪些表
2)确定查询哪些字段
3)标语表之间连接条件

eg:

SELECT empName, deptName                -- 2) 确定查询哪些字段
FROM employee,dept  -- 1) 确定查询哪些表
WHERE employee.deptId=dept.id   -- 3) 表与表之间连接条件(规律:了解条件数量是连接数量-1)

-- 内连接另外一种语法
SELECT empName, deptName 
FROM employee 
INNER JOIN dept  -- 内连接的表
ON employee.deptId=dept.id;

-- 使用别名
-- 内连接另外一种语法
SELECT empName, deptName 
FROM employee AS e  -- 可以省略 AS
INNER JOIN dept AS d  -- 内连接的表
ON e.deptId=d.id;

左外连接查询:使用左边表的数据去匹配右边表的数据,如果符合连接条件的结果则显示,如果不符合,就不显示。注意:左外连接:左边的数据一定会完整显示,右边的如果没有就显示NULL。
左外连接就是左连接。

SELECT d.deptName, e.empName
FROM dept d
LEFT OUTER JOIN employee e  -- 左外连接
ON d.id=deptId;

右外连接查询
右外连接就是右连接。
使用右边表的数据去匹配左边表的连接数据,如果符合连接条件的结果。

    原文作者:廖马儿
    原文地址: https://www.jianshu.com/p/1affadfc868e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞