Oracle——6.创建表操作

目录

事务

创建表

命名规则

语法

查看表

数据类型

备份

修改表列信息

ALERT TABLE语句

删除表及结构

修改表名

清空这个表中的数据

练习

约束

建表之后的操作


事务

  • 事务是最小的工作单元,作为一个整体进行工作
  • 保证事务的整体成功或失败,称为事务控制
  • Oracle通过事务确保数据的一致性
  • 一个数据库事务包括:

            一系列DML(数据操作语言)语句(用commit提交);

        或 一个DDL(数据定义语言)语句(自动提交);

        或 一个DCL(数据控制语言)语句(自动提交);

  • 用于事务控制的语句有:
  1. commit——提交并结束事务处理
  2. rollback——撤销事务中已完成的工作(回滚)
  3. savepoint——标记事务中可以回滚的点
update emp set sal=sal-1000 where ename='SMITH';
SAVEPOINT s1;  -- 设置保存点
update emp set sal=sal+1000 where ename='SCOTT';
-- 提交或回滚 只能执行一遍,只要执行其中的一个,那么 其他的就不能执行了
rollback to s1; -- 回滚
commit;      -- 提交

-- 事务,把一个工作模块当做是一个整体来进行处理,一旦这个工作模块出现了问题,那么之前执行的语句也会恢复回来
-- 如果没有错误,会提示你 是否提交 或是否回滚

创建表

命名规则

表名和列名:

  • 必须以字母开头
  • 必须在1-30个字符之间
  • 必须只能包含A-Z,a-z,0-9,_,$,和#
  • 必须不能和用户定义的其他对象重名
  • 必须不能是Oracle的关键字

语法

create table 表名(
列名 类型,
列名1 类型,
列名2 类型
)

-- 创建表
-- 语法
-- create table 表名(
-- 列名 类型,
-- 列名1 类型,
-- 列名2 类型
-- )

create table db001(
dbno number,
dbname varchar2(20),
dbsex varchar2(2)
)
-- 创建表时,设置默认值
create table db002(
dbno number,
dbname varchar2(20),
dbsex varchar2(2) default '男'
)
-- 创建表时,设置非空
create table db003(
dbno number not null,
dbname varchar2(20) not null,
dbsex varchar2(2) default '男'
)

查看表

-- 查看该用户的所有表
select * from user_tables
-- 查看用户定义的各种数据库对象
select distinct object_type
from user_objects;
-- 查看用户定义的表,视图,同义词和序列
select * from user_catalog;

数据类型

数据类型描述
VARCHAR2(size)可变长字符数据
CHAR(size)定长字符数据
NUMBER(p,s)可变长数值数据
DATE日期型数据
LONG可变长字符数据,最大可达到2GB
CLOB字符数据,最大可达到4GB
RAW and LONG RAW原始二进制数据
BLOB二进制数据,最大可达到4GB
BFILE存储外部文件的二进制数据,最大可达到4G
ROWID行地址

备份

-- 备份 表数据
-- 但是有问题,就是这个表只能被执行一遍
create table db_tmp
as
select * from emp

create db_tmp1
as
select ename,sal from emp

-- 只想要表的结构,不要数据
create table db_tmp2
as
select * from emp where 1<>1

修改表列信息

ALERT TABLE语句

使用ALERT TABLE语句可以:

  • 追加新的列
  • 修改现有的列
  • 为新追加的列定义默认值
  • 删除一个列
-----------------修改表列信息--------------------
-- alter 表示 修改的意思
-- alert table 表名
-- 添加列 add 列名 类型
alert table db_tmp1 add empsex varchar2(2)
-- 修改表中的列信息 modify 列名 类型 默认信息(default ‘男’)
alert table db_tmp1 modify empsex number
-- drop column 列名 表示 删除某个列
alert table db_tmp1 drop column empage
-- 修改列的名字 rename column 旧名 to 新名;
alert table db_tmp1 rename column empsex to sex

删除表及结构

----------------删除表及结构(这个表就没了)-----------------
-- drop 删除
drop table db_tmp1

修改表名

------------------修改表名-------------------------
rename DB_tmp1 to new_tmp

清空这个表中的数据

----------------清空这个表中的数据--------------------
truncate table new_tmp
-- drop,truncate,delete 他们三个的区别是什么?
-- drop:表示 删除表结果(这个表就没有了)
-- truncate和delete都是删除数据,那么不同点是
-- 1.delete可以添加进行删除某条数据,truncate不能添加条件,一旦执行会删除 表中所有数据
-- 2.delete可以使用事务进行回滚提交等操作,truncate没有回滚功能
-- 3.truncate的删除数据,效率高,速度快;delete效率低点,但是针对某条进行删除
-- 4.truncate执行之后,改变会恢复到初试状态;delete不会,还会保留里面的一些信息

练习

1.创建表date_test,包含列d,类型为date。试向date_test表中插入两条记录,一条当前系统日期记录,一条记录为“1998-08-18”。
2.创建与dept表相同表结构的表dtest,将dept表中部门编号在40之前的信息插入该表
3.创建与emp表结构相同的表emp1,并将其部门编号为前30号的员工信息复制到emp1表
4.试为学生表student增加一列学生性别gender 默认值“女”
5.试修改学生姓名列数据类型为定长字符型10位。


约束

约束是表级的强制规定

约束放置在表中删除有关联关系的数据

有以下五种约束:

  • NOT NULL
  • UNIQUE
  • PRIMARY KEY
  • FOREIGN KEY
  • CHECK
-------------------------约束-------------------------
-- 唯一约束
create table con001(
cno number,
cname varchar2(20) not null,
csex varchar2(2),
-- constraint 约束名 unique(什么约束)(列)
constraint cname_uk unique(cname)
)

-- 主键约束
create table con002(
cno number,
cname varchar2(20) not null,
csex varchar2(2),
-- 主键约束
constraint cno_pk primary key(cno)
)

-- 外键约束
create table con003(
cno number,
cname varchar2(20) not null,
csex varchar2(2),
-- 约束   约束名 本表关联 本表字段    关联主表   主表名 主表列
constraint cno_fk foreign key (cno) references   emp  (empno)
)

-- 检查约束
create table con004(
cno number,
cname varchar2(20) not null,
csex varchar2(2),

constraint csex_CK check(csex='男' or csex='女')
)

建表之后的操作

-- 表已经创建完成了,之后要添加约束
alert table con004
add constraint cname1_uk unique(cname)
-- 删除约束
alert table con004
drop constraint cname1_uk
-- 查询约束
select * from user_constraints
-- 可以通过这个表来找到表名,列名,约束名
select * from user_cons_columns where table_name='con003'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值