04-创建数据表

一. 建表

创建表的过程,其实就是规定数据列属性的过程,同时也是实施数据完整性约束(实体完整性,引用完整性,域完整性)的过程.

create table if not exists table_name (
  field_name field_type(field_length),
  ......
)
二. 使用主键约束(实体完整性)
1. 定义列时,同时定义主键
create table if not exists table_name (
  field_name field_type(field_length) primary key,
  ......
)
2. 定义所有列后指定主键 (联合主键时必须使用这种方式)
create table if not exists table_name (
  field_name field_type(field_length),
  ......
  primary key(field_name)
)
三. 使用外键约束(引用完整性)-不能跨引擎使用

外键用来在两个数据表之间建立联系,子表的外键必须时主表的主键,且关联字段的数据类型必须匹配

  • 主表(父表):相关联字段中,主键所在的那个表
  • 从表(子表):相关联字段中,外键所在的那个表
constraint fk_name foreign key(field_name) references master_table_name(field_name);
四. 非空约束 (域完整性)

非空约束指的是字段的值不能为空

field_name field_type(field_length) not null;
五. 唯一性约束

唯一性约束要求该列唯一,允许唯一,但只能出现一个空值

1. 定义列时,同时指定唯一性
field name field_type(field_length) unique;
2. 定义所有列后指定唯一性
create table if not exists table_name (
  field_name field_type(field_length),
  ......
  constraint name unique(field_name)
)
六. 默认约束

默认约束指定某列的默认值

field_name field_type(field_length) default "默认值";
七. 属性自动增加
field_name field_type(field_length) auto_increment;

一个表只能有一个字段auto_increment,且这个字段必须是主键的一部分.auto_increment可以时任何整性类型

数据完整性
  • 实体完整性(行完整性)<--主键约束
  • 引用完整性(参照完整性)<--外键约束
  • 域完整性(列完整性)-数据必须与数据类型,格式,长度相匹配
  • 用户定义完整性<--非空约束,唯一约束,默认约束
完整性约束
  • 实体完整性约束
  • 参照完整性约束
  • 函数完整性约束
  • 统计约束
实现完整性约束的方法
  • 静态约束
  • 动态约束

转载于:https://my.oschina.net/majorx/blog/3036046

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
USE MyDatabase; -- 创建1 CREATE TABLE Table1 ( ID INT PRIMARY KEY, Name VARCHAR(50) NOT NULL, Age INT NOT NULL, Gender VARCHAR(10) NOT NULL ); -- 插入数据到1 INSERT INTO Table1 (ID, Name, Age, Gender) VALUES (1, 'John', 25, 'Male'), (2, 'Mary', 30, 'Female'), (3, 'Tom', 20, 'Male'), (4, 'Alice', 35, 'Female'), (5, 'Bob', 28, 'Male'), (6, 'Sara', 32, 'Female'), (7, 'David', 27, 'Male'), (8, 'Julia', 29, 'Female'), (9, 'Alex', 24, 'Male'), (10, 'Lisa', 31, 'Female'); -- 创建2 CREATE TABLE Table2 ( ID INT PRIMARY KEY, Department VARCHAR(50) NOT NULL, Manager VARCHAR(50) NOT NULL ); -- 插入数据到2 INSERT INTO Table2 (ID, Department, Manager) VALUES (1, 'Sales', 'John'), (2, 'Marketing', 'Mary'), (3, 'IT', 'Tom'), (4, 'HR', 'Alice'), (5, 'Finance', 'Bob'), (6, 'Operations', 'Sara'), (7, 'Engineering', 'David'), (8, 'Customer Service', 'Julia'), (9, 'Research', 'Alex'), (10, 'Product Development', 'Lisa'); -- 创建3 CREATE TABLE Table3 ( ID INT PRIMARY KEY, ProductName VARCHAR(50) NOT NULL, Price FLOAT NOT NULL ); -- 插入数据到3 INSERT INTO Table3 (ID, ProductName, Price) VALUES (1, 'iPhone', 999.99), (2, 'Samsung Galaxy', 799.99), (3, 'Google Pixel', 899.99), (4, 'Huawei P30', 699.99), (5, 'OnePlus 7T', 599.99), (6, 'Xiaomi Mi 9', 499.99), (7, 'LG G8', 699.99), (8, 'Sony Xperia', 749.99), (9, 'HTC U12', 649.99), (10, 'Nokia 9', 599.99); -- 创建4 CREATE TABLE Table4 ( ID INT PRIMARY KEY, OrderDate DATE NOT NULL, ProductID INT NOT NULL, Quantity INT NOT NULL, FOREIGN KEY (ProductID) REFERENCES Table3(ID) ); -- 插入数据到4 INSERT INTO Table4 (ID, OrderDate, ProductID, Quantity) VALUES (1, '2020-01-01', 1, 2), (2, '2020-02-01', 2, 3), (3, '2020-03-01', 3, 1), (4, '2020-04-01', 4, 4), (5, '2020-05-01', 5, 2), (6, '2020-06-01', 6, 3), (7, '2020-07-01', 7, 1), (8, '2020-08-01', 8, 4), (9, '2020-09-01', 9, 2), (10, '2020-10-01', 10, 3); -- 创建5 CREATE TABLE Table5 ( ID INT PRIMARY KEY, CustomerName VARCHAR(50) NOT NULL, OrderID INT NOT NULL, FOREIGN KEY (OrderID) REFERENCES Table4(ID) ); -- 插入数据到5 INSERT INTO Table5 (ID, CustomerName, OrderID) VALUES (1, 'John Smith', 1), (2, 'Mary Johnson', 2), (3, 'Tom Lee', 3), (4, 'Alice Wang', 4), (5, 'Bob Chen', 5), (6, 'Sara Kim', 6), (7, 'David Lee', 7), (8, 'Julia Brown', 8), (9, 'Alex Wong', 9), (10, 'Lisa Zhang', 10);
06-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值