DML应用
1.select
1.1 作用
获取MySQL中的数据行
1.2 单独使用select
1.2.1 select @@xxxx;##获取参数信息
select @@port;
show variables like '%innodb%';
1.2.2 select 函数();
select database();
select now();
select version();
1.3 SQL92 标准使用方法
1.3.1 select 语法执行顺序(单表)
select 开始
from子句--------->
use 表名 ; select * from 表名;
select * from 库名.表名;
where子句-------->
select * from 表名 where 列名='xxxx' ;##配合><=等符号进行匹配
select * from 表名 where 列名 like 'C%' ;##用like进行模糊匹配
select * from 表名 where 列名 >10000 and 列名< 20000;##使用and进行匹配
select * from 表名 where 列名 between 10000 and 20000;##与上条等同
select * from 表名 where 列名='xxxx' or 列名='xxxx';##使用or进行匹配
select * from 表名 where 列名 ('xxxx','xxxx'); ##等同上一条
group by子句------>
常用聚合函数:
AVG()##平均值
COUNT()##计数
统计每个国家的城市数量
SELECT CountryCode,COUNT(id) FROM city GROUP BY CountryCode;
SUM()##求和
统计每个国家总人口
select contrycode,SUM(population) from city
统计每个省的总人口
SELECT District,SUM( Population ) FROM city WHERE CountryCode = 'CHN' GROUP BY District;
MAX()##最大值
MIN()##最小值
GROUP_CONCAT()##列转行显示
统计中国每个省的市都有哪些
SELECT District,GROUP_CONCAT( `Name` ) FROM city WHERE CountryCode = 'CHN' GROUP BY District;
select后执行条件
having 子句-------->##在group by处理后进行过滤
--- 统计中国,每个省的总人口大于1000w的省及人口数
SELECT district ,SUM(population) FROM city
WHERE countrycode='CHN'
GROUP BY district
HAVING SUM(population)>10000000
order by子句------->##排序
SELECT district ,SUM(population) FROM city
WHERE countrycode='CHN'
GROUP BY district
ORDER BY SUM(population) DESC;
LIMIT 子句---------->##分段显示
LIMIT M,N 跳过M行,显示N行
LIMIT X OFFSET Y 跳过Y行,显示X行
显示中国每个市的人口数,并显示人口最多的5个市
SELECT Name,Population FROM city WHERE CountryCode='CHN' ORDER BY Population DESC LIMIT 0,5;
多表连接查询
1.4.1 什么时候用?
需要查询数据是来自多张表的时候
1.4.2 怎么去多表连接查询
传统连接:基于wehere条件
1)找表之间的关系列
2)排列查询条件
传统连接方式:
select city .name ,country.name ,country.surfacearea
from city,country
where city.countrycode =country.code
and city.population <100;
内连接
1)找表之间的关系列
2)将两表放在join左右
3)将关联条件放在on后面
4)将所有的查询条件进行罗列
select A.m,B.n
from
A join B
on A.x=B.y
where
group by
order by
limit
3.统计一下每门课的总成绩
select course.cname,SUM(score.score)
from
course join score
on course.cno=score.cno
GROUP BY cname;
刚入职时,DBA的任务
1.搞清楚架构
通过公司的架构图,搞清楚数据库的物理架构
生产库的信息
库下表的信息
1.何开发和业务人员,搞好关系
2.搞到ER图
3.找到建表语句,如果有注释,读懂注释,如果没有注释,只能根据列名翻译。
4.找到表中部分数据,分析数据特点,达到了解功能的目录。