Mysql知识

我的笔记

注意 
1,create table student1 as select *from student;///除了约束都能复制
2,alter table change name name1;//修改列名
3,rename table student to studet1;//修改表名
4, select distinct leval from student;               //消除重复,distinct紧跟select 只写一次。
5.select name ,sal+500 from EMP;//只查询时加并非修改
6,select empno 员工编号,ename 员工姓名 from emp;//查询时显示列别名:
7,between ...and...//闭区间 
8,like '李%'//%任意w位数的字符串; like'%李%'; _占一位字符  //模糊查询
9,null 与0//有本质区别的挂科。查空值:is null.
10,select *from emp order by sal desc,empon ASC;//先按照sal降序排列,相等的话按empon升序。 
11,select *from emp where deptno=30 order by sal desc;//先选后排
12,日期类型的查询:select *from emp where heirdate='1981-12-03';
13,select mod(5,3)//取余=2;orcle:select mod(5,3)from +虚表
14,select round(100.56,1)//四舍五入=100.6;
select ename,sal,round(sal ,-2)from emp;//把工资四舍五入到百位。
15,字符函数
获取字符串:substraing
select substraing('I Love you',3,4);
select substraing(ename,1,3)from emp;//从第一个字母开始截取名字的连续三个字母。
select ename concat()
16,日期函数
select curdate();//当前系统日期(年月日);
select curtime();//当前系统时间(时分秒);
select DATE_FORMAT(now(),'%y-%m-%s %h:%i:%s')//自定义输出格式
                           年-月-日 时:分:秒
17,ifnull(e1,e2)//如果e1不为空则取e1,否则取e2的数值;
例如:ifnull(null,1)=1;
    ifnull (1,2)=1;
18,多行函数
count();
(1),count(*)
(2),count(列名)//过滤空属性值。
(3),select count(distinct job)from emp;//消除重复职位后的记录个数(种类);
sum();
select avg(ifnull(comm,0))from emp;//查平均奖金。

max();
           可用于日期,min:日期早    max:晚
		   


min();
19,分组
group by(列名)
select depton,sum(sal)from emp group by depton;//按一个属性分组:查询每个部门各自的总收入
select depton,job ,count(*)from emp group by deptno,job;//按两个属性分组截图
//orcle 报错
select后面可以写:分组的列,主函数;
select deptno ,sum(sal)from emp group by deptno having sum(sal)>10000;
/*******************************************************************
where 在分组前过滤,having 在分组后过滤。
每个部门员工工资超过1500有两人的部门。
什么在分组前做,什么在分组后做
*******************************************************************/
select deptno ,count(*)from emp where sal>1500 group by deptno
having count(*)>2;//为什么分组前要


教师版本

SELECT * FROM emp ORDER BY sal desc,empno ASC;/*查询按工资降序按职工编号升序*/
SELECT * FROM emp WHERE deptno=30 ORDER BY sal desc;
SELECT * FROM emp WHERE hiredate='1981-12-03';
SELECT MOD(5,3);/*求余*/
SELECT ROUND(34.56);/*小数四舍五入*/
SELECT ROUND(34.56,-1);/*个位四舍五入*/
SELECT ename,sal,ROUND(sal,-2) FROM emp;/*十位四舍五入*/
SELECT SUBSTR('I Love You',1,3);
SELECT SUBSTR(ename,1,3) from emp;/*截取员工姓名的前三个字母*/
SELECT ename,CONCAT('neusoft_',ename) FROM emp;/*在员工名字前加入字符串*/
SELECT CURDAT();/*获取当前日期*/
SELECT CURTIME();/*当前时间*/
SELECT NOW();/*当前日期和时间*/
SELECT DATE_FORMAT(NOW(),'%y-%m-%s %h:%i:%s');
SELECT ename,sal,comm,sal+comm FROM emp;/*空值参与加减运算结果为空*/
SELECT ename,sal,comm,sal+IFNULL(comm,0) FROM emp;/*空值处理函数*/

/*多行函数*/
SELECT COUNT(*) FROM emp;/*求记录数(空值在内)*/
SELECT COUNT(comm) FROM emp where deptno=30;/*记录非空数据*/
SELECT COUNT(DISTINCT job) from emp;/*消除重复数据*/
SELECT SUM(sal),AVG(sal),MAX(sal),MIN(sal),AVG(IFNULL(comm,0)) from emp;
SELECT MAX(hiredate) FROM emp;
SELECT MIN(hiredate) FROM emp;

/*GROUP BY分组*/
SELECT deptno,SUM(sal),MAX(sal),MIN(sal) FROM emp GROUP BY deptno;/*按deptno分组*/
SELECT deptno,job,COUNT(*) FROM emp GROUP BY deptno,job;/*多值分组:select后面只可以写分组的列和主函数*/
SELECT deptno,SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal)>10000;
SELECT deptno,COUNT(*) FROM emp WHERE sal>1500 GROUP BY deptno HAVING COUNT(*)>2;/*查询部门工资在1500以上并且人数大于2的部门*/SELECT * FROM emp ORDER BY sal desc,empno ASC;/*查询按工资降序按职工编号升序*/
SELECT * FROM emp WHERE deptno=30 ORDER BY sal desc;
SELECT * FROM emp WHERE hiredate='1981-12-03';
SELECT MOD(5,3);/*求余*/
SELECT ROUND(34.56);/*小数四舍五入*/
SELECT ROUND(34.56,-1);/*个位四舍五入*/
SELECT ename,sal,ROUND(sal,-2) FROM emp;/*十位四舍五入*/
SELECT SUBSTR('I Love You',1,3);
SELECT SUBSTR(ename,1,3) from emp;/*截取员工姓名的前三个字母*/
SELECT ename,CONCAT('neusoft_',ename) FROM emp;/*在员工名字前加入字符串*/
SELECT CURDAT();/*获取当前日期*/
SELECT CURTIME();/*当前时间*/
SELECT NOW();/*当前日期和时间*/
SELECT DATE_FORMAT(NOW(),'%Y-%m-%s %H:%i:%s');
SELECT ename,sal,comm,sal+comm FROM emp;/*空值参与加减运算结果为空*/
SELECT ename,sal,comm,sal+IFNULL(comm,0) FROM emp;/*空值处理函数*/

/*多行函数*/
SELECT COUNT(*) FROM emp;/*求记录数(空值在内)*/
SELECT COUNT(comm) FROM emp where deptno=30;/*记录非空数据*/
SELECT COUNT(DISTINCT job) from emp;/*消除重复数据*/
SELECT SUM(sal),AVG(sal),MAX(sal),MIN(sal),AVG(IFNULL(comm,0)) from emp;
SELECT MAX(hiredate) FROM emp;
SELECT MIN(hiredate) FROM emp;

/*GROUP BY分组*/
SELECT deptno,SUM(sal),MAX(sal),MIN(sal) FROM emp GROUP BY deptno;/*按deptno分组*/
SELECT deptno,job,COUNT(*) FROM emp GROUP BY deptno,job;/*多值分组:select后面只可以写分组的列和主函数*/
SELECT deptno,SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal)>10000;
SELECT deptno,COUNT(*) FROM emp WHERE sal>1500 GROUP BY deptno HAVING COUNT(*)>2;/*查询部门工资在1500以上并且人数大于2的部门*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值