MySQL本身就是一款C/S架构,有服务端、有客户端,自身带了有客户端:mysql.exe
python操作mysql就是让python这门语言成为了MySQL的客户端。
python连接mysql操作步骤:
1. 先链接MySQL
2. 在Python中书写SQL语句
3. 开始执行SQL语句,拿到结果
4. 在Python中做处理(进一步对数据做处理)
以上操作需要使用一个第三方的模块:
pymysql、 mysqldb、 mysqlclient。
写一个py文件,连接数据库并查询数据库中的表
import pymysql
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='123456',
db='db10',
charset='utf8'
)
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
sql = 'select * from student'
cur.execute(sql)
res = cur.fetchall()
print(res)
视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可
视图的作用:
如果要频繁使用一张虚拟表,可以不用重复查询
创建视图:
create view teacher2course as
select * from teacher inner join course on teacher.tid = course.teacher_id;
删除视图:
drop view teacher2course;
注意事项:
1、在硬盘中,视图只有表结构文件,没有表数据文件
2、视图通常是用于查询,尽量不要修改视图中的数据
足对某张表数据的增、删、改的情况下,自动触发的功能称之为触发器。
触发器的作用:
在对某一张表数据增insert、删delete、改update的行为,这类行为一旦执行就会触发触发器的执行,即自动运行另外一段sql代码。
创建触发器:
create trigger 触发器的名字 before/after insert/update/delete on 表名 for each row
begin
sql语句
end
针对插入:
create trigger tri_after_insert_t1 after insert on 表名 for each row
begin
sql代码。。。
end
create trigger tri_after_insert_t2 before insert on 表名 for each row
begin
sql代码。。。
end
针对删除:
create trigger tri_after_delete_t1 after delete on 表名 for each row
begin
sql代码。。。
end
create trigger tri_after_delete_t2 before delete on 表名 for each row
begin
sql代码。。。
end
针对修改:
create trigger tri_after_update_t1 after update on 表名 for each row
begin
sql代码。。。
end
create trigger tri_after_update_t2 before update on 表名 for each row
begin
sql代码。。。
end
注意事项:
在书写sql代码的时候结束符是; 而整个触发器的结束也需要分号;这就会出现语法冲突 需要我们临时修改结束符号。
修改符号:
delimiter $$
delimiter ;
删除触发器:
drop trigger tri_after_insert_cmd;
事务可以包含一些sql语句,这些sql语句要么同时成功,要么一个都别想成功,称之为事务的原子性。
事务的作用:
保证了对数据操作的数据安全性
事务的四种属性:
1.原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
2.一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
3.隔离性(isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
4.持久性(durability):持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
以上四个属性通常称为ACID特性。
索引就是一种数据结构,类似于书的目录。意味着以后再查数据应该先找目录再找数据,而不是用翻页的方式查询数据,索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。
键的种类:
primary key
unique key
index key
注意:
上面三种key前两种除了有加速查询的效果之外还有额外的约束条件(primary key:非空且唯一,unique key:唯一),而index key没有任何约束功能只会帮你加速查询
索引的本质:
通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。
索引的影响:
1.在表中有大量数据的前提下,创建索引速度会很慢(建表的时候,如果明显需要索引,就提前加上)
2.在索引创建完毕后,对表的查询性能会大幅度提升,但是写的性能会降低
聚集索引(primary key)
指的就是表的主键,特点:叶子结点放的一条条完整的记录。
辅助索引(unique,index)
就是给id以外的其他字段建立索引,特点:叶子结点存放的是辅助索引字段对应的那条记录的主键的值。