数据库DQL基础知识

数据库语法分类

SQL = 结构化查询语句

DQL = 数据查询语言

DDL = 数据定义语言

DML = 数据操作语言

DCL = 数据控制语言

实列SQL语句

# ========================万能公式===========================
# select 结果 from 表 where 条件 group by 分组列 having 条件 order by 排序列 asc/desc limit m,n;

# 查询语句 SELECT * FROM 表名;

#SELECT * FROM emp;

select * from dept;

# emp 为员工信息表;
# dept 为公司部门信息表;


# ======================查询列语句========================= 
# 语法: select 列名1,列名2,... from 表名;

select * from emp;
select ename,empno from emp;

# ========================起别名============================
# 语法: select 表名1 别名1,表名2 别名2,... from 表名;

select * from emp;
select ename '员工姓名',job '岗位' from emp;


# =====================部分行分页查询========================
# 语法: select 结果 from 表 limit m,n;  m代表起始行-1,n代表查询行共有多少数据

# 查询某部门
select * from emp limit 2,5;

select sal,ename from emp limit 1,7;

select ename '姓名',sal '工资' from emp limit 1,2;


# ========================排序===============================
# 语法1:select 结果 from 表名 order by 排序列 asc/desc; asc正序排列 desc倒序
# 语法2:select 结果 from 表名 order by 排序列 asc/desc,排序列 asc/desc  优先级为第一个

select * from emp;
# 练习1:查询员工姓名和工资,工资按照倒序排序,且列名显示姓名和工资
select ename '姓名',sal '工资' from emp order by sal desc;
# 练习2:查询部门信息,部门编号按照正序排序
select * from dept order by deptno asc;
# 练习3:查询员工工资和奖金,工资按照正序排列,当工资一样的时候,按照奖金倒序排列
select sal,comm from emp order by sal asc,comm desc;
# 练习4:查询工资最高的前三位员工信息

select * from emp order by sal desc limit 0,3;

# ====================条件查询==============================
# 语法: select 结果 from 表名 where 条件;

# 练习1 查询姓名为张三的员工信息
select * from emp where ename = '张三';
# 练习2 查询工资高于1000的员工信息
select * from emp where sal>1000;

# 练习1:查询工资高于1000,并且工资小于4000的员工信息
select * from emp where sal > 1000 and sal < 4000;
# 练习2:查询部门编号为10或者工作岗位为推销员的员工信息
select * from emp where deptno = 10 or job = '推销员';
# 练习3:查询所有员工的工资增加20%的员工姓名和增加后的工资
select emp.ename,sal*1.2 from emp;


# *************DQL复杂查询*************
# *************01 去重查询**************
# 语法:select distinct 去重列 from 表;
# 作用:查询表中某列不重复的值
# 案例:查询公司的工作岗位有哪些 
# 结果:job
# 表:emp
# 条件:distinct job
select distinct job from emp;


# =====================模糊查询==============================
# 语法: select 列名 from 表名 where 列名 like '通配符\字符';
# 其中'_'为一个字符  '%'为0-N个字符

# 练习:查询姓名中包含十的员工信息
select * from emp where ename like '%十%';
# 练习:查询姓名中第三个字符为一的员工信息
select * from emp where ename like '__一%';
# 练习:查询姓王的员工信息
select * from emp where ename like '王%';


# =====================集合操作=============================
# 语法: select 结果 from 表 where 列名 in(x,y,z,....)

# 练习1:查询部门编号不为20,30,40的员工信息(使用两种方法写)
select * from emp where deptno not in(20,30,40);
Select * from emp where deptno != 20 and deptno != 30 and deptno != 40;
# 练习2:查询工资大于等于1000小于等于3000的员工信息(使用两种方法写)
select * from emp where  sal>=1000 and sal <= 3000;
Select * from emp where sal between 1000 and 3000;


# ======================聚合函数=============================
# 作用函数: 可以实现一定功能的字符();
# max(列名): 求最大
# min(列名): 求最小
# sum(列名): 求和
# avg(列名): 求平均值
#	count(列名): 求个数
#	语法: select 聚合函数 from 表;

# 练习:求公司的最低工资
select min(sal) from emp;
# 练习:求公司的平均工资
select avg(sal) from emp;
# 练习:求部门20最高工资
select max(sal) from emp where deptno = 20;
# 练习:求部门20最低工资
select min(sal) from emp where deptno = 20;
# 练习:求公司员工总数
select count(ename) from emp;
# 练习:求公司有奖金的员工人数(comm is not null)
select count(comm) from emp where comm is not null;

# ================分组查询==============================
# 语法: select 结果(要么是聚合函数,要么是分组列) from 表 where 条件 group by 分组列 having 条件(要么是聚合函数,要么是分组);

# 练习:查询工资高于1000的各部门人数
select count(*),deptno from emp where sal > 1000 group by deptno;
# 练习:查询部门的员工人数大于5的各个部门和人数
select deptno,count(*) from emp group by deptno having count(*) > 5;
# 练习:查询工作为两个字符的各部门的人数
select deptno,count(*) from emp where job like '__' group by deptno;
# 练习:查询工资高于1000且小于4000的各部门人数
select deptno,count(*) from emp where sal > 1000 and sal < 4000 group by deptno;

# ====================添加数据表===========================
create table dept(
	deptno int primary key auto_increment, 
	dname varchar(14) ,	  
	loc varchar(13)   
) ;
insert into dept values(10,'财务部','北京');
insert into dept values(20,'研发部','上海');
insert into dept values(30,'销售部','广州');
insert into dept values(40,'行政部','深圳');


create table emp(
	empno int primary key auto_increment,
	ename varchar(10), 			
	job varchar(9),	
	mgr int,	 
	hiredate date, 
	sal int, 
	comm int,  
	deptno int not null, 
	foreign key (deptno) references dept(deptno)
);

insert into emp values(7369,'刘一','职员',7902,'1980-12-17',800,null,20);
insert into emp values(7499,'陈二','推销员',7698,'1981-02-20',1600,300,30);
insert into emp values(7521,'张三','推销员',7698,'1981-02-22',1250,500,30);
insert into emp values(7566,'李四','经理',7839,'1981-04-02',2975,null,20);
insert into emp values(7654,'王五','推销员',7698,'1981-09-28',1250,1400,30);
insert into emp values(7698,'赵六','经理',7839,'1981-05-01',2850,null,30);
insert into emp values(7782,'孙七','经理',7839,'1981-06-09',2450,null,10);
insert into emp values(7788,'周八','分析师',7566,'1987-06-13',3000,null,20);
insert into emp values(7839,'吴九','总裁',null,'1981-11-17',5000,null,10);
insert into emp values(7844,'郑十','推销员',7698,'1981-09-08',1500,0,30);
insert into emp values(7876,'郭十一','职员',7788,'1987-06-13',1100,null,20);
insert into emp values(7900,'钱多多','职员',7698,'1981-12-03',950,null,30);
insert into emp values(7902,'大锦鲤','分析师',7566,'1981-12-03',3000,null,20);
insert into emp values(7934,'木有钱','职员',7782,'1983-01-23',1300,null,10);
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值