今天学习下Mysql 数据库
Mysql 5.5.62 window版 下载 密码ruby
默认需要记住的:
- DQL select(数据查询语言):查询
- DML insert,update,delete(数据操作语言):增删改
- DDL create,drop,alter(数据定义语言)创建(表),删除(字段),添加(字段)
- TCL commitrollback(事务控制语言):事务提交,事务回滚
- DCL grant revoke(数据控制语言):授权,撤销
开启数据库
net start mysql;
关闭数据库
net stop mysql;
看有多少库文件
show databases;
使用表
use 表名
看表的列名等数据
desc 表名
《单表查询》为主,以此表为查询数据(表名emp)
1》查询表中数据
select * from emp;
select ename,job,mgr,hiredate,sal,comm,deptno from emp;
2.》在数据库当中‘’null’ 数据的对比不能使用“=”进行衡量 所以where 列名 = null ;无法成立,需要用 is 来代替
select * from emp where comm = null;无法成立
select * from emp where comm is null;
3.》
lower 转换小写
upper 转换大写
substr取子串(字段,起始下标,截取长度)
concat 字符串拼接
length 取长度
trim去除前后空白
1|select lower(ename) from emo;
2|select upper(ename)from emp;
3|select substr(ename,1,1) as ename from students;//起始下标从1开始
4|select concat(substr(ename,1,1),sub(ename,2,3))as newname from emp;
5|select ename from emp where length(ename) = 2;
6|select name from students where name = trim(' king');
4.》ifnull(字段,0)如果comm数据中有Null,数据相加就也会是Null的结果;
所以使用ifnull这个方法来做判断,comm这个字段下的字面量有Null就替换成0来所计算
select ename,(sal + ifnull(comm,0))*12 as yearsal from emp;
case…when…zhen…wen…zhen…else …end
(case 字段,when 条件 then 执行 when条件 then 执行 else 执行 end)
查询名字,工作,(匹配(job) 当job =manager 然后 工资显示为sal1.1
当job = salesman 然后 工资显示为sal 1.5 ,其他的正常显示,结束)
select ename,job,(case job when 'manager' then sal*1.1 when 'salesman' then sal*1.5
else sal end) as newsal from emp;
分组查询
- count计数
- sum 求和
- avg 平均值
- max 最大值
- min 最小值
count(具体字段) ;表示统计该字段下所有不为NULL的元素的总数、
count():统计表当中的总行数,只有(只要有一行数据count 则++)
可以试下
select count(comm) from emp;
select count() from emp;
执行顺序(不可变,*****5颗星,group by 运用 *****5颗星)
1.from
2.where
3.group by
4.having
5.select
6.order by
在一条select 语句当中,如果有group by 语句的话,select 后面智能跟:参加分组的字段,以及分组函数,其他一律不能跟
1.获取每个部门的平均薪资 的数据
select avg(sal) from emp group by deptno;
2.获取每个部门,每个工种的最高薪资 的数据
select job,deptno,max(sal) from emp group by deptno,job;
3,获取每个部门 每个工种中 工资大于3000的数据
select job,deptno,max(sal) from emp where sal > 3000 group by deptno,job;
4.获取每个部门,每个工种 ,平均工资大于2500的数据
select job,deptno,avg(sal) from emp group by deptno,job having avg(sal) > 2500;