Oracle学习(三)SQL高级--表结构相关(建表、约束)
一、建表语句
CREATE DATABASE(创建数据库)
--创建数据库
create database 数据库名字;
CREATE TABLE(创建表)
--创建表
CREATE TABLE 表名
(
字段1 类型(长度),
字段2 类型(长度),
字段3 类型(长度),
字段4 类型(长度),
字段5 类型(长度)
);
二、约束语句
定义
- SQL 约束用于规定表中的数据规则。
- 如果存在违反约束的数据行为,行为会被约束终止。
- 约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。
约束类型:
- NOT NULL - 指示某列不能存储 NULL 值。
- UNIQUE - 保证某列的每行必须有唯一的值。
- PRIMARY KEY - (主键)NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
- FOREIGN KEY - (外键)保证一个表中的数据匹配另一个表中的值的参照完整性。
- CHECK - 保证列中的值符合指定的条件。
- DEFAULT - 规定没有给列赋值时的默认值。
NOT NULL(非空约束)
--创建表时增加约束 NOT NULL
CREATE TABLE 表名
(
列1 类型(长度) NOT NULL,
列2 类型(长度) NOT NULL,
列3 类型(长度),
列4 类型(长度),
列5 类型(长度)
); --删除约束 NOT NULL
alter table 表 modify 列 null;
--设置约束 NOT NULL
alter table 表 modify 列 not null;
UNIQUE(唯一约束)
PS:每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。 --创建表时增加约束 UNIQUE
CREATE TABLE 表名
(
列1 类型(长度) NOT NULL,
列2 类型(长度) NOT NULL,
列3 类型(长度),
列4 类型(长度),
列5 类型(长度),
CONSTRAINT 约束名 UNIQUE (列1,列2)
); --修改表时,增加约束 UNIQUE (单列约束的情况)
ALTER TABLE 表 ADD UNIQUE (列1); --修改表时,如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束(多列约束的情况)
ALTER TABLE 表
ADD CONSTRAINT 约束名 UNIQUE (列1,列2) --删除约束 UNIQUE
ALTER TABLE 表 DROP CONSTRAINT 约束名
PRIMARY KEY(主键)
- 主键必须包含唯一的值。
- 主键列不能包含 NULL 值。
- 每个表都应该有一个主键,并且每个表只能有一个主键。
PS:每个表都应该有一个主键,并且每个表只能有一个主键。 --创建表时增加约束 PRIMARY KEY
CREATE TABLE 表名
(
列1 类型(长度) PRIMARY KEY,
列2 类型(长度),
列3 类型(长度),
列4 类型(长度),
列5 类型(长度)
); --创建表时,如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束(多列约束的情况)
PS:这种情况还是只有一个主键。然而,此时主键的值是由两个列(列1和列2)组成的
CREATE TABLE 表名
(
列1 类型(长度),
列2 类型(长度),
列3 类型(长度),
列4 类型(长度),
列5 类型(长度),
CONSTRAINT 约束名 PRIMARY KEY (列1,列2)
); PS:用ALTER TABLE 语句添加主键(即修改表的场景),必须把主键列声明为不包含 NULL 值(在表首次创建时)。
--修改表时,增加约束 PRIMARY KEY (单列约束的情况)
ALTER TABLE 表 ADD PRIMARY KEY (列1); --修改表时,如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束(多列约束的情况)
ALTER TABLE 表
ADD CONSTRAINT 约束名 PRIMARY KEY (列1,列2) --删除约束 PRIMARY KEY(有约束名的场景)
ALTER TABLE 表 DROP CONSTRAINT 约束名 --删除约束 PRIMARY KEY(未定义约束名的场景)
ALTER TABLE 表 DROP CONSTRAINT 列名
FOREIGN KEY(外键)
- 一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。
- FOREIGN KEY 约束用于预防破坏表之间连接的行为。
- FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
--创建表时增加约束 FOREIGN KEY
CREATE TABLE 表名
(
列1 类型(长度) PRIMARY KEY,
列2 类型(长度),
列3 类型(长度) FOREIGN KEY REFERENCES 外键关联的表名(外键关联的表字段)
); --创建表时,如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束
CREATE TABLE 表名
(
列1 类型(长度) PRIMARY KEY,
列2 类型(长度),
列3 类型(长度),
CONSTRAINT 约束名 FOREIGN KEY (当前表的字段)
REFERENCES 外键关联的表名(外键关联的表字段)
); --修改表时,增加约束 FOREIGN KEY (单列约束的情况)
ALTER TABLE 表
ADD FOREIGN KEY (当前表的字段)
REFERENCES 外键关联的表名(外键关联的表字段); --修改表时,如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束(多列约束的情况)
ALTER TABLE 表
ADD CONSTRAINT 约束名 FOREIGN KEY (当前表的字段)
REFERENCES 外键关联的表名(外键关联的表字段); --删除约束 FOREIGN KEY(有约束名的场景)
ALTER TABLE 表 DROP CONSTRAINT 约束名 --删除约束 FOREIGN KEY(未定义约束名的场景)
ALTER TABLE 表 DROP CONSTRAINT 列名
CHECK(校验)
- CHECK 约束用于限制列中的值的范围。
- 如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
- 如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。
--创建表时增加约束 CHECK
CREATE TABLE 表名
(
列1 类型(长度) PRIMARY KEY,
列2 类型(长度),
列3 类型(长度) CHECK (校验条件,如:列3>0)
); --创建表时,如需命名 CHECK 约束,并定义多个列的 CHECK 约束
CREATE TABLE 表名
(
列1 类型(长度) PRIMARY KEY,
列2 类型(长度),
列3 类型(长度),
CONSTRAINT 约束名 CHECK (校验条件1 AND 校验条件2)
); --修改表时,增加约束 CHECK (单列约束的情况)
ALTER TABLE 表 ADD CHECK (校验条件); --修改表时,如需命名 CHECK 约束,并定义多个列的 CHECK 约束(多列约束的情况)
ALTER TABLE 表
ADD CONSTRAINT 约束名 CHECK (校验条件1 AND 校验条件2); --删除约束 CHECK(有约束名的场景)
ALTER TABLE 表 DROP CONSTRAINT 约束名 --删除约束 CHECK(未定义约束名的场景)
ALTER TABLE 表 DROP CONSTRAINT 列名
DEFAULT (默认值)
--创建表时增加约束 DEFAULT
CREATE TABLE 表名
(
列1 类型(长度) PRIMARY KEY,
列2 类型(长度),
列3 类型(长度) DEFAULT 默认值
); --修改表时,增加约束 DEFAULT (单列约束的情况)
ALTER TABLE 表 MODIFY 列 DEFAULT 默认值 --删除约束 DEFAULT
ALTER TABLE 表
ALTER COLUMN 列 DROP DEFAULT
Oracle学习(三)SQL高级--表结构相关(建表、约束)的更多相关文章
- Oracle表结构转Mysql表结构
1. fnc_table_to_mysql 主体程序 create or replace function fnc_table_to_mysql ( i_owner in string, i_tabl ...
- (转载)根据数据字典表定义的表结构,生成创建表的SQL语句
<来源网址:http://www.delphifans.com/infoview/Article_221.html>根据数据字典表定义的表结构,生成创建表的SQL语句 //1. 类名:T ...
- sql复制表结构,复制表内容语句
sql复制表结构,复制表内容语句 select * into b from a where 1<>1 select top 0 * into b from a insert into a ...
- 【SQL Server复制】数据库复制:修改表结构、新增表、新增存储过程 会被复制到订阅服务器?
转自:https://www.cnblogs.com/happyday56/p/3849018.html 关键字:sql server复制 [SQL Server高可用性]数据库复制:修改表结构.新增 ...
- SQLServer 表结构相关查询(快速了解数据库)
-- 表结构查询 SELECT 表名 then d.name else '' end, 表说明 then isnull(f.value,'') else '' end, 字段序号 = a.colord ...
- mysql复制表数据或表结构到新表中
MySQL复制表数据到新表的几个步骤. 1.MySQL复制表结构及数据到新表 CREATE TABLE new_table SELECT * FROM old_table; 2.只复制表结构到新表 C ...
- linux mysql-workbench 创建与正式库表结构一样的表
先在本地创建数据库 字符集选择这个 创建数据库成功 创建与正式库一样的表 step1: 连接正式库,找到要生成的表,导出创建表的sql语句 step2: 找到本地数据库,选择表,在sql执行区域复制s ...
- mysql复制表结构,复制表数据
MYSQL 复制表 show create table table_name:查看表的建表语句.该语句包含了原数据表的结构,索引等. 使用 SHOW CREATE TABLE 命令获取创建数据表(CR ...
- mysql ---复制表结构---创建新表
1.复制表结构及数据到新表CREATE TABLE 新表SELECT * FROM 旧表这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删 ...
- MySQL复制表结构以及复制表等等
mysql中用命令行复制表结构的方法主要有一下几种: 1.只复制表结构到新表 1 CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2; 或 1 CREATE TABL ...
随机推荐
- Thrift IDL基本语法
简言:介绍Thrift的IDL基本语法,初次使用或多或少的会有很有"坑"要踩,但是我们要遇山挖山,遇海填海,在学习的道路上坚定的走下去,方可日后吹牛B! IDL Thrift 采用 ...
- 使用Wasserstein GAN生成小狗图像
一.前期学习经过 GAN(Generative Adversarial Nets)是生成对抗网络的简称,由生成器和判别器组成,在训练过程中通过生成器和判别器的相互对抗,来相互的促进.提高.最近一段时间 ...
- double与Double
1. double是基本数据类型,Double是原始数据类型(Java 类) 2. double创建引用,Double创建对象 3. double不可以为NULL,Double是类所以其对象是可以为N ...
- Java高级特性——反射机制(第三篇)
获取类运行时的结构 通过反射获取运行时类的完整结构 Field.Method.Constructor.Superclass.Interface.Annotation >实现的全部接口 >所 ...
- python爬虫-爬取百度图片
python爬虫-爬取百度图片(转) #!/usr/bin/python# coding=utf-8# 作者 :Y0010026# 创建时间 :2018/12/16 16:16# 文件 :spider ...
- 基于postman的api自动化测试实践
测试的好处 每个人都同意测试很重要,但并不是所有人都会去做.每当你添加新的代码,测试可以保证你的api按照预期运行.通过postman,你可以为所有api编写和运行测试脚本. postman中的测试 ...
- Linux下关闭和开启IPv6的方法
确认IPV6是否开启 在Linux下确认IPv6是否已经被启用,可以从三个方面确定. 1.使用ifconfig查看自己的IP地址是否含有IPv6地址. eth0 Link encap:Ethernet ...
- Java 实例 - 三目条件运算符
package guyu.day0903; /** * @Author: Fred * @Date: 2020/9/3 10:59 */ public class Demo01 { public st ...
- Spine学习五- spine动画融合
在许多地方,都需要用到动画融合,unity的新版动画系统已经能够很方便的进行动画融合,那么使用spine的动画状态机的情况下,如何来进行动画融合呢? 官方有两种方案,一种是使用混合动作实现,另一种是使 ...
- HTML语言基本单词与css基本单词
DOCTYPE 文档 html 网页 head 头部 body 主体 title 题目 p 段落 color 颜色 style 样式 backgroun ...