定义
全称: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);