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
<>  :不等于的意思, 等价于  !=
 

模糊查询

1、_ :表示任意一位字符
2、%:表示任意位数的任意字符
3、要实现模糊查询需要使用到关键字"LIKE"
 
基本语法:
③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
 
笛卡尔积:多表查询出的数据量是两张表中的数据量的乘积。
      消除两张数据表的笛卡尔积

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子句的后面执行。

总结:

多表查询就是从多张数据表中查询数据
多表查询又叫做连接查询
多表查询会产生笛卡尔积,在数据量大的时候不要使用多表查询。
 
连接查询
多张数据表进行连接然后查询数据,连接查询又分为内连接查询和外连接查询。

内连接查询:只有满足条件的数据才会被显示
外连接查询:可以控制不满足条件的数据是否显示
 左外连接查询:可以让左表不满足条件的数据也显示
 右外连接查询:可以让右表不满足条件的数据也显示
 全外连接查询:可以让左表和右表不满足条件的数据都能显示
 
为emp数据表增加一条数据
INSERT INTO emp(empno,ename,job,sal) VALUES(1001,'班长','清洁工',3000.00);
 
总结:
1、内连接查询只显示满足过滤条件的数据
2、外连接查询可以控制不满足过滤条件的数据是否显示
 外连接查询分为:左外连接查询
   右外连接查询
   全外连接查询
3、可以在过滤条件中使用“(+)”来实现左或者右外连接查询,但是这种方式是oracle特有的方式,在mysql不能使用
 
原文地址:https://www.cnblogs.com/wdss/p/10719684.html