赞
踩
关系型数据库是一种基于关系模型的数据库系统,将数据组织成表格的形式,表格由行和列组成,每行代表一个记录,每列代表一个属性。它使用结构化查询语言SQL进行数据管理和操作。
特点:1.数据的组织:数据以表格的形式进行组织,每个表格具有固定的列和数据类型。
2.数据的关联:通过定义主键和外键来建立不同表格之间的关联关系,实现数据的一致性和完整性。
3.数据的一致性:关系型数据库支持事务处理,可以确保数据的一致性和可靠性。
4.数据的查询:使用SQL语言进行数据的查询、插入、更新和删除,具有较高的灵活性。
5.数据的安全性:关系型数据库提供了权限控制和数据加密等功能,保障数据的安全性。
常见的关系型数据库:MySQL、Oracle、Microsoft SQL Sever、PostagreSQL等。
显示所有的数据库 | show databases; |
查看当前使用的数据库 | select database(); |
使用一个数据库 | use 数据库名; |
创建一个数据库 | create database 数据库名; |
删除一个数据库 | drop database 数据库名; |
查看当前所有的表 | show tables; |
查看表信息 | desc 表名; |
创建一个表 | create table 表名(列名 类型 约束信息); |
添加列 | alter table 表名 add 列名 类型 约束信息; |
修改列的信息 | alter table 表名 change 原始列名 新列名 类型 约束信息; |
删除表 | drop table 表名; |
删除列 | alter table 表名 drop 列名; |
修改表名 | rename table 原始表名 to 新表名; |
查询表的数据 | select * from 表名; |
插入数据 | 全部插入:insert into 表名 values(); insert into 表名 values(),(),()...; 缺省插入:insert into 表名(列1,列2) values(),(),()...; insert into 表名 set 列1=值1,列2=值2....; |
修改数据 | update 表名 set 列=值,... where 条件; |
删除数据 | deLete from 表名 where 条件; |
主键约束 | primary key |
非空 | not null |
自增长 | auto_increment |
唯一约束 | unique |
外键 | foreign key |
整数类型 | tinyint | 1个字节 |
smallint | 2个字节 | |
int | 4个字节 | |
bigint | 8个字节 | |
浮点数 | float | 单精度浮点数 |
double | 双精度浮点数 | |
decimal | 高精度浮点数 | |
字符串 | char | 固定长度的字符串,最大长度为255个字符。 |
varchar | 可变长度字符串,最大长度为65535个字符。 | |
blob | 用于存储二进制数据的类型,包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。 | |
日期时间 | date | 日期,格式为'YYYY-MM-DD' |
time | 时间,格式为'HH:MM:SS' | |
datetime | 日期时间,格式为'YYYY-MM-DD HH:MM:SS' | |
timestamp | 时间戳,自动记录插入或更新的时间。 | |
枚举 | enum |
外键是用于连接表与表之间关联关系的一种约束
创建 | create table 表名(列...... constraint 外键名 foreign key(列名) references 主表(主键) on update cascade on delete cascade); |
添加 | alter table 表名 add constraint 外键名 foreign key(列名) references 主表(主键) on update cascade on delete cascade; |
删除 | alter table 表名 drop foreign key 外键名; |
别名:别名是为了方便多表查询时区分不同表的相同列名
格式:select 列名 as 别名,列名 as 别名 from 表名;
例子:select student.name as 学生名,teacher.name as 教师名 from student inner join teacher on student.t_id=teacher.id;
查询指定列:select 列1,列2 from 表名;
条件查询:select * from 表名 where 条件;
where后的条件:
比较运算符 | =、!=/<> <= < > >= | select name,age from student where id<5; |
多个条件 | and并且,or或者 | select name,age from student where age>20 and id<5; select name,age from student where age>20 or id<5; |
成员 | in其中一个 not in不在其中 | in 类似or,满足在其中,就显示出来:select name,age from student where id in (1,2,3); select name,age from student where id not in (1,2,3); |
模糊查询 | like | _ 一个下划线代表一个字符: select * from 表名 where 列名 like '黄_'; % 代表多个字符,查找名字中带有星的:select * from 表名 where name like '%星%' |
判空 | is null是空 is not null不是空 | 空字符串不是空 查询地址为空的内容 查询地址不为空的内容 |
嵌套查询:一个查询结果作为另外一个查询的条件
内连接 | 取两边都有的 | inner join on 条件 如:select student.name as 学生名,teacher.name as 教师名 from student inner join teacher on student.t_id=teacher.id; |
左外连接 | 内连接结果+左表内容(右侧补Null) 以左表的内容为主,左表内容全部写上,右表没有结果则补Null | select student.name,teacher.name from student left join teacher on student.id*3=teacher.id; |
右外连接 | 内连接结果+右表内容(左侧补Null) 以右边的表的内容为主,右表内容全部写上,左表没有结果则补Null | select student.name,teacher.name from student right join teacher on student.id*3=teacher.id; |
全连接 | 左外连接 union 右外连接 | select student.name,teacher.name from student left join teacher on student.id*3=teacher.id union select student.name,teacher.name from student right join teacher on student.id*3=teacher.id; |
系统函数
database() | 查看当前数据库 |
user() | 当前用户 |
version() | 当前数据库版本 |
current_date | 当期日期 |
current_time | 当前时间 |
current_timestamp | 当前日期时间 |
聚合函数
max(列名) | 最大值 |
min(列名) | 最小值 |
avg(列名) | 平均值 |
sum(列名) | 求和 |
count(列名) | 统计行数 |
排序:order by
排序方式:desc降序,asc升序。默认是升序
例子: select * from teacher order by age desc;
分页:分页是为了将数据量大的表分开方便查看
limit n:显示前n行
limit n,m:从索引n开始显示m个。第page页,每页显示个数为size,limit (page-1)*size,size;
分组:将查询到的结果进行分组,方便统计结果
如:统计男女数量
select count(*),sex from teacher group by sex order by sex;
去重:distinct,去除重复的行,如去除重复的名字
查看当前用户 | select user(); |
创建用户 | create user '用户名'@'%' identified by '密码'; |
用户授权 | grant 权限 on 数据库名 to '用户名'@'%'; |
刷新权限 | flush privileges; |
删除用户 | drop user ‘用户名'@'%'; |
视图是一个虚拟表,但是操作视图等同于操作真实表
作用:简化复杂的查询操作
使用:可以直接将教师对应的学生放在一个视图中,直接查看视图就可以查看对应关系,不需要使用嵌套查询,简化了查询操作。
函数:接受参数,并且有返回值。格式:select 函数名(参数)
可以将常用的计算操作封装成一个函数,如常用的求和、求均值、最大值、最小值、统计行数等,都封装成了函数,随时可以调用。
存储过程:是一套SQL操作,没有返回值。将一套复杂的查询语句放入存储过程,使用时直接调用,简化程序代码。格式:call 过程名(参数)
索引是一种优化查询技术
索引类型:主键索引,主键自带的
唯一索引,unique唯一约束
普通索引,适用于任何字段
索引方法:BTREE,适用于大数据量查询,适合范围比较
HASH,适用于小数据量,适合精确的等值比较
使用:适用于表查询频率高,几乎不修改数据的表
事务是一组SQL操作,这些操作要么全部执行成功,要么全部失败回滚。、
开启事务:start transaction
提交:commit
作用:保证数据的安全性。
事务的acid特性:
1.原子性:事务不可再分,要么全部成功,要么全部失败回滚,不会出现部分操作成功,部分操作失败的情况。
2.一致性:执行前和执行后的数据保持一致。
3.隔离性:事务之间互不影响。
4.永久性:事务一旦提交成功,对数据库的修改是永久的。
存储引擎是数据存储的实现方式
常用的存储引擎:
InnoDB:mysql默认的存储引擎。特点:支持事务;支持外键;支持行级别锁定、阻塞;综合能力强,适用于大多数场景。
MyISAM:查询、排序速度快,但是不支持外键。
Memory:读写速度最快,但是不能持久化,数据不能在本地保存。数据库连接断开,数据就会消失。
CSV:适合使用逗号分隔的文件,适合导入导出。
数据备份:将数据库信息转储为SQL文件
恢复:当数据丢失时,可以将备份好的SQL文件运行,将数据库恢复到原来的状态。
导入模块pymsql:import pymsql
构建连接:pymysql.connect()
创建游标实例:cursor()
游标使用:
Fetchone | 获取一行 |
fetchall | 获取所有 |
fetchmany | 获取多行,size参数设置获取的大小 |
scroll | 游标偏移 |
execute | 执行一个sql语句 |
executemany | 一次执行多个sql语句 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。