【Oracle】第9天 DDL 语句

定义

全称:Date Defination Language 数据定义语言

CREATE ALTER DROP TRUNCATE RENAME …

数据库对象:数据库的组成部分,常见的对象有:表、索引、视图、图表、默认值、规则、触发器、存储过程、用户、序列等

特点

ddl语句执行完立即生效,不需要提交/回滚操作ddl语句修改的为表的结构,并不修改表中的数据

数据类型

字符型

VARCHAR2(N)
CHAR(N)
LOB:存储大量的二进制和文本数据的一种数据类型。
BLOB:用于存储大量的二进制数据(如图像、视频、音频等)

数值型

NUMBER(P,S)

P 范围为0~38

日期型

DATE
TIMESTAMP 带时分秒的年月日

创建表

CREATE TABLE EMP1 AS (SELECT * FROM EMP);

示例:
创建一张EMP3表

CREATE TABLE EMP3 (
EMPNO NUMBER(9),
ENAME VARCHAR2(2),
MGR NUMBER(4),
HIREDATE DATE);

表创建时列名命名规范

  • 1.名字可以由字符数字以及特殊字符组成
    2.必须以字符开头,不能以数字、特殊字符开头
    3.标识符的长度小于30个英文字符
    4.如果标识符中包含特殊字符需用双引号引起来,关键字同样(不建议使用)
    –在使用时也需加双引号,列名在显示时加不加双引号无区别,但引用时必须加双引号
    5.命名中含有多个英文单词的需用下划线间隔

修改表

修改表的状态

只读:不能继续对表进行DML操作

ALTER TABLE  TABLE_NAME  READ ONLY;

读写:能继续对表进行DML操作

ALTER TABLE TABLE_NAME READ WRITE;

修改表的结构

增加列
ALTER TABLE TABLE_NAME ADD (COLUMN_NAME COLUMN_TYPE...);

注意:

  • 增加多个字段时,要用括号
  • 字段名和数据类型之间不用间隔符,多个字段需用逗号间隔
  • 字段名和数据类型缺一不可
  • 增加的字段名不可重复
修改列
ALTER TABLE TABLE_NAME MODIFY (COLUMN_NAME COLUMN_TYPE...);
重命名列
ALTER TABLE TABLE_NAME RENAME  COLUMN_OLD_NAME  TO COLUMN_NEW_NAME ;

注意:

  • 1)不建议使用重命名,一旦使用重命名,相关的程序都需要做出相应的变更,易报错
  • 2)同一用户下不允许出现重复表名,同一表下不允许出现重复列名
删除列
ALTER TABLE TABLE_NAME DROP (COLUMN_NAME,COLUMN_NAME2..);--删除多列
ALTER TABLE TABLE_NAME DROP COLUMN COLUMN_NAME ;--删除单列

重命名表

ALTER TABLE TABLE_OLD_NAME RENAME TO  TABLE_NEW_NAME;

删除表

DROP TABLE TABLE_NAME ;	
  • 注意:
    1.此举会删除表中数据
    2.此举会删除与该表所有有关的索引和触发器
    3.如果有视图或plsql过程依赖于该表,则这些视图或 PLSQL过程将置于不可用状态
    4.回收为该表分配的存储空间
    5.从数据字典中删除该表的定义
    6.DROP语句后加 CASCADE CONSTRAINTS可以删除所有引用这个表的视图约束触发器等

清空表

清空表只删除数据,但是会保留表结构

TRUNCATE TABLE TABLE_NAME ;

还原表

FLASHBACK TABLE TABLE_NAME TO BEFORE DROP ;

闪回功能要开了归档日志这种物理结构才能用

彻底删除表

DROP table TABLE_NAME PURGE;

有疑惑

查看回收站

SELECT * FROM RECYCLEBIN;

RECYCLEBIN 是一个系统自带的视图对象,其本质是一个虚拟视图

清空回收站

PURGE RECYCLEBIN

练习

1、创建一个表:旅游路线图(TRAVEL_ROUTE)
字段包括:线路ID(ROUTE_ID),VARCHAR2(3)
线路名(TRAVEL_ROUTE_NAME),VARCHAR2(50)
出发地(DEPART),VARCHAR2(50)
目的地(DESTINATION),VARCHAR2(50)
类型(ROUTE_TYPE)【省内,国内,国际】,VARCHAR2(30)
出发时间(DEPARTURE),VARCHAR2(10)
价位(PRICE),NUMBER(7,2)

CREATE TABLE TRAVEL_ROUTE(ROUTE_ID VARCHAR2(3)
,TRAVEL_ROUTE_NAME VARCHAR2(50)
,DEPART VARCHAR2(50)
,DESTINATION VARCHAR2(50)
,ROUTE_TYPE VARCHAR2(30)
,DEPARTURE VARCHAR2(10)
,PRICE NUMBER(7,2));

2、将该表重命名为:TRAVEL_ROUTES

ALTER TABLE TRAVEL_ROUTES RENAME TO TRAVEL_ROUTE ;

3、将路线名字段重命名为:ROUTE_NAME

ALTER TABLE TRAVEL_ROUTES RENAME TRAVEL_ROUTE_NAME TO ROUTE_NAME ;

4、将出发时间改为CHAR(10)类型

ALTER TABLE TRAVEL_ROUTES MODIFY DEPARTURE VARCHAR2(10);

5、将价位改为字符串形式(VARCHAR2(7))

ALTER TABLE TRAVEL_ROUTES MODIFY PRICE VARCHAR2(7);

6、现有一青岛的旅行社开通了以下三条旅游路线,请根据宣传内容将路线信息更新到旅游路线图中
R01路线:泰安方特一日游 青岛-泰安 800/人
12月24号平安夜下午出发,晚上参加方特平安夜活动,25号在场内游玩 当日晚六点门口集合返回
R02路线:丽江古城跨年夜 青岛-丽江 3000/人
12月30日当晚乘飞机前往昆明,乘大巴前往丽江,31号晚参加丽江古城跨年活动,2号晚乘飞机返回
R03路线:马尔代夫蜜月旅拍 青岛-马尔代夫 25000/人
1月21号乘飞机前往马尔代夫,24号晚参加当地华人组织的除夕晚会,其他时间在当地游玩及照片拍摄,27号乘飞机返回

INSERT INTO TRAVEL_ROUTES VALUES (R01,'泰安方特一日游','青岛','泰安','省内','12/24','800.00');
INSERT INTO TRAVEL_ROUTES VALUES (R02,'丽江古城跨年夜','青岛','丽江','国内','12/30','3000.00');
INSERT INTO TRAVEL_ROUTES VALUES (R03,'马尔代夫蜜月旅拍','青岛','泰安','国际','01/21','25000.00');

7、将价位的字节长度改为10

ALTER TABLE TRAVEL_ROUTES MODIFY PRICE NUMBER(10,2)

8、将价位统一调整为带币种的格式(例如¥1000)***

UPDATE TABLE TRAVEL_ROUTES SET PRICE =TRIM(TO_CHAR(PRICE,'L99999.99'));
COMMIT;
UPDATE TABLE TRAVEL_ROUTES SET PRICE ='¥'||PRICE;
COMMIT;

9、新增一列:每批次最大人数(MAX_COUNT,NUMBER类型),并插入相应人数(自己设定)

ALTER TABLE TRAVEL_ROUTES ADD COLUMN MAX_COUNT NUMBER(7);
UPDATE TABLE TRAVEL_ROUTES(MAX_COUNT) VALUES (30);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值