注意:
创建数据库全部用小写 超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