【Oracle 基础】数据库表的操作

一、数据定义语句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 保存点名;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章