Oracle数据库基础
Oracle数据库
sql分类:
数据操纵语言(DML)
SELECT(查询)
INSERT(插入数据)
UPDATE(更新数据)
DELETE(删除数据)
数据定义语言(DDL)
CREATE(创建)
ALTER(更改)
DROP(删除)
RENAME(重命名)
TRUNCATE(截取)
数据控制语言(DCL) GRANT(比如说授权远程连接、权限授权等等)
简单查询
基本语法
第一种形式
②SELECT * ( * 表示查询所有的字段信息)
①FROM 数据来源(可以是数据表)
执行顺序:先执行FROM子句,再执行SELECT子句。
第二种形式
SELECT 字段名1,字段名2,字段名3...字段名n
FROM 数据来源
DISTINCT关键字:去掉重复信息,只有查询的所有字段的内容都相同才会认为是重复
AS别名:在SELECT子句中为查询的字段起别名,例如:
empno AS 编号,而且AS可以省略,例如:ename 姓名
限定查询
在开发中都是有限定查询的,如果开发一些比较敏感的系统你没有限定查询,会有承担法律责任的风险。
基本语法
③SELECT *
①FROM 数据来源
②WHERE 过滤条件(WHERE 子句是对数据进行条件判断,选择满足条件的数据)
常用的关键字:
BETWEEN AND:在。。。和。。。之间(的范围),小的数字或者日期放在AND的前面。
UNION ALL:将两个查询的结果并到一起显示,用来代替OR条件查询,避免索引失效(后面索引的知识点)。
IS NOT NULL: 不为空
IS NULL: 为空
IN(num1,num2,num3):含有num1、num2、num3
NOT IN(num1,num2,num3): 不含有num1、num2、num3
<> :不等于的意思, 等价于 !=
UNION ALL:将两个查询的结果并到一起显示,用来代替OR条件查询,避免索引失效(后面索引的知识点)。
IS NOT NULL: 不为空
IS NULL: 为空
IN(num1,num2,num3):含有num1、num2、num3
NOT IN(num1,num2,num3): 不含有num1、num2、num3
<> :不等于的意思, 等价于 !=
模糊查询
1、_ :表示任意一位字符2、%:表示任意位数的任意字符
3、要实现模糊查询需要使用到关键字"LIKE"
基本语法:
③SELECT *
①FROM 数据来源
②WHERE 模糊查询的字段 LIKE 模糊查询的关键字
(注意:模糊查询要在WHERE子句中去使用)
③SELECT *
①FROM 数据来源
②WHERE 模糊查询的字段 LIKE 模糊查询的关键字
(注意:模糊查询要在WHERE子句中去使用)
排序查询
将查询的结果按照指定的字段进行升序或者降序显示。排序必须是数字或者日期才有意义。ORDER BY 关键字: 排序指定的字段
基本语法
③SELECT *
①FROM 数据来源
②WHERE 过滤条件
④ORDER BY 排序的字段 ASC | DESC (如果排序的方式没写则默认升序)
可以在ORDER BY 子句中使用SELECT子句的别名,证明了SELECT子句在ORDER BY 子句之前执行。
③SELECT *
①FROM 数据来源
②WHERE 过滤条件
④ORDER BY 排序的字段 ASC | DESC (如果排序的方式没写则默认升序)
可以在ORDER BY 子句中使用SELECT子句的别名,证明了SELECT子句在ORDER BY 子句之前执行。
多表查询(又叫连接查询)
③SELECT *①FROM 数据来源,数据来源...
②WHERE 过滤条件
④ORDER BY 排序的字段 ASC | DESC
笛卡尔积:多表查询出的数据量是两张表中的数据量的乘积。
消除两张数据表的笛卡尔积
消除两张数据表的笛卡尔积
SELECT*
FROM emp,dept
WHERE emp.deptno=dept.deptno;
注意:当查询的数据量较大时,不建议使用连接查询(多表查询),产生过大的笛卡尔积会导致性能耗费。
别名的使用
SELECT *
FROM emp e,dept d
WHERE e.deptno=d.deptno;
别名的作用:简化sql的复杂,让其在引用的时候变得很简洁。
WHERE子句中引用FROM子句中产生的别名,证明了WHERE子句在FROM子句的后面执行。
SELECT *
FROM emp e,dept d
WHERE e.deptno=d.deptno;
别名的作用:简化sql的复杂,让其在引用的时候变得很简洁。
WHERE子句中引用FROM子句中产生的别名,证明了WHERE子句在FROM子句的后面执行。
总结:
多表查询就是从多张数据表中查询数据多表查询又叫做连接查询
多表查询会产生笛卡尔积,在数据量大的时候不要使用多表查询。
连接查询
多张数据表进行连接然后查询数据,连接查询又分为内连接查询和外连接查询。
多张数据表进行连接然后查询数据,连接查询又分为内连接查询和外连接查询。
内连接查询:只有满足条件的数据才会被显示
外连接查询:可以控制不满足条件的数据是否显示
左外连接查询:可以让左表不满足条件的数据也显示
右外连接查询:可以让右表不满足条件的数据也显示
全外连接查询:可以让左表和右表不满足条件的数据都能显示
为emp数据表增加一条数据
INSERT INTO emp(empno,ename,job,sal) VALUES(1001,'班长','清洁工',3000.00);
INSERT INTO emp(empno,ename,job,sal) VALUES(1001,'班长','清洁工',3000.00);
总结:
1、内连接查询只显示满足过滤条件的数据
2、外连接查询可以控制不满足过滤条件的数据是否显示
外连接查询分为:左外连接查询
右外连接查询
全外连接查询
3、可以在过滤条件中使用“(+)”来实现左或者右外连接查询,但是这种方式是oracle特有的方式,在mysql不能使用
2、外连接查询可以控制不满足过滤条件的数据是否显示
外连接查询分为:左外连接查询
右外连接查询
全外连接查询
3、可以在过滤条件中使用“(+)”来实现左或者右外连接查询,但是这种方式是oracle特有的方式,在mysql不能使用