测试需要掌握的SQL知识
2021-11-02 17:24:03 1 举报
AI智能生成
登录查看完整内容
MySQL需要掌握的SQL知识;
作者其他创作
大纲/内容
数据库(database):存储数据的仓库
数据库定义功能
数据操作功能
数据控制功能
数据查询功能
数据库的运行和管理
数据库建立和维护功能
常用数据库管理系统:MySQL、DB2,Oracle,SQLserver,Acess
数据库管理系统(Database Management System=DBMS)
由行和列组成的一个二维表
实体:表示现实事物。如:学生,课程
属性:实体的特性。比如:学生的姓名,课程的编号
一对一
一对多
多对多
关系:
ER图
矩形:实体
椭圆形:属性
菱形:关系
使用无向线连接
概念模型表示
关系概念模型
create:创建数据库对象
alter:修改数据库对象
drop :删除数据库对象
rename :重命名
truncate :删除表数据保留表结构
DDL(数据定义语言)
insert:向表中插入数据
update:更新表中的数据
delete:删除表中的数据
DML(数据库操纵语言)
select : 查询数据
DQL(数据查询语言)
grant <权限操作> on <表名> to <用户>
权限操作:select,update,insert,delete,all privilege(全部权限)
grant:授予权限
revoke <权限操作> on <数据库对象> from <数据库或者表名称>
revoke:移除权限
DCL(数据控制语言)
支持结构化语言(Structure Query Language)SQL
关系型数据库
存储数据:以对象的形式存储数据。如:键值形式,文档形式,图形等
常用:redis,MongoDB,Memcached 等
非关系型数据库
数据库的类型
数据库安装/卸载(了解)
数据库概念
查看所有数据库:show databases;
查看数据库下的所有表:show databases;
查看字符集:show character set;
查看命令show
use 数据库名称;
切换数据库命令
desc 表名称;
查看表结构
create database <数据库名称>character set 字符集名称;
charset=utf8
创建数据库
create table <表名称>(字段名称1 数据类型 [约束名称],字段名称2 数据类型 [约束名称])ENGINE=INNODB CHARSET=utf8;
创建表
int:整型
tinyint:小整型
float:单精度浮点型
数值
char(n):定长字符串
varchar(n):变长字符串
tinytext(n):短文本字符串
n:代表设置的字符串长度
字符类型
date:格式YYYY-MM-DD
time:格式HH:MM:SS
datetime:YYYY-MM-DD HH:MM:SS
日期类型
数据类型(常用)
insert into 表名称(字段1,字段2) values(值1,值2)
插入数据
update 表名称 set 字段名=新的值 where 条件
更改数据
删除数据库:drop database 数据库名称;
删除表:drop table 表名称;
delete from 表名称 where 条件;
truncate 表名称;
delete from 表名称;
清空表
删除某一条数据
truncate:清空表数据,保留表结构并且重置主键序号
delete:删除表中的数据,不重置主键索引值,可以删除某一条数据
drop:删除表结构及表数据,可以删除其他数据库对象
delete ,truncate,drop区别
删除
增加字段:alter table 表名称 add 字段名 数据类型;
修改字段或数据类型:alter table 表名称 change 旧字段名 新字段名 数据类型;
修改数据类型:alter table 表名称 modify 字段名 数据类型;
删除字段:alter table 表名称 drop 字段名;
重命名:alter table 表名称 rename as 新的表名称;
更改表结构(alter table)
基本命令
标识字段的唯一性,具备非空和唯一约束
表中只能有一个主键
可以将多个字段设置为主键
特性
create table 表名称(字段名称1 数据类型,字段名称2 数据类型,字段名称3 数据类型,字段名称4 数据类型,primary key(字段名称1,字段名称2))
创建约束
alter table 表名称 add constraint primary key(字段名)
表创建完成后,添加主键
alter table 表名称 drop primary key
删除主键约束
主键(primary key)
将一个字段设置为非空约束后,插入的数据不能为null
语法
非空(not null)
当一个表的字段,引用了其他表的主键时,我们称之为这个字段是该表的外键
被引用的表称为主表,引用字段所在的表称之为从表
表已经创建好后,添加外键alter table 从表名 add constraint [约束名] foreign key(从表字段) references 主表(主键字段名)
外键(foreign key)
表示该字段中不允许出现重复的数据
唯一(unique)
表示当插入数据时,该字段没有插入任何内容,此时使用默认值
默认值(default)
一般与主键一起使用
起到让序号自动增加的作用
自增长(auto_increment)
mysql中不支持该约束
检查(check)
完整性约束
查询所有:select * from 表名称
select * from 表名称 where 条件
比较运算符:> < >= <= <> !=
between ……and ……
包含两边的数值
在……之间
--查询工资大于1000,并且年龄小于20select * from 表名称 where 工资 > 1000 and 年龄<20
-- 查询工资在2000到3000之间的员工信息select * from 表名称 where 工资 between 2000 and 3000
例如:
条件表达式
按条件查询
语法:select 字段名 as 别名,字段名2 as 别名2 from 表名称
as 可以省略,可以给字段起别名,也可以给表起别名
as 的作用:让字段的标题更有实际意义,明了。
起别名(as)
语法:select * from 表 where 字段名 like ‘关键字%’
%:代表匹配多个字符个数
_:代表匹配一个字符
-- 查询以姓“王”的所有学生信息select * from 表名称 where 字段名 like '王%'
-- 查询以“成”值结尾的但是两个字的学生信息select * from 表名称 where 字段名 like '_成'
例如
模糊查询(like)
语法:select * from 表名称 limit m,n;从m+1行开始,查询n条数据
m:可以省略,代表从第一行开始
-- 查询表中的第一行数据select * from 表名称 limit 1
分页(limit)
一般与聚合函数一起使用
语法:select 聚合函数 from 表名称 group by 字段名 having 条件
having 不能单独使用,必须与group by 一起使用
统计个数:count()
求和:sum()
求平均:avg()
求最大:max()
求最小:min()
聚合函数
-- 统计每个班级人数是多少?select class,count(*) 人数 from 表名称 group by class
分组(group by)
语法:select * from 表名称 order by 字段名 desc
desc : 倒序,从大到小
asc : 正序,从小到大
-- 按成绩从高到低排序select * from 表名称 order by 成绩 desc
排序(order by)
now()
current_time()
current_date()
month()
year()
day()
week()
timestampdiff(unit,starttime,endtime)
计算时间差值
日期函数
ceil(num):向上取整
floor(num) : 向下取整
round(num) : 四舍五入
数值函数
length(para):求字符串长度
concat():连接字符串
字符函数
其他内置函数
单表查询
语法:select * from 表A ,表B where 表A.id = 表B.id
表A的id 与 表B 的 id 表示的是同一个现实事物的属性
返回结果:既在表A中,又在表B中的数据
关联查询
语法:select * from 表A inner join 表B on 表A.id=表B.id
内连接(inner join)
语法:select * from 表A left join 表B on 表A.id=表B.id
返回左表(表A)中的所有数据,对应右表中不存在的数据以null的形式返回
左外连接(left join)
语法:select * from 表A right join 表B on 表A.id=表B.id
返回右表(表B)中的所有数据,对应左表中不存在的数据以null的形式返回
右外连接(right join)
外连接
连接查询
使用运算符:> < >= <= != <>
子查询语句中,返回一行记录结果
语法:select * from 表名称 where 字段名 > (select 字段名 from 表名称)
单行子查询
子查询中返回多行的查询结果
语法:select * from 表名称 where 字段名称 in (select 字段名称 from 表名称)
多行子查询
语法:select * from 表名 where exists(select 字段名 from 表名)
exists 后面语句查询有结果则返回true;查询无结果则返回false
exists
语法:select * from 表名 where 字段名 运算符 any (select 字段名 from 表)
含义:字段名 满足 any子查询里任意一条件即可 (or)
any | some
select * from 表名 where 字段名 运算符 all (select 字段名 from 表)
含义: 字段名 满意 all 子查询中所有的条件,(and)
all
any | some | all
子查询
要求:表1的字段个数要与表2的字段个数一致,字段含义以第一个SQL为准
union 会去除重复数据
union all 显示所有数据,包括重复的数据
union 与 union all
纵向连接(union)
多表查询
语法:select 字段1,字段2,字段3 from 表1 union select 字段1,字段2,字段3 form 表2
测试需要掌握的SQL知识(MySQL)
0 条评论
回复 删除
下一页