约束、非空、唯一、主键、自增长、外键、多表查询、联合查询

注意:

创建数据库全部用小写 超11位不能用int

数据约束
默认值约束:允许插入null和非null

CREATE TABLE student(

id INT,

NAME VARCHAR(20),

address VARCHAR(20) DEFAULT '山东淄博'  -- 默认值

)

DROP TABLE student;

-- 当字段没有插入值的时候,mysql自动给该字段分配默认值

INSERT INTO student(id,NAME) VALUES(1,'张三');

-- 注意:默认值约束可以是多个,必须是建表时加

INSERT INTO student(id,NAME,address) VALUE(2,'李四',NULL);
非空:必须赋值 必须不能赋值为null

gender字段必须有值(不为null)

CREATE TABLE student(

id INT,

NAME VARCHAR(20),

gender VARCHAR(2) NOT NULL -- 非空

)

非空字段必须赋值

INSERT INTO student(id,NAME) VALUES(1,'李四');

-- 非空字符不能插入null

INSERT INTO student(id,NAME,gender) VALUES(1,'李四',NULL);


唯一:unique 可插入多个null

CREATE TABLE student(

id INT UNIQUE, -- 唯一

NAME VARCHAR(20)

)


主键:primary key 非空+唯一

CREATE TABLE student(

id INT PRIMARY KEY, -- 主键

NAME VARCHAR(20)

)

INSERT INTO student(id,NAME) VALUES(1,'张三');

INSERT INTO student(id,NAME) VALUES(2,'张三');

-- INSERT INTO student(id,NAME) VALUES(1,'李四'); -- 违反唯一约束: Duplicate entry '1' for key 'PRIMARY'

-- insert into student(name) value('李四'); -- 违反非空约束: ERROR 1048 (23000): Column 'id' cannot be null
自增长:primary key auto_increment

CREATE TABLE student(

id INT(4) ZEROFILL primary key auto_increment, -- 自增长,从0开始  ZEROFILL 零填充

NAME VARCHAR(20)

)

delete 不影响自增长  truncate 影响自增长

外键:
主表:约束  副:被约束
顺序:添加是先主后副  修改和删除 是先副后主

员工表

CREATE TABLE employee(

id INT PRIMARY KEY,

empName VARCHAR(20),

deptName VARCHAR(20) -- 部门名称

)

INSERT INTO employee VALUES(1,'张三','软件开发部');

INSERT INTO employee VALUES(2,'李四','软件开发部');

INSERT INTO employee VALUES(3,'王五','应用维护部');


多表查询:至少两个连接起来 join

from 表1  [连接方式]  join 表2  [on 连接条件]
交叉:没有on条件

from  表1  [cross]  join  表2  ;      //可见交叉连接只是没有on条件而已。


内:数据连接 from 表 join 表2 on 表1.字段1=表2.字段2
左右外连接:from 表1 left(right) join 表2 on where
子查询:吧一个查询的结果当做另一个查询的条件
联合查询:union 两个相同字段的语句结果放到一起的大结果
select 1
union
select 2

原文地址:https://www.cnblogs.com/zs0322/p/10812199.html