数据处理
其他DML语句:
INSERT ①INSERT INTO table [(column [,column…])] VALUES (value [,value…]); 使用这种语法一次只能向表中插入一条数据。 不能使用这种方式同时向表中插入多条数据 ②通过创建脚本的方式 如:INSERT INTO departments (department_id,department_name,location_id) VALUES (&department_id,‘&department_name’,&location); 和C语言中取地址符类似 ③INSERT INTO sales_reps(id,name,salary,commission_pct) SELECT employee_id,last_name,commission_pct FROM employees WHERE job_id LIKE ‘%REP%’; 从其他表中拷贝数据,可以根据WHERE子句来确定是否插入数据,以及插入什么数据
UPDATE UPDATE table SET column = value [,column = value,…] [WHERE condition]; 可以一次更新多条数据:同样的用WHERE子句来控制 同样的也可以在UPDATE语句中使用子查询
DELETE DELETE FROM table [WHERE condition]; 同样的也可以在DELETE语句中使用子查询
- 事务控制
事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。 组成: 一个或多个DML 语句 一个 DDL(Data Definition Language – 数据定义语言) 语句 执行: 以第一个 DML 语句的执行作为开始 以下面的其中之一作为结束: COMMIT 或 ROLLBACK 语句 DDL 语句(自动提交) 用户会话正常结束 系统异常终止 事务控制: COMMIT ROLLBACK SAVEPOINT(ROLLBACK TO SAVEPOINT)
约束
约束是一种规定 **NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK** 创建表的同时可以创建约束 创建表后可以修改约束
可以在表级或列级定义约束 可以通过数据字典来查看约束 表级约束和列级约束:
-
作用范围: ①列级约束只能作用在一个列上 column [CONSTRAINT constraint_name] constraint_type, ②表级约束可以作用在多个列上(当然表级约束也 可以作用在一个列上) column,… [CONSTRAINT constraint_name] constraint_type (column,…),
定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是单独定义。
- 非空(not null) 约束只能定义在列上
UNIQUE : 唯一约束,允许出现多个空值:NULL。
FOREIGN KEY: FOREIGN KEY: 在表级指定子表中的列 REFERENCES: 标示在父表中的列 ON DELETE CASCADE(级联删除): 当父表中的列被删除时,子表中相对应的列也被删除 ON DELETE SET NULL(级联置空): 子表中相应的列置空
CHECK: 可以理解为自定义约束
约束的添加和删除
- 添加约束
ALTER TABLE table ADD [CONSTRAINT constraint] type (column); 添加或删除约束,但是不能修改约束 有效化或无效化约束 添加 NOT NULL 约束要使用 MODIFY 语句
- 删除约束
ALTER TABLE employees DROP CONSTRAINT emp_manager_fk;
- 无效化约束
ALTER TABLE employees DISABLE CONSTRAINT emp_emp_id_pk; Table altered.
- 激活约束
ALTER TABLE employees ENABLE CONSTRAINT emp_emp_id_pk;
查询约束
- 查询约束:
查询数据字典视图 USER_CONSTRAINTS SELECT constraint_name,constraint_type, search_condition FROM user_constraints WHERE table_name = ‘EMPLOYEES’;
- 查询定义约束的列:
查询数据字典视图 USER_CONS_COLUMNS SELECT constraint_name,column_name FROM user_cons_columns WHERE table_name = ‘EMPLOYEES’;
练习的话,我会单独写一篇。因为学sql主要就是的练,最难的部分就是子查询,需要多练,这里给大家说一下我认为比较高效的联系方法,就是一定要注意书写格式,例如:
SELECT d.*,(SELECT avg(salary) FROM employees WHERE department_id = d.department_id) FROM departments d WHERE department_id = ( SELECT department_id FROM employees GROUP BY department_id HAVING avg(salary) = ( SELECT min(avg(salary)) FROM employees GROUP BY department_id ) )
这样的书写格式方便分析
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|