基本查询
sqI简介
结构化查询语言(Structured Query Language)简称SQL(发音:/'εs kju: 'εl/ “S-Q-L”),结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
➢ DML(数据库操作语言):其语句包括动词INSERT,UPDATE 和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
➢ DDL(数据库定义语言):其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE或DROP TABLE);为表加入索引等。DDL 包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
➢ DCL(数据库控制语言):它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
Select语句的语法格式和示例

1. 查询语法
Select * | 列名 from 表名

2. 别名用法
在查询的结果列中可以使用别名Select 列名 别名,列名 别名, ······ from 表名;
别名中,有没有双引号的区别就在于别名中有没有特殊的符号或者关键字。

3. 消除重复的数据
Select distinct * | 列名, ······ from 表名;
使用distinct 可以消除重复的行,如果查询多列的必须保证多列都重复才能去掉重复
4. 查询中四则运算
查询每个雇员的年薪select name, sal*12 from emp;
select name, sal*12 income from emp;

sql中支持四则运算 + - * /
什么是空值?
空值是无效的、未指定的、未知的或不可预知的值
空值不是空格或者0
包含null的表达式都为null
空值永远不等于空值
连接符||
字符串连接查询
mysql中实现方法:

oracle中实现方法:

oracle中字符串的连接使用 II
条件查询和排序
使用where语句对结果进行过滤

比较运算符

其他比较运算符

逻辑运算符

where语句示例
1. 非空和空的限制
非空:
列名 is not null

为空:
列名 is null

➢查询工资大于1500并且有奖金的员工

➢查询工资大于1500或者有奖金的员工

➢查询工资不大于1500和没有奖金的员工

2. 范围限制
➢查询工资大于1500但是小于3000的员工


➢查询出生日期在1981-2-1到1981-6-28的员工

3. 模糊查询
在常用的站点中经常会有模糊查询,即输入一个关键字,把符合的内容全部的查询出来,在sql中使用LIKE语句完成。
在LIKE中主要使用以下两种通配符:
"%"可以匹配任意长度的内容
"_"可以匹配一个长度的内容
➢查询出所有雇员姓名中第二个字符包含"海"的员工

在LIKE中如果没有关键字表示查询全部

➢查询名字带有"王"字的员工

在oracle 中不等号的用法可以有两种形式"<>“和”!="
➢查询topid不是1011的员工信息

使用order by对结果排序
asc升序
desc降序
order by 列名默认的排序规则是升序排列,可以不指定ASC,如果按着降序排列必须指定DESC
如果存在多个排序字段可以用逗号分隔,注意ORDER BY语句要放在sql的最后执行
当排序时有可能存在null时就会产生问题,我们可以用nulls first,nulls last来指定null值显示的位置。


单行函数



✔ 字符函数

接收字符输入返回字符或者数值,dual 是伪表
- 字符串的连接可以使用concat也可以使用"||",建议使用"||"

- 字符串的截取,使用substr,第一个参数是源字符串,第二个参数是开始索引,第三个参数长度,开始的索引使用1和0效果相同


- 获取字符串的长度

- 字符串替换,第一个参数是源字符串,第二个参数被替换的字符串,第三个是替换字符串

✔ 数值函数

✔ 日期函数
➢查询雇员的进入公司的周数
分析:员工进入公司的天数除以7就是进入公司的周数:(sysdate - 入职日期)/7



➢获得两个时间段中的月数: MONTHS_BETWEEN()

➢获得几个月后的日期:ADD_MONTHS()

✔ 转换函数

- TO_CHAR函数对日期的转换
日期的格式:

- TO_CHAR函数对数字的转换
数字转换的格式:



- to_char():字符串转换函数

在结果中10以下的月前面被补了前导零,可以使用fm去掉前导零

转换成XXXX年XX月XX日

- TO_NUMBER:数值转换函数
TO_NUMBER可以把字符串转换成数值

- TO_DATE:日期转换函数
TO_DATE可以把字符串的数据转换成日期类型

✔ 通用函数
通用函数适用于任何数据类型,同时也适用于空值
常用的通用函数:

✔ 条件表达式
- case表达式:

- decode函数:

多行函数
分组函数作用于一组数据,并对一组数据返回一个值。
多行函数也叫:组函数、分组函数。
组函数会忽略空值。
NVL函数使分组函数无法忽略空值
分组数据:

常用的多行函数:

➢查询出部门平均工资不到2000的部门


单行子查询
查询每个部门工资最少的员工的信息:

nvl函数

NVL(NAME,N) 表示如果NAME不为空就取NAME如果NAME为空就取N

159

被折叠的 条评论
为什么被折叠?



