SQL基础【三.DDL 数据定义语言】

本文详细介绍了SQL中的DDL数据定义语言,包括CREATE创建表、DROP删除数据库对象、TRUNCATE清空表以及ALTER修改表结构的四种主要操作。在CREATE中,讲解了创建表的规则和注意事项;DROP操作会永久删除表及其数据,需谨慎;TRUNCATE比DELETE更高效,用于清空表数据;ALTER则涵盖了添加、删除、修改表结构的方法,如添加字段、删除字段、修改表名和列名及字段属性。同时,文中提到了各类操作的相关注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三. DDL 数据定义语言

定义:用来定义 ”数据库对象“ 的操作语言。

DDL(定义语言) 和 DML(操纵语言) 的区别 :
1.  DML 针对的是数据,DDL针对的是数据库对象
2.  DML需要提交和回滚, DDL执行成功即生效

1.1 CREATE 创建

创建表需要有: 表名、列名、列的属性、(约束)、表名和列名命名规则。
表名和列名命名规则:
1.在1-30个字符之间;
2.只能用字母开头,不能用数字和特殊符号开头 ,例如a_1 可以;
3.不能和oracle 关键字重名;
4.不能重名。

语法1create table 表名(列名1 字段属性,列名2 字段属性.... )
例如:create table  zhiyun46(zno number(4),zname varchar2(30) ,zsr date  )

语法2create table 表名 as sql语句
例1create table zy46 as select * from emp    ---复制全部包括表内容2create table zy46 as select * from emp where 1=2   ---只复制表结构

注意事项:
1.创建表的时候每个列必须紧跟着字段属性;
2.同一个用户下表名不能重复, 同一张表下面列名不能重复;
3.每一张表都有所属的用户。

1.2、 DROP --删除 数据库对象

语法:drop table 表名

例如:drop table zy46; ---直接删除该表

注意事项:
1.删除时会将表结构连同数据一并删除,删除前注意备份。

1.3 TRUNCATE --清空

语法:truncate table 表名

例如:truncate table emp1 ;

DELETE 和TRUNCATE 和drop的区别
1. delete属于 dml 语句 , 而 truncate 属于ddl 语句;
2.delete 回留下日志,truncate不会留日志;
3.之所以有了2的区别,所以 truncate执行效率会高于delete;
4.delete 能删除部分数据,truncate只能清空所有数据;
5.truncate 清空水位线,释放空间, delete不清空水位线,不释放空间;
6.drop 删除数据同时也删除表结构.

1.4ALTER --修改 表结构(分为4类)

1.41 添加字段

语法:alter table 表名 add (列名1 字段属性,列名2 字段属性…)

例如:alter table zy466 add (zno number(4),zname varchar2(30))

注意事项:
1.添加一列默认添加到最后
2.添加字段的时候不能和原有的名字重复

1.42 删除字段

语法:alter table 表名 drop (列名1,列名2…)

 例如:alter table zy466 drop (zno,zname)

注意事项:
1.表至少保留一列。

1.43 修改表名 列名

修改表名的语法:alter table 旧表名 rename to 新表名

例如:alter table zy466 rename to zhiyun466

修改列名的语法:alter table 表名 rename column 旧列名 to 新列名

例如:alter table zhiyun46 rename column zno to zno1

注意事项:
1.修改表名和列名不能和已有的重复
2.强烈不建议使用重命名

1.44 修改字段属性

语法:alter table 表名 modify (列名1 字段属性,列名2 字段属性…)

1alter table zhiyun46 modify (zno number(5),zname varchar2(10))2alter table zhiyun46 modify (zno varchar2(5),zname varchar2(10))

注意事项:
1.修改字段属性长度一般是往大了改, 如果想往小改,有数据时不得小于数据值;
2.修改字段属性,当有数据时不能修改非同类型字段。

例:
在这里插入图片描述
1)创建表 如上图

CREATE TABLE MEMBER(member_id NUMBER(10),first_name VARCHAR2(25),last_name VARCHAR2(25),address VARCHAR2(100),city VARCHAR2(30),phone  VARCHAR2(15),join_date DATE,CONSTRAINT un_member  UNIQUE(member_id));

2)创建序列MEMBER_ID_SEQ.,由101开始,每次增长1,无最大值限制,不放入内存。

CREATE SEQUENCE member_id_seqSTART WIT  H 101  INCREMENT BY 1  NOMINVALUE  MAXVALUE 500  NOCACHE  CYCLE

3)利用创建的序列向表member中添加数据,如下图

INSERT INTO MEMBER(member_id,first_name,last_name,address,city,phone,join_date)  VALUES(member_id_seq.nextval,'carmen','velasquez','283 king street' , 'seattlr','206-899-6666',to_DATE('08-11-1990','mm-dd-yyyy'))

在这里插入图片描述
4)给表member创建只读视图。

  CREATE TABLE MEMBER READ noly;

5)新增一列age 数字类型,并限制该列取值在20到60岁之间。

ALTER TABLE MEMBER ADD(age NUMBER(10));  ---新增字段
Alter TABLE MEMBER ADD CONSTRAINT member_id_seq check(age between 20 and 60);  ---限制检查约束在20-60之间

6)修改表为只读或读写

alter table 表名 read only   --只读
alter table 表名 read write  --读写
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随薪所欲hello

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值