zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Day2 MySql函数以及单表查询详解数据库

mysql数据库 详解 查询 函数 以及 单表 day2
2023-06-13 09:20:20 时间
--批量插入多条记录 insert into student(sname,age) values(ww,19),(zs,18),(tq,20); --student表有数据,stu表复制student表数据 --复制表结构 create table stu select * from student where 1 = 0; --复制表数据 insert into stu select * from student; update(修改)
update tname set 字段=新值 [where 条件]
--ww的年龄+1 

update student set age=age+1 where sname=ww;
delete(删除)
delete from tname [where 条件]
delete from student where sid =5;
 delete和truncate的区别 delete不会重置自增,truncate会重置

  2.delete删除是行级删除,一行一行删除,效率低;truncate效率高。

emp(员工)表

Day2 MySql函数以及单表查询详解数据库

dept(部门)表

Day2 MySql函数以及单表查询详解数据库

--查询所有数据(结果集) 

select * from emp; 

--查询部分字段 名称和工资 

select ename,sal from emp; 

--查询工资 2000的员工信息(单一条件查询) 

select * from emp where sal 2000; 

--查询在20号部门且工资大于2000的员工信息(多个条件) 

select * from emp where deptno = 20 and sal 2000 

--查询在20号部门或者工资大于2000的员工信息 

select * from emp where deptno = 20 or sal 2000; 

--查询工资大于等于1000小于等于3000的员工信息(范围查询) 

select * from emp where sal = 1000 and sal = 3000; 

select * from emp where sal between 1000 and 3000; 

--查询员工编号为7788,7369,7521的员工信息(集合查询) 

select * from emp where empno = 7788 or empno = 7369 or empno=7521 

select * from emp where empno in (7788,7369,7521); 

--查询所有的职位信息(去重) 

select DISTINCT job from emp; 

--别名(字段,表) [as] 别名 

select empno 员工编号,ename 员工姓名 from emp; 

select ename,sal*1.05 as sal from emp; 

select * from emp e; 

--查询所有没有奖金comm为null的员工信息(null的判断) 

select * from emp where comm is not null; 

--查询所有S打头的员工信息(模糊查询) % 代表0到多个字符 _代表占一个字符 

select * from emp where ename like S%; 

--查询所有N结尾的员工信息(模糊查询) 

select * from emp where ename like %N; 

--查询所有包含S的员工信息(模糊查询) 

select * from emp where ename like %A%; 

--查询所有第二个字符为L的员工信息 

select * from emp where ename like __L%; 

--排序(order by 字段 [asc] | desc) 

--升序排序 

select * from emp order by sal desc; 

--按照工资的降序排序,工资一样的按照empno的升序排序 

select * from emp order by sal desc,empno ASC 

--限制结果查询(limit m,n) 分页查询 m代表起始索引,n代表记录的数目 

--仅适用于mysql 

select * from emp limit 5,5;
1.单行函数 a)数学函数
--数学函数 

select ABS(10); --绝对值 

select CEIL(-12.3); --向上取整 

select FLOOR(12.5); --向下取整 

select ROUND(12.5); --四舍五入 

select ROUND(12.49,-1); 

select POW(3,3); --幂运算 

select RAND(); --随机数[0,1)
b)字符函数
--字符串函数 

select LENGTH(ename) from emp; --获取字符串长度 

select length(this is an apple); 

select LOWER(ename) from emp; --转换为小写 

select UPPER(this is an apple); --转换大小写 

select SUBSTR(aabbcc,1,2); --从1开始 

select LPAD(smith,10,*); --左填充 开始字符串 总长度 padstr填充的字符 

select RPAD(smith,10,*); --右填充 

select TRIM( smi th); --去空格
c)日期函数
--日期 

select NOW(); 

select SYSDATE(); 

select CURRENT_DATE(); --当前日期 

select CURRENT_TIME(); --当前时间 

select YEAR(1998-09-09); 

select MONTH(1998-09-09); 

select DAY(1998-09-08); 

select DATE_ADD(1998-09-08,INTERVAL 2 YEAR);
2.聚合函数

count、sum、avg、max、min

--员工数(统计记录数) 

select * from emp; 

select count(*) from emp; 

select count(1) from emp; 

--统计非空字段数目 

select count(comm) from emp; 

--SUM 

select sum(sal) from emp; 

--AVG 

select avg(sal) from emp; 

--MAX 

select max(sal) from emp; 

--MIN 

select min(sal) from emp;
3.分组函数 group by 分组字段
--分组函数 GROUP BY deptno 

--每个部门的平均工资 

--group by根据条件字段的值返回相应的记录数;但是在select子句中,只能出现聚合函数或者分组的条件字段。 

select deptno,avg(sal) from emp group by deptno; 

--各个职位员工数? job 

select job,count(*) from emp group by job;
having 将分组之后的结果集再次进行检索
--平均工资大于2000的部门的部门编号和平均工资? 

 --1.求出每个部门的平均工资 

 --2.平均工资 2000 

 select deptno,avg(sal) from emp group by deptno having avg(sal) 2000;
where和having的区别
--查询工资大于1500的每个部门的部门编号和平均工资(先过滤再分组) 

select deptno,avg(sal) from emp where sal 1500 group by deptno; 

--查询平均工资大于1500的部门编号和平均工资 

select deptno,avg(sal) from emp group by deptno having avg(sal) 2000;
4.加密函数

MD5、SHA、PASSWORD

--加密函数 

select MD5(root); 

select SHA(root); 

select PASSWORD(root);
--添加外键约束 

alter table student add CONSTRAINT FK_CID FOREIGN KEY(cid) REFERENCES classroom(cid)

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/6669.html

mysql