数据库设计之三范式
介绍
E-R模型
介绍
E-R模型即实体-关系模型,E-R模型就是描述数据库存储数据的结构模型
使用场景
外键SQL语句的编写
外键约束作用
对已经存在的字段添加外键约束
为学生表的cls_id添加外键约束
ALTER TABLE students add FOREIGN KEY(c_id) REFERENCES classes(id);
删除外键约束
获取外键约束名称
SHOW CREATE TABLE students;
删除
alter table students drop foreign key 外键名;
组合使用
分组和聚合函数的组合使用-演练
将查询结果插入其他表中
使用连接更新表中某个字段数据
创建表并给某个字段添加数据
修改表结构
事务
介绍
使用场景
四大特性
原子性
一致性
隔离性
持久性
使用
表的存储引擎
查看MySQL支持的表的存储引擎
SHOW ENGINES;
说明
开启事务
begin;
或者
start transaction;
说明
提交事务
将本地缓存文件中的数据提交到物理表中,完成数据的更新
commit;
回滚事务
事务演练SQL语句
小结
索引
应用场景
使用
查看表中已有索引
show index from students;
说明
- 主键列会自动创建索引
- 外键约束这个字段也会自动创建索引
创建索引
说明
索引名不指定,默认使用字段名
删除索引
案例-验证索引查询性能
1、创建测试表test
CREATE TABLE test(name VARCHAR(50) not NULL);
2、代码插入1000条数据
# 1.导包
import pymysql
if __name__ == '__main__':
# 2.创建连接对象
conn = pymysql.connect(host="主机地址",
port=3306,
user="root",
password="123456",
database="python",
charset="utf8")
# 3.获取游标,目的就是执行sql语句
cursor = conn.cursor()
# 准备sql
sql = "insert into test(name) value (%s);" # 增
try:
# 4、执行sql语句,传入的参数类型可以是元祖,列表,字典
# 循环执行1000次插入数据操作
for i in range(1000):
cursor.execute(sql, ["测试数据" + str(i)])
# 提交数据到数据库
conn.commit()
except Exception as e:
conn.rollback()
# 5.关闭游标
finally:
cursor.close()
# 6.关闭连接
conn.close()
3、验证性能
3.1 开启运行sql时间监测
set profiling = 1;
3.2 查找第一千条数据“测试数据999”
select * from test where name = "测试数据999";
3.3 查看运行sql所需的时间
show profiles;
3.3 给name字段添加索引
alter table test add index(name);
3.4 再次查询同样的数据
3.5 再次查看所需的时间进行对比
联合索引
介绍
创建联合索引
联合索引好处
最左原则
概念
示例
说明
索引优点
加快数据的查询速度