SQL数据操作和查询

时间:2021-03-02 20:25:11

  1、Oracle中可以把查询的结果根据结果集中的表结构和数据形成一张新表。

  CREATE TABLE 表名 AS SELECT语句,例如:

  CREATE TABLE INFOS1 AS SELECT * FROM INFOS;

  使用上面命令创建的新表中,不存在任何约束,并且把查询的数据一起插入到新表中。如果只复制表结构,只需使查询的条件不成立(比如where 1=2),就不会查询从出任何数据,从而复制一个表结构。

  2、INSERT 向表中插入一个结果集

  INSERT INTO INFOS2 SELECT * FROM INFOS;

  在这种语法下,要求结果集中每一列的数据类型必须与表中的每一列的数据类型一致,结果集中的列的数量与表中的列的数量一致

  3、TRUNCATE

  在数据库操作中, TRUNCATE命令(是一个DDL命令)可以把表中的所有数据一次性全部删除,语法是:

  TRUNCATE TABLE 表名

  TRUNCATE和DELETE都能把表中的数据全部删除,他们的区别是:

  ①. TRUNCATE是DDL命令,删除的数据不能恢复;DELETE命令是DML命令,删除后的数据可以通过日志文件恢复。

  ②. 如果一个表中数据记录很多,TRUNCATE相对DELETE速度快。

  由于TRUNCATE命令比较危险,因此在实际开发中,TRUNCATE命令慎用。

  4、算数运算

  Oracle中的算术运算符,没有C#中的算术运算符丰富,只有+、-、*、/四个,其中除号(/)的结果是浮点数。求余运算只能借助函数:MOD(x,y):返回x除以y的余数。

  5、字符串连接操作符(||)

  SELECT (ENAME || 'is a ' || JOB) AS "Employee Details"  FROM EMP WHERE SAL>2000;

  6、消除重复行

  在Oracle查询中结果中,可能出现若干行相同的情况,那么可以使用DISTINCT消除重复行。具体的用法如示例:

  SELECT DISTINCT 列名 FROM 表名;

  7、连接查询

  在SQL Server中已经学习过内联接(inner join)、外联接(outer join),外联接又分为左外联接(left outer join)和右外联接(right outer join)。Oracle中对两个表或者若干表之间的外联接用(+)表示。

  ① 内联接:

  SELECT e.ENAME,e.JOB,e.SAL,d.DNAME FROM emp e,dept d WHERE e.deptno=d.deptno AND e.SAL>2000;

  SELECT e.ENAME,e.JOB,e.SAL,d.DNAME FROM EMP e INNER JOIN DEPT d ON e.DEPTNO=d.DEPTNO WHERE e.SAL>2000

  ② 外联接

  (+):是Oracle专用的联接符,在条件中出现在左边指右外联接,出现在右边指左外联接。如:

  SELECT e.ENAME,e.JOB,e.SAL,d.DNAME  FROM EMP e ,DEPT d  WHERE e.DEPTNO(+)=d.DEPTNO

  SELECT e.ENAME,e.JOB,e.SAL,d.DNAME  FROM EMP e RIGHT OUTER JOIN DEPT d ON e.DEPTNO=d.DEPTNO