SQL 分类
DCL(Data Control Language 数据控制语言)
DDL(Data Definition Language 数据定义语言)
DML(Data Manipulation Language 数据操纵语言)
DQL(Data Query Language 数据查询语言)
SQL 连接
内连接
1.等值连接
等值连接:在连接中使用等号(=)操作就是等值连接。
SELECT employees.employee_id, employees.last_name, employees.department_id, departments.department_id, departments.location_id FROM employees, departments WHERE employees.department_id = departments.department_id
2.不等值连接
不等值连接:主要用除了等号之外的操作符,比如:<>、>、<、>=、<=、LIKE、IN、BETWEEN…AND
SELECT e.last_name, e.salary, j.grade_level FROM employees e, job_grades j WHERE e.salary BETWEEN j.lowest_sal AND j.highest_sal;
3.自连接
自连接 同一张表
SELECT worker.last_name || ' works for ' || manager.last_name FROM employees worker, employees manager WHERE worker.manager_id = manager.employee_id ;
外连接
1.左外连接
SELECT e.last_name, e.department_id, d.department_name FROM employees e LEFT OUTER JOIN departments d ON (e.department_id = d.department_id) ;
2.右外连接
SELECT e.last_name, e.department_id, d.department_name FROM employees e RIGHT OUTER JOIN departments d ON (e.department_id = d.department_id) ;
3.满外连接
SELECT e.last_name, e.department_id, d.department_name FROM employees e RIGHT OUTER JOIN departments d ON (e.department_id = d.department_id) ;
SQL 函数
单行函数
1.字符函数
2.数字函数
3.日期函数
4.转换函数
5.通用函数
多行函数
创建和管理表
CREATE TABLE 语句
建表方式一:
建表方式二:
ALTER TABLE 语句
TRUNCATE TABLE 语句
数据处理
INSERT 语句语法
单条新增:
批量新增:
insert all into <tableName>[(<table_column1>,<table_column2>...)] values([<column_value1>,<column_value2>...]) [ into <tableName>[(<table_column1>,<table_column2>...)] values([<column_value1>,<column_value2>...])]... select <table_value1>[,<table_value2>...] from dual;
UPDATE 语句语法
DELETE 语句语法
数据库事务
控制事务
约束 CONSTRAINT
什么是约束
表级约束和列级约束
(建表时)定义约束
列级约束
CREATE TABLE [schema.]table (column datatype [DEFAULT expr] [column_constraint], ... [table_constraint][,...]);
column [CONSTRAINT constraint_name] constraint_type,
表级约束
CREATE TABLE employees( employee_id NUMBER(6), first_name VARCHAR2(20), ... job_id VARCHAR2(10) NOT NULL, CONSTRAINT emp_emp_id_pk PRIMARY KEY (EMPLOYEE_ID));
column,... [CONSTRAINT constraint_name] constraint_type (column, ...),
NOT NULL 约束
UNIQUE 约束
PRIMARY KEY 约束
FOREIGN KEY 约束
CHECK 约束
(建表后)添加约束
(建表后)删除约束
(建表后)无效化约束
(建表后)激活约束
(建表后)查询约束
视图
创建试图
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY [CONSTRAINT constraint]];
修改试图
CREATE OR REPLACE VIEW empvu80 (id_number, name, sal, department_id) AS SELECT employee_id, first_name || ' ' || last_name, salary, department_id FROM employees WHERE department_id = 80; View created.
删除试图
DROP VIEW empvu80; View dropped.
屏蔽 DML 操作
CREATE OR REPLACE VIEW empvu10 (employee_number, employee_name, job_title) AS SELECT employee_id, last_name, job_id FROM employees WHERE department_id = 10 WITH READ ONLY; View created.
TOP_N
查询最大的几个值的 Top-N 分析:
SELECT [column_list], ROWNUM FROM (SELECT [column_list] FROM table ORDER BY Top-N_column) WHERE ROWNUM <= N;
注意:
对 ROWNUM 只能使用 < 或 <=, 而用 =, >, >= 都将不能返回任何数据。
查询40-50排名
select * from( select rownum rn,employee_id,salary from( select employee_id,salary,last_name from employees order by salary desc ) )where rn <=50 and rn >40
其它数据库对象
序列(Sequence)
1.创建序列
2.查询序列
查询数据字典视图 USER_SEQUENCES 获取序列定义信息
如果指定NOCACHE 选项,则列LAST_NUMBER 显示序列中下一个有效的值
3.修改序列
ALTER SEQUENCE dept_deptid_seq INCREMENT BY 20 MAXVALUE 999999 NOCACHE NOCYCLE; Sequence altered.
3.删除序列
DROP SEQUENCE dept_deptid_seq; Sequence dropped.
索引(Index)
索引: 一种独立于表的模式对象, 可以存储在与表不同的磁盘或表空间中 索引被删除或损坏, 不会对表产生影响, 其影响的只是查询的速度 索引一旦建立, Oracle 管理系统会对其进行自动维护, 而且由 Oracle 管理系统决定何时使用索引。用户不用在查询语句中指定使用哪个索引 在删除一个表时,所有基于该表的索引会自动被删除 通过指针加速 Oracle 服务器的查询速度 通过快速定位数据的方法,减少磁盘 I/O
1.创建索引