一、索引
1.索引的作用
不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行。
表越大,花费的时间越多。如果表中查询的列有一个索引,MySQL能快速到达
一个位置去搜寻到数据文件的中间,没有必要看所有数据。
2.索引操作
2.1 查看索引
#基本语法:
show index from tablename;
#示例:
show index from user\G;
#示例说明:
查看user表的索引结构
2.2 创建表时声明索引
primary key(字段)
index (字段)
unique (字段)
create table user (
id int auto_increment,
name varchar(20),
primary key(id),
unique (name)
);
2.3 删除索引
#基本语法:
ALTER TABLE table_name DROP INDEX index_name
#示例:
alter table money drop index age;
#示例说明:
#为money表删除age索引
3.索引分类
3.1 普通索引
#基本语法:
alter table 表 add index(字段)
#示例:
alter table money add index(username);
#示例说明:
#为money表的username字段增加索引
3.2 唯一索引
#基本语法:
alter table 表 add unique(字段)
#示例:
alter table money add unique(email);
#示例说明:
#为money表的email字段增加唯一索引
3.3 主键索引
#基本语法:
alter table 表 add primary key(字段)
#示例:
alter table money add primary key(id);
#示例说明:
为money表的id字段增加主键索引
二、事务
说白了就是为了数据的安全不被破坏
事务可以看作是一个“容器”,将多条语句,放入该容器,最后,只要一个命令行,来决定其中的所有语句是否“执行”
一般来说,事务是必须满足4个条件(ACID):
原子性(Atomicity,或称不可分割性)、
一致性(Consistency)、
隔离性(Isolation,又称独立性)、
持久性(Durability)。
1.事物的原理
2.事物的流程
1.start transaction
2.相关操作
3.commit
4.[rollback]
如果在事务执行过程中,发生了错误,则可以使用rollback命令回滚到上一个事务操作
三、Python交互
1.连接MySQL
import pymysql
# 连接mysql
# 参数1:表示主机或ip地址
# 参数2:表示mysql的用户名
# 参数3:表示mysql的密码
# 参数4:表示mysql的数据库名
# conn = pymysql.connect('localhost', 'root', 'root', 'mydb2')
conn = pymysql.connect('10.36.132.6', 'root', 'root', 'mydb2')
# 创建游标对象: 可以执行sql语句
cursor = conn.cursor()
# sql语句
sql = 'select version()'
# 执行sql语句
cursor.execute(sql)
res = cursor.fetchone()
print(res)
# 关闭游标对象
cursor.close()
# 关闭mysql的连接
conn.close()
2.数据操作
import pymysql
conn = pymysql.connect('localhost', 'root', 'root', 'mydb2')
cursor = conn.cursor()
# 插入数据
sql = 'insert into person(name, age) values("aa", 20)'
# 删除数据
sql1 = 'delete from person where id=18'
# 更新数据
sql2 = 'update person set age=30 where id=20'
try:
cursor.execute(sql)
cursor.execute(sql1)
cursor.execute(sql2)
# 提交事务
conn.commit()
except:
# 回滚
conn.rollback()
cursor.close()
conn.close()
3.数据查询
关键方法:fetchone() [可联想迭代器的next()] fetchall() fetchmany()
import pymysql
conn = pymysql.connect('localhost', 'root', 'root', 'mydb2', charset='utf8')
cursor = conn.cursor()
# 查询数据
sql = 'select * from person'
# 执行sql
cursor.execute(sql)
# fetchone() : 每次查询下一条数据
# res = cursor.fetchone()
# print(res)
# res = cursor.fetchone()
# print(res)
# res = cursor.fetchone()
# print(res)
# fetchall() : 所有数据
res = cursor.fetchall()
# res = cursor.fetchmany(3) # 前3条数据
for row in res:
print(row)
print(cursor.rowcount) # 总的数据条数
cursor.close()
conn.close()
总结:基本框架是连接MySQL给一个对象(参照文件的打开与关闭)------创建游标对象-------执行sql语句-----关闭游标对象-----关闭MySQL连接