MySQL学习笔记:基础应用总结
一、什么是数据库?
1、数据库是按照数据结构来组织、存储和管理数据的仓库。每个数据库都提供API用于创建、访问、管理、搜索和复制所保存的数据。
2、数据库的数据表之间有关联关系,我们称为关系型数据库,常见的关系型数据库有:Mysql,Sqlserver,Oracle等,Mysql是开源的,也是重点要掌握的。
3、一些基本术语:主键,外键,复合键,索引,参照完整性,冗余(为了避免频繁多表查询,而在一张表中添加的在别的表中已经存在的列)等。
二、数据库按照,参考这个文章:
https://blog.csdn.net/bobo553443/article/details/81383194
三、查询,试一下
1、inner join 内连接,求完全相等的集合
2、left join 左连接,以左表为准的集合
3、right join 右连接,以右表为准的集合
4、left join unite right join 左右连接,左右表的并集
四、数据类型
五、创建表
六、增删改查语句
七、外键关联和联表查询
八、事务:
1、定义:将多个步骤做捆绑的统一的处理,或者同时操作,或者同时不操作,就叫事务
2、只有使用InnoDB数据库引擎才支持事务
3、事务的四个特性:
> 原子性:同时操作,或者同时操作,或者同时不操作
> 稳定性:遇到约束比如外键则全部退回。
> 隔离性:事务独立运行,一个事务的处理结果影响其他事务那么其他事务会撤回。事务100%隔离需要牺牲速度。
> 可靠性:软硬件奔溃后,InnoDB会利用日志文件重构修改。可靠性和效率不可以兼得。
九、索引:
1、定义:让数据表的检索速度变得更快,主键只有一个,但是可以对多个字段做索引。
2、注意:
> 索引其实也是一张表,如果只建立的索引,没有使用,那么索引依然没有发挥作用,比如你将身份证号和姓名做了索引,但是查询的时候仅查询居住地址,那么还是依然采用效率很低的遍历方式。
> 索引会降低数据库整体速度,比如你在insert,update,delete一个索引列的原值时,mysql会同时更新索引表中的数据使其重新排序,那么如果操作的频繁了就会降低数据库整体速度。
> 创建唯一索引,索引的值必须是唯一的,主键就是唯一索引,联合索引也是要确保多个字段的组合是唯一的
十、通过python操作数据库
1、安装pymysql组件:可以在pycharm中直接安装
2、操作的代码如下:
import pymysql con = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="xxx", db="tangwei") try: # 创建游标 cursor = con.cursor() # 执行sql,并返回影响的行数,execute执行一行SQL语句 # effect_row = cursor.execute("UPDATE `tangwei`.`user` SET `name` = 'tangwei12' WHERE (`id` = '1');") # 多行提交,update和delete操作也是同理 effect_row = cursor.executemany("insert into user(name,sex) values (%s,%s)", [('name5', 'W'), ('name6', 'N')]) # 默认是打开事务的,所以最后都要提交下,不然是不会插入成功 con.commit() effect_row = cursor.execute("select * from user") # 查询的代码 print(effect_row) for i in range(effect_row): print(cursor.fetchone()) finally: con.close()