MySQL基础知识保姆级教程(四)基础语句
目录
简介
一、视图
1.视图的定义:
2.创建视图
3.查看视图结构:
4.删除视图:
二、约束
1.约束的含义
2.约束的分类
3.代码分析
简介
继上三篇博客我们继续来说关于MySQL的基础语句,
MySQL基础知识保姆级教程(一)初识MySQL
MySQL基础知识保姆级教程(二)基础语句
MySQL基础知识保姆级教程(三)基础语句
一、视图
1.视图的定义:
视图是由查询结果形成的一张虚拟的表。
视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);可以跟基本表一样,进行增删改查操作(ps: 增删改操作有条件限制);
2.创建视图
create view tmp as select * from student_info where age=25;
3.查看视图结构:
desc tmp;
show create table tmp;
4.删除视图:
drop view tmp;
二、约束
1.约束的含义
一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性。MySQL 数据库通过约束 (constraints) 防止无效的数据进入到表中,以保护数据的实体完整性。
2.约束的分类
在 MySQL 中,主要有六种约束:
1、NOT NULL:非空约束,用于约束该字段的值不能为空。比如姓名、学号等。
2、DEFAULT:默认值约束,用于约束该字段有默认值,约束当数据表中某个字段不输入值时,自动为其添加一个已经设置好的值。比如性别。
3、PRIMARY KEY:主键约束,用于约束该字段的值具有唯一性,至多有一个,可以没有,并且非空。比如学号、员工编号等。
4、UNIQUE:唯一约束,用于约束该字段的值具有唯一性,可以有多个,可以没有,可以为空。比如座位号。
5、CHECK:检查约束,用来检查数据表中,字段值是否有效。比如年龄、性别。
6、FOREIGN KEY:外键约束,外键约束经常和主键约束一起使用,用来确保数据的一致性,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值。在从表添加外键约束,用于引用主表中某列的值。比如学生表的专业编号,员工表的部门编号,员工表的工种编号。
3.代码分析
create table user(id varchar(10) PRIMARY KEY comment '用户编号,主键',name varchar(10) NOT NULL comment '姓名',age int default 0 check(age >=0 and age <= 150) comment '年龄',sid varchar(20) UNIQUE comment '身份证号',pid varchar(20) UNIQUE comment '银行卡号'
);create table students(id bigint PRIMARY KEY, -- 主键约束name varchar(10) UNIQUE not null, -- 非空约束,唯一约束age int default 10 CHECK(age>=1 and age <=100), -- 默认值约束,检查约束sex varchar(2) not null,clazz varchar(10) not null
);-- 插入数据
insert into students(id,name,age,sex,clazz) values(100,'张三',20,'男',"文科一班");
insert into students(id,name,age,sex,clazz) values(200,'李四',1000,'其它',"文科一班");create table scores(sid bigint,cid bigint,score double,CONSTRAINT fk_students_id FOREIGN KEY(sid) REFERENCES students(id) -- 外键约束,分数表的sid依赖学生表的id
);
-- 存数据时,必须指定学生表中已有的学号才可以
create table user
部分:- 定义了一个名为
user
的表。 id
字段:类型为varchar(10)
,是主键(PRIMARY KEY
),用于唯一标识用户,注释为 “用户编号,主键”。name
字段:类型为varchar(10)
,非空(NOT NULL
),用于存储用户姓名,注释为 “姓名”。age
字段:类型为int
,默认值为0
(default 0
),并且通过check
约束限制年龄在0
到150
之间,注释为 “年龄”。sid
字段:类型为varchar(20)
,具有唯一约束(UNIQUE
),用于存储身份证号,注释为 “身份证号”。pid
字段:类型为varchar(20)
,具有唯一约束(UNIQUE
),用于存储银行卡号,注释为 “银行卡号”。
- 定义了一个名为
create table students
部分:- 定义了一个名为
students
的表。 id
字段:类型为bigint
,是主键(PRIMARY KEY
),用于唯一标识学生,注释为 “主键约束”。name
字段:类型为varchar(10)
,非空(not null
)且具有唯一约束(UNIQUE
),用于存储学生姓名,注释为 “非空约束,唯一约束”。age
字段:类型为int
,默认值为10
(default 10
),并且通过CHECK
约束限制年龄在1
到100
之间,注释为 “默认值约束,检查约束”。sex
字段:类型为varchar(2)
,非空(not null
),用于存储学生性别。clazz
字段:类型为varchar(10)
,非空(not null
),用于存储学生班级。
- 定义了一个名为
- 插入数据部分:
- 使用
insert into
语句向students
表中插入两条数据。第一条数据中,学生id
为100
,姓名为张三
,年龄20
,性别男
,班级文科一班
;第二条数据中,学生id
为200
,姓名为李四
,年龄1000
,性别其它
,班级文科一班
。需要注意的是,第二条数据中年龄1000
违反了students
表中age
字段的CHECK
约束(age >= 1 and age <= 100
)。
- 使用
create table scores
部分:- 定义了一个名为
scores
的表。 sid
字段:类型为bigint
,用于关联学生表中的id
。cid
字段:类型为bigint
,可用于关联课程等信息(此处未详细说明)。score
字段:类型为double
,用于存储分数。- 通过
CONSTRAINT fk_students_id FOREIGN KEY(sid) REFERENCES students(id)
定义了外键约束,使得scores
表中的sid
字段依赖于students
表中的id
字段,保证了数据的一致性,注释为 “外键约束,分数表的 sid 依赖学生表的 id”。最后注释说明存数据时,必须指定学生表中已有的学号才可以,即插入scores
表数据时,sid
的值必须在students
表的id
中存在。
- 定义了一个名为