一、建表语句

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高级--表结构相关(建表、约束)的更多相关文章

  1. Oracle表结构转Mysql表结构

    1. fnc_table_to_mysql 主体程序 create or replace function fnc_table_to_mysql ( i_owner in string, i_tabl ...

  2. (转载)根据数据字典表定义的表结构,生成创建表的SQL语句

    <来源网址:http://www.delphifans.com/infoview/Article_221.html>根据数据字典表定义的表结构,生成创建表的SQL语句 //1.  类名:T ...

  3. sql复制表结构,复制表内容语句

    sql复制表结构,复制表内容语句 select * into b from a where 1<>1 select top 0 * into b from a insert into a ...

  4. 【SQL Server复制】数据库复制:修改表结构、新增表、新增存储过程 会被复制到订阅服务器?

    转自:https://www.cnblogs.com/happyday56/p/3849018.html 关键字:sql server复制 [SQL Server高可用性]数据库复制:修改表结构.新增 ...

  5. SQLServer 表结构相关查询(快速了解数据库)

    -- 表结构查询 SELECT 表名 then d.name else '' end, 表说明 then isnull(f.value,'') else '' end, 字段序号 = a.colord ...

  6. mysql复制表数据或表结构到新表中

    MySQL复制表数据到新表的几个步骤. 1.MySQL复制表结构及数据到新表 CREATE TABLE new_table SELECT * FROM old_table; 2.只复制表结构到新表 C ...

  7. linux mysql-workbench 创建与正式库表结构一样的表

    先在本地创建数据库 字符集选择这个 创建数据库成功 创建与正式库一样的表 step1: 连接正式库,找到要生成的表,导出创建表的sql语句 step2: 找到本地数据库,选择表,在sql执行区域复制s ...

  8. mysql复制表结构,复制表数据

    MYSQL 复制表 show create table table_name:查看表的建表语句.该语句包含了原数据表的结构,索引等. 使用 SHOW CREATE TABLE 命令获取创建数据表(CR ...

  9. mysql ---复制表结构---创建新表

    1.复制表结构及数据到新表CREATE TABLE 新表SELECT * FROM 旧表这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删 ...

  10. MySQL复制表结构以及复制表等等

    mysql中用命令行复制表结构的方法主要有一下几种: 1.只复制表结构到新表 1 CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2; 或 1 CREATE TABL ...

随机推荐

  1. Go:排序算法

    一.冒泡排序 package main import "fmt" func BubbleSort(arr []int) { /* 思路:将大的元素一步一步"冒泡" ...

  2. 第四篇Scrum冲刺博客--Interesting-Corps

    第四篇Scrum冲刺博客 站立式会议 1.会议照片 2.队友完成情况 团队成员 昨日完成 今日计划 鲍鱼铭 搜索页面跳转.设计及布局实现 音乐详情页面跳转.设计及布局实现设计 叶学涛 编写设置页面 编 ...

  3. Java算法——分治法

         一.基本概念 在计算机科学中,分治法是一种很重要的算法.字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简 ...

  4. Hive SQL 优化面试题整理

    Hive优化目标 在有限的资源下,执行效率更高 常见问题: 数据倾斜 map数设置 reduce数设置 其他 Hive执行 HQL --> Job --> Map/Reduce 执行计划 ...

  5. 基于伪分布式Hadoop搭建Hive平台详细教程

    一.搭建环境的前提条件 环境:Linux系统 Hadoop-2.6.0 MySQL 5.6 apache-hive-2.3.7 这里的环境不一定需要和我一样,基本版本差不多都ok的,所需安装包和压缩包 ...

  6. dlopen代码详解——从ELF格式到mmap

    最近一个月的时间大部分在研究glibc中dlopen的代码,基本上对整个流程建立了一个基本的了解.由于网上相关资料比较少,走了不少弯路,故在此记录一二,希望后人能够站在我这个矮子的肩上做出精彩的成果. ...

  7. Event loop详解(包含Node端)

    Event loop事件循环,是一个执行模型.不同的浏览器以及Nodejs里的具体实现是不一样的. 一,浏览器端: HTML5规范里有明确定义,简单的说: 1,JS是单线程的,执行的时候在一条主栈上: ...

  8. 基于python tkinter的课堂点名小程序

    import datetime import json import os import random import tkinter as tk import openpyxl # 花名册文件名很多人 ...

  9. android开发 app闪退后fragment重叠bug解决方法,推荐使用第二种方法,完美解决问题

    解决方案为以下两种: 方法1:在fragmentActivity里oncreate方法判断savedInstanceState==null才生成新Fragment,否则不做处理. 方法2:在fragm ...

  10. 用Java爬虫爬取凤凰财经提供的沪深A股所有股票代号名称

    要爬取的凤凰财经网址:http://app.finance.ifeng.com/list/stock.php?t=hs 本作主要采用的技术是jsoup,相关介绍网页:https://www.jians ...