数据库
数据库就是‘数据’的‘仓库’,数据库由表、关系以及操作对象组成 数据都存放在表中,表由列(字段)和行(记录)组成,在mysql中,表又被称为关系
表
字段
记录
约束 约束就是管理 管理数据的完整性 可靠性+准确性=数据完整性
主键和外键
实体完整性 参照完整性 自定义完整性
主键 表中有一列或几列组合的值能用来唯一地标识表中的每一行,这样的一列或者多列的组合叫做表的主键
主键必须是非空且不重复的
一个表只能有一个主键,主键约束确保了表中的行是唯一的
表中可以没有主键,但通常情况下应当为表设置一个主键
最少性 尽量选择单个字段作为主键
稳定性 尽量选择数值更新少的列作为主键
外键 就是‘子表’中对应于‘主表’的列,在子表中称为外键或者引用键
它的值要求与主表的主键或者唯一键相对应,外键用来强制引用完整性。一个表可以有多个外键
自定义完整性:自定义完整性指根据具体的业务要求所设置的约束,跟之前介绍的主键和外键不同,自定义完整性需要单独进行设置之后,数据库才会进行检查
定长字符串:字符串长度是一定的,如果实际的字符串长度不足,将以空格来补齐,比如char(10),那么如果实际存储的字符是hello,将存储hello+5个空格
不定长字符串:字符串的最长长度是一定的,但实际的字符串长度是根据实际存储值来决定的,如果长度不足不会用空格补齐,varchar(10),如果实际存储的是hello,则存储的字符长度为5
日期和时间类型
创建主键的几种方式
联合主键
外键
指定外键删除或更新的行为
通过constraint添加外键
创建自增长
delete 手动提交事务
truncate 自动提交事务
查询
查询产生一个虚拟表 看到的是表形式显示的结果,但结果并不真正存储 每次执行查询只是现从数据表中提取数据,并按照表的形式显示出来
聚合函数
聚会函数会针对进行运算的所有记录返回唯一一个结果
分组函数group by可以对记录进行分组
where子句:从数据源中去除不符合其搜索条件的数据
group by子句:搜索数据行到各个组中,统计函数为每个组计算统计值,每个值输出一行结果
having子句:从分组计算结果中进行过滤,去掉不符合其组搜索条件的各组数据行
子查询
多表查询
内连接(inner join) 左外连接(left join) 右外连接(right join)
Mysql高级特性
存储过程的概念
存储过程是存储在数据库目录中的一段声明性sql语句,存储过程写好后,可以被其他编程语言直接调用,非常方便
1.通常存储过程有助于提高应用程序的性能
2.存储过程中有助于减少应用程序和数据库服务器之间的流量,不必发生冗长的sql语句到数据库,只需要传递存储过程名称和参数
3.存储的程序对任何应用程序都是可重用的和透明的
4.存储的程序是安全的,支持权限控制
触发器
事务
通过Python连接数据库