SQL定义:结构化查询语言,用于存取数据以及查询、更新和管理关系数据库系统。
SQL书写规则:
1、支持单行和多行书写,分号结尾。
2、Mysql不区分大小写,关键字建议大写。
常见注释语法: 三种注释语法,#,–,/* */(前两个为单行注释,后一个为多行注释)
DML数据库操纵语言(Data Manipulation Language)之增删改查(重点掌握)
作用:主要负责数据表的数据的增删改(insert,delete,update)
一、数据增加(插入)——Insert
1. 插入单条记录
insert into 表名(字段名,字段名,字段名)
values(‘值1’,‘值2’,‘值3’);
2. 插入多条记录
insert into 表名(字段名,字段名,字段名)
values(‘值1’,‘值2’,‘值3’),
(‘值1’,‘值2’,‘值3’),
(‘值1’,‘值2’,‘值3’);
二、数据删除——Delete
delete from student(表名)
where name=‘xiaoming’;
三、数据修改——Update
update student(表名)
score =10
where name=‘小明’;
四、数据查询——select
1. 语法
select name(字段名,字段名,字段名)
from user
where score>20
group by 字段名[字段名,字段名,字段名] //一个或多个字段名
having <条件表达式> //分组后的条件
order by 字段名 [ASC|DESC],字段名[ASC|DESC]; //默认升序
2. 常用聚合函数
avg(字段名) //求一列值得平均值(数值型数)
max(字段名) //求一列值得最大值
min(字段名) //求一列值得最小值
count(*) //计算记录个数
count(字段名) //对一列中的值计算个数
sum(字段名) //求一列值得总和(数值型数)
DDL数据库定义语言(database defined language)之增删改查
作用:只负责数据库和数据表的创建,修改,删除;
DQL数据库查询语言(Data Query Language)之增删改查条件查询,模糊查询
作用:主要负责数据库的数据查询(select)
条件查询,模糊查询,排序查询,聚合函数,分组,分页查询
数据库中的完整性约束: 数据完整性用于保证数据库中数据的正确性、一致性和可靠性。
第一种约束方式——主键约束
定义:唯一标识对应记录,且不能包含null值。
语法:id int PRIMARY KEY,(表中定义)
第二种约束方式——非空约束
定义:字段的值不能为NULL
语法:name VARCHAR(20) NOT NULL,(表中定义)
第三种约束方式——唯一约束
定义:表中字段值不能重复出现。
语法:name VARCHAR(20) UNIQUE, (表中定义)
第四种约束方式——外键约束
定义: 如果表A的主键是表B中的字段,则该字段称为表B的外键;外键主要用来保证数据的完整性和一致性,适用于多表操作。
语法:student_id int REFERENCES teacher(id)(表中定义)
多表之间的关系与实现关系
一对一 关系建表原则:任意一张表添加一个外键,并且这个外键要唯一,指向另外一张表。
一对多(多对一)关系建表原则:在多的一方添加一个外键,指向一的一方的主键。
多对多关系建表原则:建立中间表,拆分成一对多的关系,中间表至少要有两个外键,分别指向原来的两张表。
三大范式(递次规范)
用途:为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。
1NF(第一范式): 每一列都是不可分割原子项(学院 不可以再分割为 名称 和代号)。
2NF(第二范式): 消除非主属性对主码部分依赖,即确保表中的每列都和主键相关。
函数依赖:若在一张表中,属性或属性组X确定,必定能确定属性Y的值,则称Y函数依赖于X。
完全函数依赖:结合上述概念,必须依赖X中所有属性值。
部份函数依赖: Y 函数依赖于 X,但同时 Y 并不完全函数依赖于 X。
传递函数依赖:Z 函数依赖于 Y,且 Y 函数依赖于 X ,那么我们就称 Z 传递函数依赖于 X。
候选码:如果关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码;
主码:如果一个关系有多个候选码,则选定其中一个为主码;
主属性:候选码的诸属性称为主属性;
非主属性:不包含在任何候选码中的属性称为非主属性;
3NF(第三范式): 非主属性不依赖于其他非主属性(消除依赖传递)
多表查询(迪卡儿积)
连接查询:内连接(隐、显)、外连接(左、右)
子查询
事务基本介绍
定义:访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。
四大特性:
原子性(Atomicity) 事务是一个完整的操作, 事务中所有操作命令必须作为一个整体提交或回滚。如果事务中任何操作命令失败,则整个事务将因失败而回滚。
一致性(Consistency) 当事务完成时,数据都处于一致状态。
隔离性(Isolation) 对数据进行修改的所有并发事务是彼此隔离的,它不以任何方式依赖或影响其他事务。
持续性(Durability ) 事务提交之后,数据是永久性的,不可再回滚。
隔离级别(从上到下安全性越来越高,效率越来越低):
读未提交(产生123)
读已提交,Oracle(产生23)
可重复读,MySQL默认(产生3)
串行化(解决所有问题)
存在问题:1、脏读(读到另一个事务中没有提交的数据),2、不可重复读,3、幻读
后续待补充…