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

SQL中的运算符

算术运算符

--算术运算符(子句) 
select 1+1; 
select 2-1; 
select 2*2; 
select 3/4;   --0.75 
select 3/0;   --NULL 
select 3 div 4; --0

比较运算符> < >= <= != =

--0表示false,1表示true 
select 1=1; --1 
select 1!=1; --0

逻辑运算符  and or !

select 1=1 and 1!=1;

位运算符 | ^ &

select 2|3;  --3 
select 2&3;  --2 
select 2^3;  --1

DML(insert、update、delete)

insert(插入)

语法

insert into tname[(字段…)] values(值…)

例如

--插入数据 
insert into student values(1,'zs',18); 
--只给部分字段添加值 
insert into student(sname,age) values('ls',19); 
--批量插入多条记录 
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的区别

  1. delete不会重置自增,truncate会重置

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

DQL

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

(0)
上一篇 2021年7月17日
下一篇 2021年7月17日

相关推荐

发表回复

登录后才能评论