SQL_unique、primary key、FOREIGN KEY

  • insert into select
  • create
  • 约束Constraints ***
    • not null_添加、修改
    • unique_添加、修改、删除***
    • PRIMARY KEY 约束_添加、修改、撤销
    • FOREIGN KEY 约束(外键)

insert into select

从一个表复制数据,然后把数据插入到一个已存在的表中。

INSERT INTO table2
SELECT * FROM table1;INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
### create```sql
#创建数据库
CREATE DATABASE dbname;
#创建表
CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);

data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。
size 参数规定表中列的最大长度。

create

创建列时为字段添加约束条件
创建时规定使用create table语句,创建后规定使用 alter table语句。

CREATE TABLE table_name
(
column_name1 data_type(size) constraint_name,
column_name2 data_type(size) constraint_name,
column_name3 data_type(size) constraint_name,
....
);

约束Constraints ***

  • NOT NULL - 指示某列不能存储 NULL 值。
  • UNIQUE - 保证某列的每行必须有唯一的值。
    表中可以有多个字段标记unique
  • PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标 识,有助于更容易更快速地找到表中的一个特定的记录。
    每个表中只能有一个主键,且不为空
  • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
  • CHECK - 保证列中的值符合指定的条件。
  • DEFAULT - 规定没有给列赋值时的默认值。
    使用示例

以下关键字的使用 由于数据库不同会略有不同
单个列的unique、primary key 使用方法中 MySQL需要将关键字加在所有字段之后,而SQL可以直接在字段编辑的后面
联合的unique 和primary key 使用都是用constraint 关键字

not null_添加、修改

#not null,直接在字段类型后添加CREATE TABLE Persons (ID int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255) NOT NULL,Age int
);#修改 时使用 alter table 关键字和modify  将整个字段重新编辑
ALTER TABLE Persons
MODIFY Age int NOT NULL;ALTER TABLE Persons
MODIFY Age int NULL;
#

unique_添加、修改、删除***

个人理解:
unique 约束分为单个的约束和多个列的约束
定义单个列的unique约束可以直接在字段编辑时添加(除MySQL)
定义多个列的unique约束需要在表的所有字段添加完之后使用constraint 关键字添加,并为这个约束命名

#unique 使用方法#Mysql
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (P_Id)
)
#SQL Server / Oracle / MS Access:
#和null 的用法一致
CREATE TABLE Persons
(
P_Id int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)#sql 通用语法
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
)
#当表已被创建时,如需在 "P_Id" 列创建 UNIQUE 约束,请使用下面的 SQL
ALTER TABLE Persons
ADD UNIQUE (P_Id)
#如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:
ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
#MySQL:
ALTER TABLE Persons
DROP INDEX uc_PersonID
#SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID

PRIMARY KEY 约束_添加、修改、撤销

#MySQL用法:primary key 标记添加在最后面
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)
#SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
#如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束,请使用下面的 SQL 语法:
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
)

修改表时使用Alter 关键字 和add 关键字

#MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD PRIMARY KEY (P_Id)
#MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)

撤销

#MySQL:
ALTER TABLE Persons
DROP PRIMARY KEY
#SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID

FOREIGN KEY 约束(外键)

关键字:FOREIGN KEY,REFERENCES

一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。

FOREIGN KEY 约束用于预防破坏表之间连接的行为。

FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。


SQL_菜鸟教程_unique、primary key、foreign key相关推荐

  1. CHIL-ORACLE-主外键约束(primary key / foreign key)

    主键约束 要求主键列数据唯一,并且不允许为空 外键约束 用于量表建立关系,需要指定引用朱彪的那列(主表必须是主键)1.主键约束 ( primary key )--例如1:create table te ...

  2. SQL_菜鸟教程_select

    SQL 基础关键字使用 select where and & or order by insert into update delete 高级教程_select TOP 搜索 like 模式搜 ...

  3. MySQL数据库之-foreign key 外键(一对多、多对多、一对一)、修改表、复制表

    阅读目录 一.引言: 二.一对多(foreign key) 三.多对多: 四.一对一: 五.修改表: 六.复制表: 摘要: 外键 一对多 外键 多对多 外键 一对一 一.引言: 我们在同一数据库创建的 ...

  4. 数据库开发——MySQL——foreign key

    五,foreign key foreign key是跟外部表关联的字段. foreign key理解 学生信息表有三个字段:学号.姓名.年级,学校有四个年级,但是有3万多学生,那就意味着年级这个字段的 ...

  5. mysql一对一外键约束_MySQL数据库之-foreign key 外键(一对多、多对多、一对一)、修改表、复制表...

    我们在同一数据库创建的表时候,很多时候会出现相同数据的冗余问题,也就是说几个id会有一个或者同n个相同字段,这样就导致数据表结构数据重复冗余, 冗余还无所谓,关键是如果我要改其中一个相同的字段信息,其 ...

  6. python设置mysql外键_python基础教程之MySQL数据库之-foreign key 外键(一

    今日重点:外键 一对多 多对多 一对一 -------------------------------------------------------------------------------- ...

  7. mysql外键名_MySQL外键(foreign key)使用及说明详解

    外键也称之为外键约束: foreign key 外键: 外面的键, 一张表的一个字段(非主键)指向另外一个表的主键, 那么该字段就称之为外键. 外键所在的表称之为子表(附表); 外键所指向的主键所在的 ...

  8. mysql 说明外码_MySQL外键(foreign key)使用及说明详解

    外键也称之为外键约束: foreign key 外键: 外面的键, 一张表的一个字段(非主键)指向另外一个表的主键, 那么该字段就称之为外键. 外键所在的表称之为子表(附表); 外键所指向的主键所在的 ...

  9. Oracle primary,unique,foreign 区别,Hibernate 关联映射

    Oracle primary,unique,foreign 区别 转:http://www.cnblogs.com/henw/archive/2012/08/15/2639510.html NOT N ...

最新文章

  1. windows server 更改默认服务端口
  2. 谈谈你对摩尔定律的理解,摩尔定律当前还是继续有效的吗?
  3. 3、MySQL二进制日志(Binary Log)详解
  4. MySQL基础总结(三)
  5. intellij运行flink的wordcount实验-Java版本
  6. tar.xz压缩、解压方式
  7. DEVEXPRESS---TREELIST的使用
  8. (3)vue.js安装
  9. oracle中游标详细用法
  10. Fail to queue the whole FAL gap in dataguard一例
  11. linux下编译libyuv,Android ndk cmake编译libyuv
  12. excel数据分组存到一个excel的多个sheet中
  13. 基于某点评字体库的字体反爬
  14. LeetCode93—Restore IP Addresses
  15. Vue2.x - Vue Router
  16. kotlin一点摸索
  17. java需要打开开机启动项吗_开机启动项
  18. 通过okHttpUtils实现文件的上传下载
  19. 提升技术团队战斗力的几件事
  20. pyqt5 tablewidget 隐藏表头,设置表头

热门文章

  1. Remind-You Part1. 多进程控制
  2. PostgreSql 日期类型处理
  3. matlab 修改语言环境,VS Code配置Matlab环境
  4. RESTful Web Service 架构剖析
  5. linux hz是多长时间,linux的HZ, Tick, Jiffies
  6. 1.学生版阿里云简单配置和win7、win10专业版及win10家庭版的远程桌面的配置详解
  7. 基于live555的rtsp播放器之十八:G711a/G711u/G726转AAC
  8. 一篇文章彻底学懂SQL注入(包含基础数据库句法、SQL注入原理以及所有常见SQL注入类型以及绕过手法)
  9. linux怎么退出tail命令,Linux系统tail命令怎么使用
  10. matlab可以拟合分段函数吗,如何用matlab拟合出分段函数