基本查询
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