sql去除空格_SQL语⾔(⼀)
【023】
⼀. SQL 语⾔基础
1.1 什么是 SQL 语⾔
a) SQL, Structured Query Language, 结构化查询语⾔
b) SQL 是最重要的关系数据库操作语⾔,是所有关系数据库管理系统的标准语⾔.
c) SQL 语⾔是⾮过程化的语⾔, 只需要告诉做什么, 不需要关注怎么做, 简单.
1.2 SQL 语⾔可以做什么
a) 增删改查(CRUD)
b) 操作数据库对象(⽤户, 表格, 序列, 索引...)
c) 操作⽤户权限和⾓⾊的授予跟取消
d) 事务(Transaction)管理
1.3 SQL 语⾔的分类
a) DQL, Data Query Language, 数据查询语⾔,执⾏数据库的查询操作, select
b) DML, Data Manipulation Language, 数据操作,执⾏增删改, insert, delete,update
c) DDL, Data Definition Language, 数据定义语⾔,⽤于操作数据库对象, create, alter, drop
d) DCL, Data Control Language, 数据控制语⾔,操作⽤户权限, grant, revoke
e) TCL, Transaction Control Language, 事务控制语⾔, commit, rollback
scott⾃带表格:
⼆. select ⼦句
select⼦句⽤于指定查询表格中的列信息
1.1 通配符*
a)查询 emp 表格的所有数据
* 通配符, 表⽰所有的列    select * from emp;
1.2 指定列
a) 查询所有员⼯的编号, 姓名和职位
select empno, ename, job from emp;
1.3 ⽀持算数运算
a) 查询所有员⼯的姓名, 职位和年薪
select ⼦句中, ⽀持算数运算  select ename, job, sal*12 from emp;
1.4 列别名
a) select ⼦句中, 可以通过 as 关键字给列起别名
select ename, job, sal*12 as nianxin from emp;
b)as 关键字可以被省略, ⼀般都省略
select ename, job, sal*12 nianxin from emp;
c)别名中, 尽量不要使⽤特殊符号, 例如空格; 如果⾮要有特殊符号, 可以使⽤双引号括起来.
d)在 Oracle 中, 双引号表⽰原样输出.
select ename, job, sal*12 "ni a n xin" from emp;
三、distinct⼦句和字符串连接符
1. distinct ⽤于去除重复⾏信息
a)查询所有的职位信息
select distinct job from emp;
b)查询所有员⼯的姓名和职位
distinct 只能去除重复⾏, distinct 的作⽤范围是它后⾯的所有列
select distinct ename, job from emp;
2. 字符串连接符 ||
Oracle 中, ⽤单引号表⽰字符串
a) 查询所有员⼯的姓名, 职位和薪资, 以姓名:xxx, 职位:xxx, 薪资:xxx 的形式显⽰select '姓名:'||ename||',职位:'||job||',薪资:'||sal info from emp;
⽤于进⾏排序, 永远写在语句的最后
a)查询所有员⼯的信息, 按照⼯资升序排序
asc, 表⽰升序(ascend)
update是什么默认情况下, 按照升序排序, 所以, asc ⼀般被省略
select * from emp order by sal asc;
b)查询所有员⼯的信息, 按照标号降序排序
desc, 表⽰降序排序(descend)
select * from emp order by empno desc;
c)查询所有员⼯的信息, 按照⼊职⽇期降序排序
select * from emp order by hiredate desc;
d)查询所有员⼯的信息, 按照姓名排序
select * from emp order by ename;
e)查询所有员⼯信息, 按照薪资降序排序, 如果薪资相同,将新员⼯排在前⾯. select * from emp order by sal desc, hiredate desc;
f)查询所有员⼯的姓名和年薪, 按照年薪排序
select ename, sal*12 nianxin from emp order by nianxin desc;
四、where⼦句(等值条件和⾮等值条件)
1. where ⼦句:⽤于进⾏条件过滤
1.1 等值条件
a) 查询 10 部门所有员⼯的信息
select * from emp where deptno=10;
b) 查询 SCOTT 的详细信息
select * from emp where ename=scott;✖
字符串必须加单引号, ⽽且⼤⼩写敏感
select * from emp where ename='SCOTT';
c) 查询在 1982-01-23 ⼊职的员⼯信息
> ⽇期必须⽤单引号括起来;
> ⽇期格式必须是: DD-MM ⽉-YY
select * from emp where hiredate='23-1 ⽉-82';
1.2 ⾮等值条件
a) 查询⼯资在 1500 到 3000 之间的员⼯信息
> 表⽰⼀个范围, 包含边界
select * from emp where sal>=1500 and sal<=3000;
select * from emp where sal between 1500 and 3000;
b) 查询 SCOTT 和 KING 的详细信息
select * from emp where ename='SCOTT' or ename='KING'; select * from emp where ename in ('SCOTT', 'KING');
c) 查询所有员⼯的信息, 排除 20 部门
select * from emp where deptno != 20;
select * from emp where deptno <> 20;
五、where⼦句(模糊查询)
1. 模糊查询
使⽤ like(像)实现, 配合通配符实现
_, 表⽰任意⼀个字符
%, 表⽰任意个任意字符
a)查询姓名⾸字母为 A 的员⼯的信息
select * from emp where ename like 'A%';
b)查询姓名第⼆个字母是 A 的员⼯的信息
select * from emp where ename like '_A%';
c)查询姓名中带有字母 C 的员⼯的信息
select * from emp where ename like '%C%';
d)查询姓名中带有下划线的员⼯的信息
escape ⽤于声明转义字符.
select * from emp where ename like '%a_%' escape 'a';
六、where⼦句(is null和优先级)
1. IS NULL
⽤于判断空值
a) 查询所有没有提成的员⼯信息
select * from emp where comm is null;
b) 查询所有有提成的员⼯信息
select * from emp where comm is not null;
select * from emp where not comm is null;
2. and 和 or 的优先级
and 的优先级⾼于 or 的优先级
a) 查询所有CLERK的信息和⼯资⼤于1250的SALESMAN的信.. select * from emp where job='CLERK' or job='SALESMAN'and sal>1250; b) 查询所有的 CLERK 和 SALESMAN 的信息同时⼯资要⼤于1250.
select * from emp where (job='CLERK' or
job='SALESMAN') and sal>1250;
七、函数
1. 字符函数
1.1 lower, upper, initcap
a) lower, 将所有字母⼩写
b) upper, 将所有字母⼤写
c) initcap, 所有单词⾸字母⼤写
查询所有员⼯的姓名, 分别显⽰⼩写, ⼤写和⾸字母⼤写

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。