标签: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.自定义完整性
通过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