SQL DDL数据定义语言

一、CREATE 创建

(一)CREATE TABLE 创建表

创建表应遵循三范式的原则

CREATE TABLE 表名( 
字段1 数据类型 [约束], 
字段2 数据类型 [约束],
...

复制表

CREATE TABLE 表名 as select语句;
(复制表不能复制表的约束)
约束:

非空约束:NOT NULL :约束强制列不接受 NULL 值
唯一约束:UNIQUE:约束唯一标识数据库表中的每条记录。
主键约束:PRIMARY KEY:约束唯一标识数据库表中的每条记录,且不接受 NULL 值。
外键约束:FOREIGN KEY:指向另一个表中的 PRIMARY KEY
范围约束:CHECK:用于限制列中的值的范围。
默认约束:DEFAULT:用于向列中插入默认值。

create table test(
id int constraints pk_id primary key,--主键约束
name varchar(12) unique,--唯一约束
age number(3) check(age between 0 and 150),--范围约束
sex varchar(3) default('男'),--默认约束
tel varchar(11) not null,--非空约束
countid int foreign key references Count(cid)--外键约束

创建约束:

  1. 在定义字段时创建约束
  2. 在定义字段时定义约束及约束名
  3. 在创建表结束前创建约束:constraints 约束名 约束
  4. 在表创建结束后添加约束:ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束;
  5. constraints 约束名 约束 on delete set null主表删除后从表的外键索引处为null
  6. constraints 约束名 约束 on delete cascade主表删除后从表中的数据也一起被删除

添加注释

comment on table 表名 is 需要备注的信息
comment on columm 表名.字段名 is 需要备注的信息

(二)CREATE SYNONYM 创建同义词

CREATE SYNONYM <synonym_name> for <tablename/viewname>

同义词即是给表或视图取一个别名。

(三)CREATE INDEX 创建索引

CREATE [UNIQUE] INDEX 索引名 ON 表名(字段 [ASC|DESC]);

UNIQUE --确保所有的索引列中的值都是可以区分的。
[ASC|DESC] --在列上按指定排序创建索引。

创建索引的准则:
1.如果表里有几百行记录则可以对其创建索引(表里的记录行数越多索引的效果就越明显)2.索引在对大量数据进行查询的时候会提高效率,但是对少量数据进行查询或增删改处理的时候会降低效率,因为索引需要维护和更新
3.索引的创建和删除对sql的使用没有任何影响
4.oracle会自动为主键字段添加索引

二、ALTER 修改

(一)ALTER TABLE 修改表

  1. 向表中添加新字段ALTER TABLE 表名 ADD (字段1 类型 [约束],字段2 类型 [约束].... );
  2. 修改表中字段ALTER TABLE 表名 modify(字段1 类型,字段2 类型.... );
  3. 删除表中字段ALTER TABLE 表名 drop(字段1,字段2.... );
  4. 修改表的名称RENAME 表名 to 新表名;
  5. 对已经存在的表添加约束ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型 (针对的字段名);
    若表中已有的数据违反了想要添加的约束,则会 添加约束失败。
  6. 对表里的约束禁用ALTER TABLE 表名 DISABLE CONSTRAINT 约束名;
  7. 对表里的约束重新启用ALTER TABLE 表名 ENABLE CONSTRAINT 约束名;
  8. 删除表中约束ALTER TABLE 表名 DROP CONSTRAINT 约束名;

三、DROP 删除

(一)DROP TABLE 删除表

DROP TABLE 表名;
删除表时应当先删除从表,再删除主表
DROP TABLE 表名 cascade constraints;
同时删除主表时删除外键约束,同时从表中的数据不受影响。

(二)DROP INDEX 删除索引

DROP INDEX 索引名;

(三)DROP SYNONYM 删除同义词

DROP SYNONYM 同义词;

四、ORACLE其他对象

(一)视图

视图: 是表和结果集之间的虚拟表。
视图作用:
1.简化select查询语句
2.对select语句进行封装,命名,使该语句可以被重用
3.隐藏内部细节
4.区分不同的查询结果
注意:
不是所有用户都有创建视图的权限
视图的创建和删除不会对原表中的数据有如何的影响

(1)创建视图
CREATE [OR REPLACE] VIEW 视图名 AS <SELECT 语句> [read with only];

OR REPLACE --表示替换已有的视图
read with only --视图为只读
(2)删除视图
DROP VIEW 视图名

(二)序列

(1)创建序列
CREATE SEQUENCE 序列名 START WITH 起始值 INCREMENT BY 幅度
[MAXVALUE n][MINVALUE n]
[CYCLE|NOCYCLE]
[CACHE n|NOCACHE];

INCREMENT BY 幅度 --表示序列每次增长的幅度;默认值为1.
START WITH 起始值 --表示序列开始时的序列号。默认值为1.
MAXVALUE n --表示序列可以生成的最大值(升序).
MINVALUE n --表示序列可以生成的最小值(降序).
CYCLE --表示序列到达最大值后,在重新开始生成序列.默认值为 NOCYCLE。
CACHE --允许更快的生成序列.
(2)修改序列
ALTER SEQUENCE 序列名 START WITH 起始值 INCREMENT BY 幅度
[MAXVALUE n][MINVALUE n]
[CYCLE|NOCYCLE]
[CACHE n|NOCACHE];
(3)使用序列
  1. CURRVAL --返回序列的当前值.
  2. NEXTVAL --返回序列下一个值;
    注意:
    在刚建立序列后,序列的CURRVAL值为NULL,不能直接使用,需先初始化序列:
    方法:select 序列名.nextval from dual;再使用CURRVAL:select 序列名.CURRVAL from dual;
(4)删除序列
DROP SEQUENCE 序列名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值