DDL语句

全称:Data Definition Language 数据定义语言

是SQL中集中负责数据结构定义与数据库对象定义的语言,
由create alter drop truncate rename…

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

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

DDL与DML区别:

1.ddl语句修改表的结构,不对表中数据做修改
2.dml语句修改的是表中的数据,不对表的结构做修改
3.DDL语句执行完后没有提交回滚操作
DML语句执行完后有提交回滚操作

一:数据类型

字符型:
CHAR(N):声明该列只能存储长度为N 的字符型数据 长度:1~2000 定长

VARCHAR2(N):声明该列只能存储长度为N 的字符型数据   长度:1~4000  变长

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

数值型: NUMBER(P,S)😛->指明该列能存储的最长的数据长度,
S->指明该列数据中包含S个小数
int float double
日期型: DATE ->指明该列只能存储日期型数据
timestamp ->时分秒格式

ROWID类型:伪列类型,用来保存表中每条数据的物理地址
数据库自动为表增加一个ROWID字段来保存对应的rowID值

/oracle数据库的表中的每一行数据都有一个【唯一的标识符】,或者称为rowid,
在oracle内部通常就是使用它来访问数据的。rowid需要 10个字节的存储空间,
并用18个字符来显示。该值表明了该行在oracle数据库中的物理具体位置。
可以在一个查询中使用rowid来表明查询结果中包含该值。
/

二:表

1.创建一张表

–A)复制一张表
create table emp1 as select * from emp;
create table dept1 as select * from dept;

create table dept2 as select deptno,dname from dept where deptno=‘99’;

1)只能保存表的数据,结构,数据类型
2)表中的数据是select语句的结果

—B)创建一张表

语法:
CREATE TABLE TABLE_NAME
(
COL COL_TYPE,
COL COL_TYPE,
COL COL_TYPE,

);

分析:
1.CREATE TABLE + TABLE_NAME->指明 创建一张表,表的名字为TABLE_NAME
2.COLUMN COL_TYPE->指明 表中的字段以及数据类型
3.字段和字段之间用逗号做间隔
4.表中最后一个字段后不需要逗号间隔
6.一条语句的结束必须用分号声明!!!
7.用户下表名不可重复,表下字段名不可重复

示例:

创建一张emp3 表
create table emp
(empno number(4),
ename varchar2(10),
mgr number(4),
hiredate varchar2(20),
sal number(7,2),
comm number(7,2),
deptno number(2)
);

select * from emp3

关于表名、字段名的命名规范

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

–思考:如何备份一张表EMP?? 两种

–1.
create table emp3 as select * from emp;
–2 手动创建、insert
建表语句 查看sql获得,数据通过导出表中数据获得

2.修改表 alter

–A)修改表的状态
只读: 不能对表进行DML操作
ALTER TABLE TABLE_NAME READ ONLY;

读写: 能够对表进行更新操作
ALTER TABLE TABLE_NAME READ WRITE;

alter table emp3 read write;

–B)修改表结构
1)增加列
语法:
ALTER TABLE TABLE_NAME ADD COLUMN_NAME COL_TYPE;–单列增加
ALTER TABLE TABLE_NAME ADD (COLUMNN1 COL_TYPE…);–多列增加

示例:
select * from emp3;
alter table emp3 add ccc date;
alter table emp3 add (aaa varchar2(10),bbb number(4));
alter table emp3 add ccc date;

注意:
1.增加列时,ADD和字段名之间不需要COLUMN
2.数据类型为字符型时,VARCHAR2()必须要有字符长度,CHAR 虽然可以执行,
默认长度为1
3.增加多个字段时,要用括号
4.字段名和数据类型之间不用间隔符,多个字段需用逗号间隔
5.字段名和数据类型缺一不可
6.增加的字段名不可重复

2)修改列
语法:
ALTER TABLE TB_NAME MODIFY COL_NAME COL_TYPE_NEW; --单列
ALTER TABLE TB_NAME MODIFY (COL_NAME1 COL _TYPE_NEW,COL_NAME2 COL _TYPE_NEW,…);–多列

[1.表中无数据时]
select * from emp3;

alter table emp3 modify mgr date;
alter table emp3 modify empno1 number(10);

[2.表中有数据时]

select * from emp3 for update;

alter table emp3 modify empno1 date;

alter table emp3 modify empno1 number(1);

注意点
1.有数据的时候,字段类型不能修改,字段精度增加可以,减小精度不能小于已有数据精度
2.没有数据的列可以随便修改,要跨类型修改数据类型,则修改的列数据为空

alter
add modify :表中的列
rename :表和表中的列

3)重命名 rename

表重命名语法:
ALTER TABLE TB_NAME_OLD RENAME TO TB_NAME_NEW;
列重命名语法:
ALTER TABLE TB_NAME RENAME COLUMN COL_NAME_OLD TO COL_NAME_NEW;

select * from emp3;
alter table emp3 rename to emp300;
select * from emp300;

alter table emp300 rename column mgr to mgrqqqqq;
select * from emp300;

注意:
1 不建议使用重命名,一旦使用重命名,相关的程序都需要做出相应的变更,一旦有遗漏,会给整个系统带来隐患;
2 同一用户下不允许出现重复表名,同一表下不允许出现重复列名。

4)删除表中的列 drop
语法:
删除一个字段:
ALTER TABLE TB_NAME DROP COLUMN COL_NAME; --一列
ALTER TABLE TB_NAME DROP (COL_NAME1)
删除多个字段:
ALTER TABLE TB_NAME DROP (COL_NAME1,COL_NAME2,…); --多列

示例:
select * from emp300;

alter table emp300 drop column empno1;
alter table emp300 drop (ename);
alter table emp300 drop (mgrqqqqq);

alter table emp drop column (empno);–3
注意:

  1. COLUMN 只存在删除单个列时
    2.删除列时,需要字段名,不需要数据类型
    3.删除时COLUMN和括号不能联用
    4.要删除的字段是已经存在的字段
    5.删除多个字段,不能添加COLUMN关键字,而且必须加上括号
    6.不能删除所有的列,至少保留一个列

3.删除表 drop 删表 truncate 删数据

删除表:
语法:DROP TABLE TABLE_NAME;
DROP TABLE EMP300;
select * from emp300;

—删除这张表,慎用
–删除表连带表结构一起删除

清空表中数据:
语法 delete

语法:TRUNCATE TABLE TABLE_NAME;
—清空表中的数据,保留表结构

CREATE TABLE EMP3 AS SELECT * FROM EMP;
SELECT * FROM EMP3;
TRUNCATE TABLE EMP3;

了解:
1.如果有视图或 plsql过程依赖于该表,则这些视图或PLSQL过程将置于不可用状态
2.DROP 后加CASCADE CONSTRAINTS 可以删除所有引用这个表的视图 约束 触发器等
drop table emp3 cascade constraints;

–DELETE / DROP /TRUNCATE 联系区别
联系:都能删除表中数据

区别:
1、DELETE 和 TRUNCATE 仅仅删除表数据,DROP 连表数据和表结构一起删除,
打个比方,DELETE 是单杀,TRUNCATE 是团灭,DROP 是把手机摔了。

2、DELETE 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,TRUNCATE 和 DROP 是 DDL 语句 ,
操作完马上生效,不能回滚。
打个比方,DELETE 是发微信说分手,后悔还可以撤回,TRUNCATE 和 DROP 是直接扇耳光说滚,不能反悔。

3、执行的速度上,DROP>TRUNCATE>DELETE。
打个比方,DROP 是神舟火箭,TRUNCATE 是和谐号动车, DELETE 是自行车。
/* truncate delete :truncate 不记录日志,delete记录日志 */

ddl: create:table
alter:table add/modify/rename/drop
drop truncate:table

三.还原已删除的表(了解)

还原语句 --闪回功能
FLASHBACK TABLE TABLE_NAME TO BEFORE DROP ;

FLASHBACK TABLE emp300 TO BEFORE DROP ;
select * from emp300;

彻底删除
DROP TABLE_NAME PURGE
DROP TABLE EMP3 PURGE;

通过查看数据字典来看表是否在回收站中
drop table emp300;

SELECT OBJECT_NAME,ORIGINAL_NAME FROM RECYCLEBIN
WHERE ORIGINAL_NAME=TABLE_NAME;

select * from recyclebin order by droptime desc

清空回收站

PURGE RECYCLEBIN

清空某张表

PURGE TABLE TABLE_NAME;

四:重点

第二板块内的内容,尤其是语法结构时需要掌握的

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值