数据完整性 = 精确性 + 可靠性;
实体完整性
主键约束
-
非空
-
值唯一
-
不可有业务含义
-
值不可变动
唯一约束
一行的数据不为空
实现域完整性
-
数据类型 2. 非空约束
-
默认约束 4.检查约束(mysql不可用)
创建约束
-- 引用完整性 create table 表名( pk_id int primary key auto_increment, -- 主键约束1,与值自动增长 列名 类型 not null, -- 不为空 列名 类型 unique, -- 唯一约束 列名 类型 default 默认值, --默认约束 列名 类型 check(列名>12 andage 列名<40), -- 检查约束 primary key(pk_id), -- 主键约束2 pk_id int auto_increment = 1000 -- 自动增长,默认初始值 );
DML语言
增
insert into 表名(列名,列名,列名...) values (值,值,值...),(值,值,值...); --列名可以省略代表全部的属性 --自增列可以不用插入 --values后边的数据值要与前边给出的列表对应 数量、列数据与给定的值 --zi段名一旦写出,后边必须给值但是 null可以代替自增量的值 , default可以代替默认数据的值 --varchar可以存放int,int中不可以存放varchar
改
update 表名 set 列名 = 值,列名 = 值 where 判断条件; --and 且 , or 或
关联关系
-
1:1
-
1:n or n:1 一般在n表处建立外键
-
n:n 多加一张中间表,中间表与另外两张表是多对一的关系
关系约束语句
--创建主键外键关系 alter table 表名 add constraint 外键名 foreign key(外键列名) references 主键表名(主键列名);--这一行语句可以再创建表时书写 --constraint 约束 --foreign 外键 --references 关联1 --外键一般 not null
删
delete from 表名 where 条件; --删除语句是一行一行的删除 delete from 表名; --删除表中的所有数据 --如果该表作为其他表的外键,可能会出现错误 --对于自增量,删除元素后不会从零开始计数
删除一个值属于改操作而非删除!!
truncate语句
--自增量会从0开始不会保留删除日志
--如果该表作为其他表的外键,可能会出现错误
select 列名,列名,列名... form 表名 -- 简单查询 -- 可以用*替代列名,标识显示所有
模糊查询
where Like '模糊语句'; --模糊语句替代符主要有 _ % --_替代一个字符,必须有一个 --%替代0个或者多个字符
其他
1.
alter table 表名 auto_increment = 1000; -- 改变默认的自增量初始值
2.
判断是否为null 用 is null 而不是 =null null与任意值通过“=”比较都是false
判断是否非null where后 is not null.