一、DML(数据操纵语言)
DML(Data Manipulation Language – 数据操纵语言) 可以在下列条件下执行:
–向表中插入数据
–修改现存数据
–删除现存数据
事务是由完成若干项工作的DML语句组成的
1.insert语句
使用 INSERT 语句向表中插入数据
<1>方式一:一次插入一条数据
--建立一张空表
create table emp1
as
select employee_id,last_name,hire_date,salary
from employees
where 1 = 2
--插入数据
insert into emp1
values(1001,'AA',sysdate,10000)
insert into emp1
values(1002,'BB',to_date('1998-12-21','yyyy-mm-dd'),20000)
<2>方式二:从其它表中拷贝数据
insert into emp1(employee_id,hire_date,last_name,salary)
select employee_id,hire_date,last_name,salary
from employees
where department_id = 80
2.update语句
使用 UPDATE 语句更新(修改)数据
update emp1
set salary = 12000
where employee_id = 179
如果省略 WHERE 子句,则表中的所有数据都将被更新
3.delete语句
使用 DELETE 语句从表中删除数据
--从employees1表中删除部门名称中含Public字符的部门id
delete from employees1
where department_id = (
select department_id
from departments
where department_name like '%Public%'
)
使用 WHERE 子句删除指定的记录
如果省略 WHERE 子句,则表中的全部数据将被删除
4.数据库事务
事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。
以第一个 DML 语句的执行作为开始
以下面的其中之一作为结束:
–COMMIT 或 ROLLBACK 语句
–DDL 语句(自动提交)
–用户会话正常结束
–系统异常终止
使用 SAVEPOINT 语句在当前事务中创建保存点。
使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点
5.总结
增
insert…into…
values…
insert…into…
select…from…where…
删
delete from…
where…
改
update…
set…
where…
查
二、约束constraint
约束是表级的强制规定
1.约束分类
有以下五种约束:
–非空约束 NOT NULL
–唯一约束 UNIQUE
–主键 PRIMARY KEY
–外键 FOREIGN KEY
–定义每一行必须满足的条件 CHECK
create table emp3(
--列级约束
id number(10) constraint emp3_id_uk unique,
name varchar2(20) constraint emp3_name_nn not null,
email varchar2(20),
salary number(10,2),
--表级约束
constraint emp3_email_uk unique(email)
)
非空约束只能定义在列上
唯一约束允许出现多个空值
主键约束:唯一确定一行记录。表明此属性:非空,唯一
--定义外键约束
create table emp3(
emp_id number(6),
name varchar2(25),
dept_id number(4) constraint emp_dept_fk references departments(department_id)))
级联删除 ON DELETE CASCADE:当父表中的列被删除时,子表中相对应的列也被删除
级联置空 ON DELETE SET NULL:子表中相应的列置空
外键(foreign key)引用的列起码要有一个唯一约束
2.ALTER TABLE 语句
使用 ALTER TABLE 语句:
–添加或删除约束,但是不能修改约束
–有效化或无效化约束
–添加 NOT NULL 约束要使用 MODIFY 语句
--向表emp2的id列中添加PRIMARY KEY约束(my_emp_id_pk)
alter table emp2
add constraint my_emp_id_pk primary key(id)
--向表emp2中添加列dept_id,并在其中定义FOREIGN KEY约束,与之相关联的列是dept2表中的id列。
alter table emp2
add(dept_id number(6) constraint emp2_dept_id_fk references dept2(id))
添加约束 add constraint
删除约束 drop constraint
无效化约束 disable constraint
激活约束 enable constraint
3.查询约束
--查询数据字典视图 USER_CONSTRAINTS
SELECT constraint_name,constraint_type,search_condition
FROM user_constraints
WHERE table_name = 'EMPLOYEES'
4.查询定义约束的列
--查询约束名以及约束定义的列名
SELECT constraint_name, column_name
FROM user_cons_columns
WHERE table_name = 'EMPLOYEES'