小白入门SQL基础篇(二)

SQL :Structured Query Language(结构化查询语言)

SQL介绍
它是操作数据库管理系统的一个标准:主要对数据库进行CRUD的操作, 数据库的运算都是通过SQL来完成的.
create:创建
delete:删除
update:修改
retrieve:检索
市面上的主流数据库都遵守SQL规范:
注:不同的数据库对SQL的支持又有些不同;
SQL根据命令功能的不同分为5个部分:
(1) DDL(Data Definition Language)数据定义语言

create,alter,drop,truncate,comment on,rename to...
以数据库表为例: 对表中结构操作 (创建表 create,修改表结构alter ,删除表 drop)

(2) DML(Data Manipulation Language)数据操纵语言

insert,update,delete
以数据库表为例: 对表中记录操作 (添加记录 insert,删除记录 delete,修改记录 update)

(3) DCL(Data Control Language)数据控制语言

grant,revoke...

(4) DQL(Data Query Language)数据查询语句

select

(5) DTL(Data Transaction Language)数据事务语言

commit,rollback,savepoint

SQL语法 - 单表查询

select column1, column2,column3 ...
from table_name 
where (and, or, in,is [not] null,like ,between .. and)
order by column1 [asc/desc],column2 [asc/desc]

表结构
(1) 部门表结构


21.png

(2) 员工表结构


22.png

表记录
(1) 部门表数据


23.png

(2) 员工表数据


24.png

SQL - 单表查询

  1. 查询所有的部门信息
select deptno,dname,loc
from dept
  1. 查询所有员工的信息
select empno,ename,job,mgr,salary,comm,hiredate,deptno
from emp 

表别名、列别名

  1. 查询所有员工的编号,姓名,职位
select e.empno '员工编号',e.ename '姓名',e.job '职位' 
from emp e
  1. 查询所有员工所有职位,不要重复
select distinct job from emp

条件查询

  1. 查询薪资超过2000的员工的编号,姓名,薪资
select empno,ename,salary
from emp
where salary >2000
  1. 查询在10部门的员工编号,姓名
select empno,ename
from emp
where deptno = 10
  1. 查询在10部门 职位是'CLERK'的员工的编号,姓名,薪资
select empno,ename,salary
from emp
where deptno = 10 and job ='CLERK'
  1. 查询没有绩效的员工的编号,姓名,薪资,绩效
select empno,ename,salary,comm
from emp
where comm is null       -- 没有绩效


select empno,ename,salary,comm
from emp
where comm is not null  -- 有绩效
  1. 查询职位是'SALESMAN'或'CLERK'的员工的编号,姓名,职位
select empno,ename, job
from emp
where job = 'SALESMAN' or job = 'CLERK'

或者

select empno,ename, job
from emp
where job in( 'SALESMAN' , 'CLERK')
  1. 查询在10或20部门的员工的编号,姓名,职位,部门编号
select empno,ename, job,deptno
from emp
where deptno = 10 or deptno = 30

或者

select empno,ename, job,deptno
from emp
where deptno  in(10,30) 
  1. 查询薪资在2000 - 3000之间的员工的编号,姓名,薪资
select empno,ename, job,deptno
from emp
where  salary >=2000 and salary <=3000

或者

select empno,ename, job,deptno
from emp
where  salary between 2000 and  3000

模糊查询 like

% :任意多个任意字符
_ : 任意一个字符

  1. 查询出名称以'S'开头的员工编号,姓名
select empno,ename
from emp 
where ename like 'S%'
  1. 查询出名称包含'A'字母的员工编号,姓名
select empno,ename
from emp 
where ename like '%A%'
  1. 查询出名称包含'AR'字母的员工编号,姓名
select empno,ename
from emp 
where ename like '%AR%'
  1. 查询出名称中第二个字母是'E'的员工编号,姓名
select empno,ename
from emp 
where ename like '_E%'
  1. 查询出名称中倒数第二个字母是'E'的员工编号,姓名
select empno,ename
from emp 
where ename like '%E_'

排序 order by

  1. 升序 order by 列名 asc , 默认是升序,所以asc可以省略
  2. 降序 order by 列名 desc

order by 列1 [asc / desc], 列2 [asc / desc]

  1. 查询员工信息,按照名字字母顺序排序
select empno,ename,job,mgr,salary,comm,hiredate,deptno
from emp 
order by ename asc
  1. 查询10部门的员工编号,姓名,薪资,按照薪资的升序排序
select empno,ename,job,mgr,salary,comm,hiredate,deptno
from emp 
where deptno =10
order by salary asc
  1. 查询10部门的员工编号,姓名,薪资,职位,,按照薪资的升序排序,若薪资相同,则按照职位字母顺序降序排序
select empno,ename,job,mgr,salary,comm,hiredate,deptno
from emp 
where deptno =10
order by salary asc , job desc 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容