Oracle SQL
SQL学习是重点,请仔细阅读。
O
Oracle
结构化查询语言(Structured Query Language)简称SQL(发音:/ˈɛs kjuː ˈɛl/ "S-Q-L"),结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
Ø DML(Data Manipulation Language):数据库操作语言。其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
Ø DDL(Data Definition Language) :数据库定义语言。其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
Ø DCL(Data Control Language) :数据库控制语言。它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
Ø TCL(Transaction Control Language) :事务控制语言。例如:COMMIT – 保存已完成的工作。ROLLBACK – 回滚等等
简单查询
1
查询语法
Select * |列名 from 表名
2
别名用法
在查询的结果列中可以使用别名
Select 列名 别名,列名别名,... from emp;
3
消除重复的数据
Select distinct *|列名, ... from emp;
使用distinct可以消除重复的行,如果查询多列的必须保证多列都重复才能去掉重复
4
字符串连接查询
Mysql中实现方法:
查询雇员编号,姓名,工作
编号是:7369的雇员, 姓名是:smith,工作是:clerk
5
查询中的四则运算
查询每个雇员的年薪
select ename, sal*12 from emp;
select ename, sal*12 income from emp;
Sql中支持四则运算“+,-,*,/”
条件查询
1
条件查询
在查询绝大多数都会有条件的限制
语法:select *|列名 from 表名 where 条件
例如:查询工资大于1500的所有雇员
2
非空和空的限制
示例:查询每月能得到奖金的雇员
分析:只要字段中存在内容表示不为空,如果不存在内容就是null,
语法:列名 IS NOT NULL
为空 列名 IS NULL
范例:查询工资大于1500并且有奖金领取的雇员
分析:多个查询条件同时满足之间使用‘AND’
范例:查询工资大于1500或者有奖金的雇员
分析:多个查询条件或满足,条件之间使用“OR”
范例:查询工资不大于1500并且没有奖金的人
语法:NOT(查询条件)
3
范围限制
范例:基本工资大于1500但是小于3000的全部雇员
分析:sal>1500, sal<3000
Between and等于 sal > =1500 and sal <= 3000
范例:查询1981-1-1到1981-12-31号入职的雇员
分析:between and 不仅可以使用在数值之间,也可以用在日期的区间
范例:查询雇员名字叫smith的雇员
在oracle中的查询条件中查询条件的值是区分大小写的
范例:查询雇员编号是7369,7499,7521的雇员编号的具体信息
如果使用之前的做法可以使用OR关键字
实际上,此时指定了查询范围,那么sql可以使用IN关键字
语法: 列名 IN (值1,值2,....)
列名 NOT IN (值1, 值2,...)
其中的值不仅可以是数值类型也可以是字符串
范例:查询雇员姓名是’SMITH’,’ALLEN’,’WARD’的雇员具体信息
4
模糊查询
在常用的站点中经常会有模糊查询,即:输入一个关键字,把符合的内容全部的查询出来,在sql中使用LIKE语句完成。
在LIKE中主要使用以下两种通配符
“%”:可以匹配任意长度的内容
“_”:可以匹配一个长度的内容
范例:查询出所有雇员姓名中第二个字符包含“M”的雇员
在LIKE中如果没有关键字表示查询全部
查询名字中带有“M”的雇员
在oracle中不等号的用法可以有两种形式“<>”和“!=”
范例:查询雇员编号不是7369的雇员信息
对结果集排序
1
排序的语法
在sql中可以使用ORDER BY对查询结果进行排序
语法:SELECT * |列名 FROM 表名 {WEHRE 查询条件} ORDER BY 列名1 ASC|DESC,列名2...ASC|DESC
范例:查询雇员的工资从低到高
分析:ORDER BY 列名 默认的排序规则是升序排列,可以不指定ASC,如果按着降序排列必须指定DESC
如果存在多个排序字段可以用逗号分隔
注意ORDER BY语句要放在sql的最后执行。
2
排序中的空值问题
排序 order by 经验:当排序时存在null时就会产生问题 nulls first , nulls last
--查询雇员的工资从低到高
select * from emp order by sal nulls first;
select * from emp order by sal desc nulls last ;