基本的单表查询语句和练习

基本的单表查询语句和练习

-- 创建库与表
create database collge;
create table collge.student(
id int(2),
name varchar(3),
age int(3)
)

-- truncate 删除,只会删除表格中的数据,不会改变表的结构
insert into collge.student values(1,"杨淇翔",21);
truncate collge.student;
-- 练习
create database school2 default character set utf16 collate utf16_general_ci;
create table school2.sss(
id int(2),
age int(2),
card int(18)
);

-- 批量插入数据
insert into school2.sss values
(1,20,511621),
(2,18,511611),
(3,19,511611);
-- 创建数据库,设置默认字符集,关键字:字符集:character ,默认:default,校对:collate
alter database school2 default character set utf8 collate utf8_general_ci;
-- 更新数据练习
update school2.sss set id=3 where age=20;
-- 删除关键字:drop,delete,truncate
drop database school2;
-- 删除表中的数据的语法关键字:delete
-- 删除表中的指定数据语法:delete from 库名.表名 where 列名1 = 值1;
-- 注意delete 是的删除整行结构包括数据
delete from school.teacher where id=1;
drop database collge;

-- 查询语句是测试工程师使用最多的sql语句
-- 查询语句的关键字 查询:select
-- 查询语句的简单语法结构:
-- select 列1,列2,.....,列n from 库名.表名[where 条件语句];
-- *号表示查询所有列

-- 单条件查询

-- 查询工资3000的员工信息
-- 比较运算符:<, >,<=,>=,!=,<>(不推荐)
-- 逻辑运算符:and ,or ,not
select * from emp where sal=3000;
-- 查询工资小于3000的员工姓名和工资
select ename, sal from emp where sal<3000;
-- 查询工资大于3000的员工姓名和工资
select ename, sal from emp where sal>3000;

-- 查询CLERK岗位是哪些员工
select ename '员工姓名' ,job as '岗位名称'
from emp where job='CLERK';

-- 查询公司的最高领导人:翻译过来就是他没有领导
select ename from emp where mgr is null;

-- 查询JONES的工资
select -- 查询语句的开头
ename ,sal -- 你需要在控制台显示的列
from emp -- 你从哪张表查询
where ename='JONES';-- 找到横轴与纵轴的交叉点来定位数据行进行筛选数据

-- 查询部门号为20的员工
select
ename,deptno
from emp
where deptno=20;

-- 查询不是20号部门的员工姓名和工资
select ename ,sal ,deptno
from emp
where deptno!=20;

-- 查询工号是:7698的员工的工资
select empno, ename, sal
from emp
where empno = 7698;

-- 包含的关键字:in

-- 查询WARD,JONES,MARTIN,BLAKE,CLARK 五个人的工资
select ename,sal
from emp
where ename in('WARD','JONES','MARTIN','BLAKE','CLARK');
-- 查询WARD,JONES,MARTIN,BLAKE,CLARK以外的工资
select ename,sal
from emp
where ename not in('WARD','JONES','MARTIN','BLAKE','CLARK');

-- 查询工资1250,2850,3000,5000的员工姓名
select ename , sal
from emp
where
sal in(1250,2850,3000,5000);

-- 数值范围比如说 :

-- 1000<=x<=2000
-- 我们使用between a and b ,意思是a到b之间,包含a和b

-- 查询工资在1000到3000的员工姓名和工资
select ename ,sal
from emp
where sal between 1000 and 3000;

-- 匹配用的关键字:like 象什么.....

-- 匹配语句主要用于模糊查询 其中两个占位符'--';任意字符'%':匹配任意字符
-- 查询名字中有R的员工信息
select *from emp where ename like"%R%";
-- 查询名字中有T的员工信息和以T结尾的员工信息
select *from emp where ename like"%T%";
select * from emp where ename like"%T";
-- 查询名字是4个字符的员工信息
select * from emp where ename like"____";

-- 查询名字以开头的五个字符员工信息
select * from emp where ename like"S____";

-- 排序

-- 关键字:order by order:是表示排序,by:表示是通过什么
-- 升序asc默认可以不写,降序desc
-- 查询员工信息,按照工资从低到高排序
select * from emp order by sal desc;

-- 查询员工部门是10号的员工信息,按照工资asc/desc;

select * from emp where deptno=10 order by sal;
select * from emp where deptno=10 order by sal desc;

-- 排序语句中的截取显示limit m,n 关键字:limit 是限度的意思

-- 含义:从m开始,截取n个显示 ,m从0开始
-- 只查询工资最低的员工信息
select * from emp order by sal limit 0,1;

-- 查询工资最低3个员工信息
select * from emp order by sal limit 0,3;
-- 查询工资升序7,8,9的员工信息
-- select * from emp order by sal;
select * from emp order by sal limit 6,3;

-- 去重查询

-- 关键字:distinct
-- 查询领导的员工编号
select distinct mgr from emp where mgr is not null;

-- 子查询

-- 子查询的含义就是在已查到的结果中再次查询
-- 查询哪些员工是领导,显示姓名
select distinct mgr
from emp
where mgr is not null;

select ename from emp where empno in(select distinct mgr
from emp
where mgr is not null);
-- 哪些员工是普通员工
select ename from emp where empno not in(select distinct mgr
from emp
where mgr is not null);
-- 查询哪些是领导
select ename
from emp
where
empno in (select distinct mgr from emp where mgr is not null );

-- 常见的聚合函数

-- 求和:sum();求最大值:max();
-- 求最小值:min();平均值:avg();计数:count();
-- 四舍五入函数:round(m,n) m表示需要处理的数据,n表示保留多少位小数

-- 查询工资最低工资是多少
select min(sal) from emp;
-- 查询最高工资是多少
select max(sal) from emp ;
-- 查询平均工资是多少,保留两位小数
select round(avg(sal),2) from emp;
-- 查询工资总额是多少
select sum(sal) from emp;
-- 查询有多少员工
select count(ename) from emp;

posted @ 2022-06-28 16:00  小胖子学编程  阅读(139)  评论(0编辑  收藏  举报