码迷,mamicode.com
首页 > 其他好文 > 详细

数据的完整性

时间:2019-12-22 16:26:26      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:alter   har   年龄   auto   student   scribe   添加   数据完整性   unique   

精确性+可靠性=完整性

 

一丶数据完整性的分类

1.实体完整性

  实体完整性的实现办法

    主键约束  

       1.值不能为空

       2.值必须是唯一

          3.不能有业务含义   

       4.值不能发生变动

    唯一约束

主键约束与唯一约束的区别

1.主键约束值必须唯一,并且不能为null(空值)

  主键约束值必须唯一,但是允许有null(空值)

2.一个表只能有一个主键约束

 一个表可以有多个唯一约束

2.域完整性

1.数据类型 2.非空约束 3.默认约束 4.检查约束(mysql 不支持检查约束)

创建约束

create table t_student(
  s_pk_id int auto_increment, /*这一列是自动增长的列,会永远自动向前递增,自动增长的列在一张表中就只能有一个*/ 
  s_name varchar(20) not null, /*非空约束*/
  s_tel varchar(11) unique, /*唯一约束*/
  s_sex char(2) default ‘M‘, /*默认约束*/
  s_age int check(age >= 18 and age <=40), /*检查约束 mysql没有作用*/
  primary key(s_pk_id) /*主键约束的第二种写法*/
);

自增默认从1开始,如果想手动设置从哪里开始,使用下面的语句
 alter table t_food_bak auto_increment=1000;

3.引用完整性

4.自定义完整性

 

二丶DML语言

 通过CMD登录 mysql 命令
 mysql -u账户名 -p密码

 查看所有数据库
 show databases;

 常用的DDL语法
 创建数据库
 create database j175;

 切换数据库
use j175;

查看数据库下面所有表
 show tables;

 查看某张表的具体结构
 describe t_food;

 删除数据库
 drop database j175;

 删除表
 drop table t_food;

复制表

create table t_food_bak select * from t_food;

 添加列
alter table t_food_bak add f_exp varchar(10);

 删除列
 alter table t_food_bak drop column f_exp;

 修改列的数据类型
 alter table t_food_bak modify f_exp int;

 修改列
 alter table t_food_bak change f_exp f_exp_new varchar(20);

-- 创建索引
-- create index t_food_bak_name_index on t_food_bak(f_name);

-- 删除索引
-- alter table t_food_bak drop index t_food_bak_name_index;

 

insert into 表名([列名,列名,列名....]) values ([值,值,值....])
insert into t_student(s_pk_id,s_name,s_tel) values(1,‘张三‘,‘13111111111‘);

-- 自增列,可以不用插入
insert into t_student(s_name,s_tel) values(‘张三‘,‘13111111111‘);

-- 注意一个问题,列名和值必须一一对应,如果字段名写出来,那么value就必须对应
-- insert into t_student(s_pk_id,s_name,s_tel,s_sex) values(2,‘王五‘,‘13111111111‘,‘F‘);

-- insert into t_student(s_pk_id,s_name,s_tel,s_sex) values(null,‘王五‘,‘13111111111‘,default);

-- 可以默认不写列名,意思是后面的值就要和列名顺序对应,不推荐这种写法
insert into t_student values(null,‘赵六‘,‘13111111115‘,default,19);

-- 一次加入多行数据
insert into t_student(s_name,s_tel,s_age)values("张飞","13811111111",30),("赵云","13811111112",28),("关羽","13811111113",32);

 

update 表名 set 列名=新的值,列名=新的值...[where 条件]

-- 把t_student的s_class_id全部改为1
-- update t_student set s_class_id=1

-- 把学生id=2的班级外键改为3
-- update t_student set s_class_id=3 where s_pk_id=2;

update语句更新多个值

--update t_student set s_tel="13711111111",s_age=18 where s_pk_id=1;

 

where条件

在...之间
-- 使用 >= and <=
-- update t_student set s_age = s_age + 1 where s_age >= 18 and s_age <= 30;
-- btween and
-- update t_student set s_age = s_age + 1 where s_age between 18 and 30;

-- 在...范围内
-- >= and <= > and <

-- or or or
-- update t_student set s_age = s_age - 2 where s_class_id=1 or s_class_id=3 or s_class_id=4;

-- in
-- update t_student set s_age = s_age - 2 where s_class_id in(1,3,4);

-- not 取反
-- update t_student set s_age = s_age - 2 where s_class_id not in(1,3,4);

-- 判断为null 注意: 不是用的=null在mysql中null和任意的值比较都是false 而是使用 is null,
-- update t_student set s_age = 50 where s_age is null and s_class_id=1;

-- 取反
-- update t_student set s_age = 50 where s_age is not null and s_class_id=1;

 

-- 删除 delete from 表名 [where 条件]

-- 删除所有数据
-- delete from t_student;

-- 按照条件删除
-- 删除年龄为null的数据
delete from t_student where s_age is null;

-- delete删除语句,就算删除全部的数据,之前自增的id,还是会继续往下自增

 

模糊匹配(查)

模糊匹配 关键字 like
-- 替代符 _ 替代一个字符
-- 替代符 % 替代0个或多个字符

比较下面四个替代符的区别,到底模糊匹配的是什么

update t_student set s_age=20 where s_name like ‘张%‘;(  性张的人 )

update t_student set s_age=s_age+2 where s_name like ‘张_‘;(性张只有两个字的人)

update t_student set s_age=s_age+5 where s_name like ‘%张%‘;(名字里面带有张字的人)
update t_student set s_age=s_age-5 where s_name like ‘%五‘;(以张结尾的人)

数据的完整性

标签:alter   har   年龄   auto   student   scribe   添加   数据完整性   unique   

原文地址:https://www.cnblogs.com/zzc622446/p/12079867.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!