一、数据定义语句DDL
(一)、数据库表的创建create table
1.语法结构
create table 表名
(
列名1 数据类型1 [,列名2 数据类型2 ......]
);
2.oracle常用数据类型
- 字符类型
char :固定长度字符串,列长度可以使1~2000个字节
varchar2 :可变长度字符串,最大长度是4000字节 - 数值类型
声明语法:NUMBER[(P[,S]] P表示精度,S表示小数位数,最高精度是38位,可以存储整数、浮点数等数值类型。 - 日期时间类型
主要类型:DATE - LOB类型
CLOB:可以存储大量字符数据
BLOB:可以存储较大的二进制对象,如图像、视频等
示例:
CREATE TABLE student(
sid NUMBER(8,0),
name VARCHAR2(20),
sex char(2),
birthday DATE,
address VARCHAR2(50)
);
#用作外键的主表
create table department(
depid VARCHAR2(20) primary key,
depname varchar2(2));
(二)、数据库表的修改
1.表列修改 alter table
1)增加列 add
alter table 表名 add 新增列名 数据类型;
2)删除列 drop column
alter table 表名 drop column 列名;
3)修改列数据类型 modify
alter table 表名 modify 列名 新数据类型;
4)修改列名 rename column…to…
alter table 表名 rename column 列名 to 新列名;
2.表名修改 rename
rename 表名 to 新表名;
(三)、数据库表的删除
1.删除表数据保留表结构(截断表)truncate
truncate table 表名;
2.删除表数据和表结构
drop table 表名;
(四)、数据库表的约束
1.约束的类型
- 主键约束 primary key
唯一确定表中每一条记录的标识符,不能为null,不能重复,只能有一个主键,但是可以由多个列构成 - 唯一性约束 unique
指定的一个或者多个列的组合值具有唯一性,防止重复的值。唯一性约束的列允许有空值,一个表中允许多个唯一性约束,可以把唯一性约束定义在多个列上。 - 默认约束 default
设置默认值 - 非空约束 not null
保证插入或更新数据时,该列不能为null - 检查约束 check
设置检查条件,设置输入值 - 外部键约束 foreign key
用于建立和加强两个表数据之间的连接的一列或多列,外键约束是唯一涉及两个表关系的约束
2.添加约束
1)新建表时添加
A.列级约束
语法:
CREATE TABLE student2(
列名1 数据类型1 约束类型1
[,列名2 数据类型2 约束类型2......]
);
示例:
CREATE TABLE student2(
sid NUMBER(8,0) primary key,
name VARCHAR2(20) [constraint 约束名] not null,
sex char(2) check(sex='男' or sex='女'),
birthday DATE,
address VARCHAR2(50) default '中国',
cardid VARCHAR2(18) unique,
depid VARCHAR2(20) references department(depid)
);
B.表级约束
语法:
CREATE TABLE student2(
列名1 数据类型1
[,列名2 数据类型2 ......]
constraint 约束名1 约束类型1 (列名1)
[,constraint 约束名2 约束类型2 (列名2)......]
);
示例:
CREATE TABLE student2(
sid NUMBER(8,0),
name VARCHAR2(20),
sex char(2),
birthday DATE,
address VARCHAR2(50),
cardid VARCHAR2(18),
depid VARCHAR2(20),
constraint pk primary key(sid),
constraint uq primary key(cardid),
constraint ch check(sex='男' or sex='女'),
constraint fk foreign key(depid) references department(depid) on delete cascade
);
2)修改表时添加
语法:
alter table 表名 add constraint 约束名 约束类型(列名);
#针对非空约束:
alter table 表名 modify (列名 数据类型 not null);
#针对默认约束
alter table 表名 modify 列名 default 默认值;
示例:
alter table student add constraint pk primary key(sid);
alter table student modify (name VARCHAR2(20) not null);
3.删除约束
1)禁用和启用约束
语法:
alter table 表名 disable constraint 约束名;
alter table 表名 enable constraint 约束名;
示例:
alter table student disable constraint pk;
alter table student enable constraint pk;
2)彻底删除约束
语法:
alter table 表名 drop 约束名;
#针对主键是唯一的,可以直接指明删除主键
alter table 表名 drop primary key;
#针对非空约束
alter table 表名 modify 列名 数据类型 null;
#针对默认约束
alter table 表名 modify 列名 default null;
示例:
alter table student drop constraint pk;
二、数据操作语言DML
(一)、添加数据insert
语法结构:
insert into 表名 [(列1,列2,...列n)] values (值1,值2,...值n);
#示例
insert into student values (12345678,张三,男,1989-10-20,default,454268477895524458,2222);
(二)、查询数据select
语法结构:
select *|column[,...] from 表名;
(三)、修改数据update
update table set 列名1=值1 [列名2=值2,...] [where 条件];
(四)、删除数据delete
delete from table [where 条件];
三、事务控制语言TCL
(一)、提交事务
commit;
当执行了commit语句后,会确认事务的变化,结束事务、删除保存点,释放锁。
(二)、回滚事务
rollback;#回滚全部事务
rollabck to 保存点名;
rollback只能对未提交的数据进行撤销,已经commit的数据是无法撤销的
(三)、保存点
savepoint 保存点名;