---------------------------------DML---------------------------------------------------------
一.操纵数据DML
1.数据库操纵语言:执行数据库的添加,更新,删除。DML依据一个集合构成一个被称为事务的逻辑单元
2.添加数据
语法结构:
insert into table[(col...)]
values (value1,value2,...)
3.指定列添加
实列:
insert into departments (department_id , department_name,manager_id,location_id) values(280,'Teaching',180,2000);
4.完全列的添加
insert into departments values
(280,'Teaching',180,2000);
5.插入带空值的行
隐式方法:省去列名
insert into departments
(department_id,department_name)
values(300,'A');
显示方法:在values中指定NUll
insert into departments
(department_id,department_name,
manager_id,location_id)
values(300,'A',null,null);
6.插入日期值
系统时间:sysdate
默认日期格式:21/8月/2019
指定如期格式:to_date('2019-8-21' ,
'yyyy-MM-dd')
7.复制表数据
字段的数据类型必须与复制表中的数据
类型一直
创建一个表:
create table emp(
id number not null,
name varchar2(50),
salary number(8,2),
commission number(2,2)
)
实列:
将employees表中的job_id中含有REP的
工作岗位的数据插入到emp表中
insert into emp(id,name,salary, commission ) select employee_id, last_name,salary,commission_pct from employees where job_id like '%REP%';
或者:
insert into emp select employee_id, last_name,salary,commission_pct from employees where job_id like '%REP%';
8.使用默认值
隐式使用默认值:
insert into emp (id,name) values(302,'kk')
显示使用默认值:
insert into emp values(302,'kk' default,null)
二.更新数据
1.语法结构
update table
set column=value1 ,column=value2
where condition
更新数据时要指明对哪一行数据更新,
否则会对每一行数据都更新
2.实列:
更新emp表中的id为170,将名字改为sb,薪水改为2000
update emp set id=170,name='sb',salary=2000 where id=170;
三.删除表中的数据
1.语法结构
delete [from] table
[where condition]
2.删除行数据
删除表中id为302的员工
delete from emp where id=302
3.删除的条件值可以是另一个表查询的结
果:
实列:
删除表中薪水与IT_PROG岗位相同的薪水
delete from emp where salary in (select distinct salary from employees where job_id='IT_PROG')
4.删除表中的全部数据
如果删除表不加条件,就会删除表中的所
有数据
delete emp;
----------------------------------------------TCL-----------------------------------------------------------------
一.事务
1.指作为单个逻辑工作单元执行的一系列操作,要么完全执行,要么完全不执行
2.事务的特性
原子性:
事务中的操作要么不做,要么全做。
一致性:
一个事务应该保护所有定义在数据上的
不变的属性(例如完整性约束)。在完成
了一个成功的事务时,数据应处于一致
的状态。
隔离性:
一个事务的执行不被其他事务干扰。
持久性:
一个事务提交后,就存入日志文件中。
二.使用事务
commit 事务的提交
rallback 事务回滚
savapoint 设置回滚点
1.事务的类型
(1)显示事务
需要手动的提交事务和回滚,DML中
是所有事务的操作都是显示事务操
作。
(2)隐式事务
数据自动提交,不需要我们做任何处
理,同时也不具备回滚性。DDL,DCL
都是隐式事务操作。
2.事务提交
commit:执行一个DML语句时,此时数据
不会持久的存储在数据文件中,需要使
用commit 提交。
3.事务回滚
rollback:实行DML语句后,可以使用
rollback来撤销当前对表的操作
4.设置回滚点
savepoint 设置回滚点
rollback to 回滚到某个点
---------------------------------------DDL----------------------------------------------------------------------
一.DDL包括:
create,drop,alter,rename
二.创建表
1.语法结构:
create table 表名(
列名1,类型,
列名2,类型,
列名3,类型 )
2.数据库中的表
(1)用户表
由用户创建和维护的表的集合
包含用户的信息
(2)常见的数据字典表
3.用查询创建表
实列:
create table dept80 as select
employee_id,last_name,name,
salary,hire_date from employees e
where e.department_id = 80;
三.修改表
1.添加一个新列
alter table 表名
add(列名 数据类型)
实列:
alter table dept add(salary number
(8,2));
2.修改一个表
(1)修改数据类型
alter table 表名
modify(列名 数据类型)
实列:
alter table dept modify (dname
varchar2(40));
(2)修改默认值
alter table dept modify(salary
number(8,2) default 1000);
alter table dept modify(salary
number(8,2) default null);
(3)修改列名
alter table dept rename column
dname to name;
3.修改表名
rename dept80 to dept90;
四.截断表
删除表中的所有的数据,但是保留表结
构。
在截断表时不能给定条件
截断表时隐式事务。
实列:
truncate table 表名;
五.删除表
drop table 表名
-----------------------------------------创建约束--------------------------------------------------------------------
一.约束类型
非空约束(NOT NULL)
唯一性约束(UNIQUE)
主键约束(PRIMARY KEY)
外键约束(FOREIGN KEY)
用户自定义约束(CHECK)
二.第一约束原则
在创建表时创建和创建表后创建一个约
束,约束名唯一,没有起名字系统自定创
建SYS_Cn,n是个整数
三.not null
1.创建表时创建
直接在数据类型后加农田null
2.创建表后加约束
alter table 表名 modify 列名 not
null;
四.unique
1.建表时直接加unique,也可以起别名
create table dept90(id number
constraint dept90_uk unique,name
varchar2(20));
2.修改约束
alter table 表名 modify(列名
unique);
五.primary key
1.建表是加primary key
create table dept70(id number
constraint dept70_pk primary key);
2.修改主键约束
alter table 表名 modify(列名
constraint 主键名 primary key);
联合主键:
create table 表名(id number,name
varchar2(20),constraint 主键名
primary key(id,name));
六.foreign key
1.创建表是创建
create table 表名(id number,d_id
number,constraint 外键名 foreign
key(关联列) references 关联表(关联列));
2.创建后创建外键
alter table 表名 add constraint
外键名 foreign key(关联列)
references 关联表名(关联列);
七.check
1.创建表时定义 CHECK 约束
示例
create table dept30(id number,salary
number(8,2) constraint dept30_ck
check(salary > 1000));
2.修改表定义 CHECK 约束
示例
alter table dept50 add constraint
dept50_ck check(salary > 1000);