mysql思维导图
MySQL数据库管理系统
什么是数据库
数据库的定义
数据库是用于存储软件在运行过程中所产生的所有业务数据
数据库管理系统
数据库管理系统是一款用于管理数据库的软件,它能够保证数据有效的存储、快速查询、安全保障
数据库的优点
体积小、速度快、总体拥有成本低(简单、轻便、开源免费)的数据库管理系统,它适用于广大中小型软件项目,是目前最流行的数据库关系系统之一。
软件测试工程师可以用数据库做什么
a、测试工程师在执行测试用例时,可以去数据库验证实际结果
b、使用数据库可以更高效的构建测试数据
c、测试工程师也有可能需要负责测试环境的维护:(应用服务器、数据库)
MySQL安装
安装
卸载
a、卸载Mysql Server 5.6
b、卸载Mysql Installer
c、C:\ProgramData\MySQL 删除该文件夹
访问
a、访问Mysql之前,一定要确保Mysql的服务是启动的:
Win + R -->services.msc -->找到Mysql5.6的服务
由于我们设置了mysql不要开机自动启动,所有每次开机之后需要手动启动
b、命令行访问
1)切换到mysql程序的路径下
Win +R -->cmd -->输入cd D:\mysql-5.7.29-winx64\bin
2)输入mysql -u 用户名 -p 密码 -p 端口号
登陆到mysql数据库管理系统
mysql -u root -p 123456
SQL
定义
结构化查询语句
在数据库系统中,所有的操作都可以使用SQL来完成
所有的数据库管理系统SQL语句都是通用的
语法
SQL不区分大小写
语句可以换行,单词不能换行,一句话必须以;结尾
--空格 注释
蓝色 关键字(不可修改)
数字不需要引号(可以有),字符串必须加引号
使用
show databases;
展示MySQL系统中所有的数据库
show tables;
展示数据库中所有的表
use <数据库名>
选择数据库
操作指定数据库之前,必须先要选择指定的数据库
SQL分类
DDL语句
create
创建数据库、表等
创建表
CREATE TABLE 表名(
字段1 类型 [约束], //中括号的意思是可选项
字段2 类型 [约束],
... ...,
字段n 类型 [约束]
创建数据库
create database 数据库名
drop
删除数据库
删除表
DROP TABLE 表名;
为了避免删除表的语句经常出现报错,可以使用以下语句
DROP TABLE IF EXSISTS 表名
删除数据库
drop datatase dbname
alter
修改表
ALTER TABLE 表名 ADD/CHANGE/MODIFY/DROP/RENAME ... ...;
添加字段
修改字段
修改字段名
删除字段
修改表名
modify
修改字段类型
alter table 表名 modify 属性名 数据类型;
add
增加表字段
alter table 表名 add 属性名 数据类型;
drop
删除表字段
alter table 表名 drop 属性名
change
字段改名
alter table 表名 change 旧字段名 新字段名 数据类型
rename
更改表名
alter table 表名 rename 新表名;
显示表
desc 表名;
DML语句
insert
插入记录
INSERT INTO 表名(字段1,字段2,........,字段n)VALUES(值1,值2,........值n)
update
更新记录
UPDATE 表名 SET 字段=新值,字段=新值 WHERE 条件;
delete
删除记录
DELETE FROM 表名 WHERE 条件;
select
查询记录
SELECT 查询要显示的字段
*代表所有的字段
也可以写指定的字段名,多个字段用逗号隔开
FROM 数据库.表名;
WHERE 条件查询
> >= < <= != =
多个条件需要用and/or连接(and会比or先运算)
in 从一个集合中依次取值
between ... and ... 在...与...之间
is null
like 模糊查询 %代表0或多个字符,_代表1个字符
not 非运算,查询出不满足条件的数据
语法例子
SELECT deptno,count(*)
FROM emp
WHERE ename like '%E%'
GROUP BY deptno
HAVING count(*)>1;
别名
在对象后面接一个字符串,可以把查询语句中的对象临时更改名字;
父级对象.子对象 在NaviCat工具中可以自动联想子对象
查询不重复的记录
条件查询
排序和限制
聚合(分组)
GROUP BY
分组函数一定要与分组字段一起查询
常见的分组函数:
sum(求和)
count(*)(记录数)
max(最大值)
min(最小值)
案例
DCL语句
DQL语句
数据类型
数值类型
int 整形数值
int(4)不是4位整数
int(4)取值范围是-2^31 到 2^31-1 (详情参考二进制转十进制)
decimal 定点数
decimal(x,y)数字长度最大x位,必须保留y位小数
decimal(5,2)取值范围是 -999.99 到 999.99
char 定长字符串
char(10)要求字段必须存储10Byte字符串,如果不足10Byte按10Byte算。
varchar 变长字符串
varchar(10)要求字段最大存储10Byte字符串,如果不足10Byte按实际算。
text 超长文本
一般存储1000字以上的字符串
日期类型
date
YYYY-MM-DD
datetime
YYYY-MM-DD HH:MI:SS
time
HH:MI:SS
区别
char存储数据所占用的空间多,varchar能够节省存储空间
char类型的数据写入和查询的速度比varchar更快
char适合存储短字符口串(例如性别,状态等属性),varchar适合存储长字符串
完整性约束
表数据如果重复或者大批量为空,则会有非常多的无效数据,使用约束条件可以保证表数据的有效性
实体完整性
实体完整性是对关系中的记录唯一性
定义表中所有行能唯一的标识
表中主属性(字段)不能为null 且不能有相同的值
一般用主键、唯一索引、unique 关键字来实现
主键约束
规定字段的值不允许为null,并且不允许重复
primary key
一张表只能有一个主键
一个主键可以有多个字段
添加主键约束
通过alter语句:
alter table 表名 add primary key (列名);
alter table 表名 add constraint 主键约束的名字 primary key (列名);
删除主键约束
alter table 表名 drop primary key;
唯一约束
unique
规定字段的值不允许重复,保证数据的唯一性
唯一约束不允许出现重复的值,但是可以为多个null
域完整性
对字段属性的约束,限制数据类型
缺省值,规则,约束,是否可以为空,确保不会输入无效的值
非空约束
规定字段的值不允许为null
检查约束
规定字段的值必须满足指定的条件
check(age BETWEEN 18 and 32)默认值约束
默认值约束
规定字段的值如果不写,则取默认的值
default 值
枚举类型
enum(a,b,c) ,规定了字段只能从指定的集合中取值
一个字段只能有一个类型
参照完整性
表与表之间的数据参照引用
通过外键约束实现
外键约束
a、外键是构建了一个表的两个字段或是两个表的两个字段之间的参照关系
b、表的外键值必须在主表中能找到
c、当主表的记录被从表参照时,主表的记录将不允许删除
d、要删除数据时,先删除从表中依赖的数据
规定字段的值只能在主表的关联字段中取值
foreign key(字段) references 主表(字段)
外键只能关联主表的主键
创建从表之前必须创建主表
删除主表之前必须删除从表
删除主表的数据时,从表中不能有此数据的关联数据
函数
数值函数
ABS(X)
返回X的绝对值
ROUND(X,Y)
返回参数X的四舍五入的有Y位小数的值
子主题 3
子主题 4
子主题 5
字符串函数
concat(s1,s2,s3,.....sn)
连接s1,s2,s3,...sn为一个字符串
日期和时间函数
DATE_FORMAT(date,fmt)
返回按字符串fmt格式化日期date值
流程函数
IFNULL(value1,value2)
如果value1不为空,返回value1,否则返回value2
其他常用函数