复习前面MySQL的基础操作,目的是让我们有印象!!在这篇文章中,我主要写的是数据库的约束和查询操作的详细、深入讲解!
插入 insert -> insert into 表名 values (值,值...)
查询 select -> select 列名 from 表名
修改 update -> update 表名 set 列名 = 值 where 条件
删除 delete -> delete from 表名 where(删的是数据)
数据库的约束
1、not null
表示添加了not null这个约束的列不能存储null值
2、unique
某列如果添加unique约束,那么这一列的值就存在唯一性
3、default
给某列添加默认值
4、primary key
primary key(主键)= not null + unique。主键是一行的身份标识
5、foreign key
foreign key(外键),用于有联系的表之间建立关系
6、check
保证列中的值符合条件
我这里简要的写一个学校宿舍管理系统,系统中主要包含了宿舍信息表、学生信息表和每日的宿舍查房记录表。在上面的三张表中,我会在适合的位置添加约束。添加约束的目的是:使校验更严格了,写代码则会减少出错率,提高了开发的效率。
学生信息表
- create table student (
- student_id int primary key auto_increment,
- student_name varchar(20) not null,
- gender varchar(2) default '女',
- age int,
- block_number int,
- dormitory_number int,
- berth_number int);
宿舍信息表
- create table dormitory (
- block_number int,
- dormitory_number int,
- berth_number int,
- id int,
- foreign key (id) references student (student_id));
每日的宿舍查房记录表
- create table record (
- date_time datetime,
- dormitory_supervisor varchar(20),
- state varchar(5) default '未归寝',
- id int unique,
- foreign key (id) references student (student_id));
insert into 表1 values (值1,值2,...);#向表1中插入值
select * from 表2;#查询表2中所有的数据
1、insert into 表1(列名1,列名,...) select 列名1,列名2,... from 表2; #将表2中查询到的结果插入到表1中;
2、insert into 表1 select * from 表2; #将表2中查询到的结果全部插入到表1中;
1、查询的值的类型,顺序,个数,必须和要插入的表相匹配!!!
2、括号在 SQL 中用于分组表达式或子查询,而不是用于列名!!
聚合查询:行与行之间的运算;
表达式查询:列和列之间的运算;
1、count
count和后面的括号中间不能加空格!!!
2、sum
3、avg
4、max/min 最大值/最小值