DDL语句
Oracle中的语句
一、 DQL 语句
DQL(Data Query Language)语句:数据查询语言,主要是对数据进行查询操作。
常用关键字有 SELECT、FROM、WHERE 等。
二、 DDL 语句
DDL(Data Definition Language)语句: 数据定义语言,主要是进行定义/改变表的结构、数据类型、表之间的链接等操作。
常用的语句关键字有 CREATE、DROP、ALTER 等。
三、 DML 语句
DML(Data Manipulation Language)语句: 数据操纵语言,主要是对数据进行增加、删除、修改操作。
常用的语句关键字有 INSERT、DELETE、 UPDATE等。
四、 DCL 语句
DCL(Data Control Language)语句: 数据控制语言,主要是用来设置/更改数据库用户权限。
常用关键字有 GRANT、REVOKE 等。
DDL语句
创建表
语法:CREATE TABLE 表名 (列名1 数据类型(精度),列名2 数据类型(精度),…)
字段之间用逗号隔开
建表时,里面至少有一列
1 | CREATE TABLE C;--报错 |
已经创建的表不能重复创建(在一个用户下)
1 | SELECT * FROM A; |
同一个用户下,表名不能重复;
同一个表中,列名不能重复
1 | CREATE TABLE C(ENAME CHAR(10),ENAME NUMBER(10));--报错 |
1.复制表
(不会复制约束)
语法:CREATE
TABLE
表名 AS
SELECT
想要复制的字段 FROM
被复制的表名 (WHERE
条件)
1 | CREATE TABLE EMPA AS SELECT * FROM EMP; |
删除表
语法:DROP
TABLE
表名;
已经删除的表不能再被删除
1 | DROP TABLE EMPA ; |
表只能一张一张的删
1 | DROP TABLE EMPA,EMPB;--不能同时删除多张表 |
1.删除表内容
语法:TRUNCATE
TABLE
表名;
DELETE
FROM
表名;
区别:DELETE
–删除所有记录,表结构还在,写日志,可以恢复的,速度慢.
TRUNCATE
–删除所有记录,表机构还在,不写日志,无法找回删除的记录,速度快.
只能删除表内全部数据
1 | TRUNCATE TABLE EMPA; |
修改表
1.ADD增加字段
语法:ALTER
TABLE
表名 ADD
(字段1 数据类型,字段2 数据类型,…..)
注意:
- 如果表内有同名字段,则不能再增加。
- 列名(表名)可以为中文(不建议)。
- 如果只添加一个字段,可以省略括号(不建议)
1 | SELECT * FROM EMPA; |
2.MODIFY修改数据类型
语法:ALTER
TABLE
表名 MODIFY
(字段1 要被修改成的数据类型,字段2 要被修改成的数据类型,…..)
1.列内有数据时,不可以修改成不同类别的数据类型,但是同类的可以修改;
1 | ALTER TABLE EMPB MODIFY(ENAME CHAR(10)); |
2.列内没有数据时,可以修改成任意的数据类型,任意总长度
1 | ALTER TABLE EMPA MODIFY(EMPNO DATE); |
3.列内有数据时,能够修改数据总长度(精度),能变得更长,不能变得更短(回不去了),可变长数据类型除外(只要不比内部数据短就行)。
1 | ALTER TABLE EMPB MODIFY(ENAME CHAR(11)); |
3.删除列
语法:ALTER
TABLE
表名 DROP
COLUMN
列名;–COLUMN本意是列的意思
注意:
- 要删除的列必须存在
- 无法删除表内的最后一列,(例如:有8列 随机删除7列后,剩下一列不能删)
删除一列
1 | ALTER TABLE table_name DROP COLUMN column_name; |
删除多列
1 | ALTER TABLE table_name DROP (column_1,column_2,...); |
4.重命名
表重命名:
语法:ALTER TABLE 旧表名 RENAME TO 新表名;
1 | alter table emapa rename to depta |
列重命名:
语法:ALTER TABLE 表名 RENAME COLUMN 旧列名 TO 新列名;
1 | alter table emapa rename column a to b |
1 | 例如:ALTER TABLE EMPA RENAME TO DEPTA; |
5.修改表状态
只读 READ ONLY
可以对表名进行操作(修改) 不能对表内数据进行修改操作
只读状态下可以删除表
读写 READ WRITE
1 | 语法: ALTER TABLE 表名 READ ONLY / READ WRITE; |
1 | ALTER TABLE EMPB RENAME TO T;--只读状态下能对表名进行修改操作 |
隐式提交:
DML语言,比如update,delete,insert等修改表中数据的需要commit;
DDL语言,比如create,drop等改变表结构的,就不需要写commit(因为内部隐藏了commit);