Oracle—“数据库常用指令汇总” (持续更新)

前言:快期末了!整理一波Oracle数据库常用指令,可能会有遗漏,有空我会慢慢补全。

一、建表

-1.直接建表
CREATE TABLE student1(
       sname VARCHAR2(20) NOT NULL,
       sno NUMBER(3) NOT NULL,
       sage NUMBER(2) NOT NULL,
       shome VARCHAR2(20) NOT NULL  
);
-------------------------------------------------------------------------------------
-2.使用子查询建表
CREATE TABLE emp_new(name,job,salary,hiredate)
AS
SELECT ename,job,sal,hiredate
FROM emp
WHERE deptno=30;

二、修改表

-1.修改表名
RENAME emp_new TO emp_neweat;
-------------------------------------------------------------------------------------
-2.修改列(数据类型、长度、缺省值)
ALTER TABLE student1 MODIFY(sname VARCHAR2(30));
-------------------------------------------------------------------------------------
-3.增加列
ALTER TABLE student1 ADD(sex VARCHAR2(20));
-------------------------------------------------------------------------------------
-4.删除列
ALTER TABLE student1 DROP(sex);
-------------------------------------------------------------------------------------
-5.添加注释
COMMENT ON TABLE department IS '部门信息表';

三、删除表

-1.drop table(表结构和数据均删除)
DROP TABLE student1;
-------------------------------------------------------------------------------------
-2.truncate table(只删除表中数据)
TRUNCATE TABLE student1;

四、数据查询

-1.列查询
SELECT * FROM emp;
-------------------------------------------------------------------------------------
-2.条件查询
SELECT sal FROM emp where empno=30;
-------------------------------------------------------------------------------------
-3.联合查询(从两个没有任何关联的表中查询数据,并将结果集中进行显示)
SELECT ename FROM emp
UNION SELECT dname FROM dept;
-------------------------------------------------------------------------------------
-4.模糊查询(不确切了解查询条件,只了解查询条件一部分 关键字:LIKE/*
 _ :可以替换一个字符
 % :可以替换多个字符
*/
SELECT *FROM emp WHERE ename LIKE'A%';
-------------------------------------------------------------------------------------
-5.查询NULL(查询null数据使用“=”是不行的,使用 is null/is not null)
SELECT * FROM emp WHERE ename IS NULL;
-------------------------------------------------------------------------------------
-6.排序(关键字order byASC表示升序 DESC表示降序) 
SELECT ename FROM emp WHERE deptno=20 ORDER BY ASC;

五、多表查询

-1.内连接(有显式和隐式之分)
-------------------------------------------------------------------------------------1)内连接查询(显式内连接)
SELECT e.ename,e,job,d,dname 
FROM emp e INNER JOIN dept d
ON e.emp = d.dept
WHERE d.dname= 'RESEARCH'

-注意(INNER JOIN 用于连接两个表,ON用于指定连接条件)
-------------------------------------------------------------------------------------2)相等连接(隐式内连接)
SELECT e.ename,e.job,d.dname
FROM emp e,dept d
WHERE e.ename=d.dname AND deptno='RESEARCH'

-注意(这里的WHERE与显式内连接中的不同,不但用于指定普通条件,还可以指定连接条件(同上面的ON))
-------------------------------------------------------------------------------------
如果查询的表超过两个,建议使用显式内连接,这样语句可读性比较强。

-2.外连接(包括:左外链接,右外连接,完整外连接)
-------------------------------------------------------------------------------------1)左外链接
SELECT e.ename,e.job,d.dname
FROM emp e (左表) LEFT JOIN dept d (右表)
ON e.deptno=d.deptno;
-------------------------------------------------------------------------------------2)右外连接
SELECT e.ename,e.job,d.dname
FROM emp e (左表) RIGHT JOIN dept d (右表)
ON e.deptno=d.deptno;
-------------------------------------------------------------------------------------3)完整外连接(左右连接的综合)
SELECT e.ename,e.job,d.dname
FROM emp e FULL JOIN dept d
ON e.deptno=d.deptno;

你可能感兴趣的:(Oracle数据库,数据库,sql)