1、DML(数据操纵语言)
# 插入
INSERT INTO `table_name` (`field1`,`field2`,`field3`) VALUES(value1,value2,value3);
# 更新
UPDATE `table_name` SET field1 = value1, field2 = value2 WHERE field1 = 'mysql';
# 删除
DELETE FROM `table_name` WHERE field1 = 'mysql';
# 清空表(慎用)
TRUNCATE `table_name`
2、DQL (数据查询语言)
# 查询语句
SELECT `field1` FROM `table_name` WHERE `field1` = 'mysql' ORDER BY field1
3、常用函数
# 数学函数:
# PI() 返回圆周率π,默认显示6位小数
# ABS(x) 返回x的绝对值
# CEIL(x) 返回不小于x的最小整数
# MOD(x,y) 返回x被y除后的余数
# FLOOR(x) 返回不大于x的最大整数
# ROUND(x) 返回最接近于x的整数,即对x进行四舍五入
# ROUND(x,y) 返回最接近x的数,其值保留到小数点后面y位,若y为负值,则将保留到x到小数点左边y位
# 字符串函数
# LOWER(x) 将str中的字母全部转换成小写
# UPPER(x) 将字符串中的字母全部转换成大写
# CHAR_LENGTH(x) 计算字符串字符个数
# CONCAT(x1,x2,...) 返回连接参数产生的字符串,一个或多个待拼接的内容,任意一个为NULL则返回值为NULL
# CONCAT_WS(x1,x2,...) 返回多个字符串拼接之后的字符串,每个字符串之间有一个x
# 聚合函数
# AVG(x) 求平均值
# SUM(x) 求和
# MAX(x) 求最大值
# MIN(x) 求最小值
# COUNT(x) 计数
4、事务
① 原子性(atomicity):要么全部提交成功,要么全部失败回滚,不存在部分成功。
② 一致性(consistency): 在执行之前和执行之后,数据库都必须处于一致性状态。
③ 隔离性(isolation):事务的隔离性是指在并发环境中,并发的事务时相互隔离的,一个事务的执行不能被其他事务干扰。
- Read Uncommitted:最低的隔离级别,一个事务可以读到另一个事务未提交的结果。 所有的并发事务问题都会发生。
- Read Committed:只有在事务提交后,其更新结果才会被其他事务看见。可以解决脏 读问题。
- Repeated Read:在一个事务中,对于同一份数据的读取结果总是相同的,无论是否有 其他事务对这份数据进行操作,以及这个事务是否提交。可以解决脏读、不可重复读。
- Serialization:事务串行化执行,隔离级别最高,牺牲了系统的并发性。可以解决并发 事务的所有问题。
脏读:读取未提交其他事务数据。
幻读:读取别的事务插入的数据导致前后读取不一致。
不可重复读:读取表中的某一行数据,多次读取的结果不同
5、三大范式
-
原子性:保证每一列不可再分。
-
满足第一范式, 每张表只描述一件事情。
-
满足第一和第二范式,确保数据表的每一列数据都和主键直接相关,不能为间接相关
-
有时会故意的增加冗余的字段,这样子就可以多表变单表的查询提高性能,但是还是要尽量遵从三大范式。
6、基础概念
- 回表:当 Select 查询字段不在索引列表时,就会多加一个回表操作,取到完整的数据。
- 死锁:比如两个事务长时间未提交, A 事务需要用到 A 与 B 表,此时 A 表被锁定。 B 事务用到 B 与 A 表, 此时 B 表被锁定。导致 A 事务访问 B 表失败, B 事务访问 A 表失败。死锁就产生了。