MySQL-建表原则和方式
目录
一、Mysql数据类型分类
数值、日期/时间、字符串(字符)类型
1、数值
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
TINYINT | 1 字节 | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 字节 | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3 字节 | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT或INTEGER | 4 字节 | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
BIGINT | 8 字节 | (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
FLOAT | 4 字节 | (-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38, 3.402 823 466 E+38) | 单精度 浮点数值 |
DOUBLE | 8 字节 | (1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度 浮点数值 |
DECIMAL(P,D) | P:数字的精度 D:小数的位数 | 小数值 |
2、日期/时间
类型 | 大小 | 范围 | 格式 | 用途 |
DATE | 3字节 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3字节 | '-838:59:59'/'838:59:59' | HH:MM:SS | 时间值 |
YEAR | 1字节 | 1901/2155 | YYYY | 年份值 |
DATETIME | 8字节 | 1000-01-0 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 日期和时间 |
TIMESTAMP | 8 字节 | 1970-01-01 00:00:00/2037 年某时 | YYYYMMDD HHMMSS | 日期、时间、时间戳 |
3、字符串
类型 | 大小 | 用途 |
CHAR | 0-255字节 | 定长字符串 |
VARCHAR | 0-65535 字节 | 可变长度字符串 |
TINYTEXT | 0-255字节 | 短文本字符串 |
BLOB | 0-65 535字节 | 二进制形式的长文本数据 |
TEXT | 0-65 535字节 | 长文本数据 |
MEDIUMBLOB | 0-16 777 215字节 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295字节 | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295字节 | 极大文本数据 |
二、数据库建表原则和方式
1、表的创建语法
Create table 表名(
属性名 数据类型 [约束条件],
属性名 数据类型 [约束条件],
属性名 数据类型 [约束条件]
);
• []中括号种的内容是可选内容
• 最后一个属性后没有逗号
创建第一张表:student(包含学号,姓名,年龄,性别属性)
use test01;
create table student(
stuid int,
name varchar(10),
age int,
sex varchar(2)
);
show tables;
desc student;
2、删除表
语法:drop table 表名;
删除多个表
drop table 表名1,表名2...
3、修改表
添加列(属性)
alter table 表名 add 属性名 数据类型;
删除列(属性)
alter table 表名 drop 属性名;
修改字段数据类型
alter table 表名 modify 属性名 新的数据类型;
修改字段名
alter table 表名 change 原字段名 新字段名 数据类型;
修改表名
rename table 原表名 to 新表名;
显示表结构
desc 表名;
查看某张表的定义语句
show create table 表名;
查看某个数据库的全部表
show tables;
三、完整性约束
primary key 主键
auto_increment 主键自增
unique 唯一约束
default 默认约束
not null 非空约束
constraint [] foreign key(从表字段) references主表(主表主键) 外键约束
1、实体完整性
• 实体完整性是对关系中的记录唯一性。
• 定义表中的所有行能唯一的标识
• 表中主属性(字段)不能为Null且不能有相同值
• 一般用主键、唯一索引、 unique关键字来实现
1.1 主键约束
• 主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录
• 创建表时指定主键
·auto_increment主键自增
1)建表时直接添加
• CREATE TABLE t_user(user_id INT(10) PRIMARY KEY,user_name VARCHAR(30));
• CREATE TABLE t_user(user_id INT(10),PRIMARY KEY(user_id));
• CREATE TABLE t_user ( user_id INT(10),user_name VARCHAR(30),
CONSTRAINT PK_ID_NAME PRIMARY KEY(user_id,user_name) )
2)通过ALTER语句
• ALTER TABLE t_user MODIFY user_id INT(10) PRIMARY KEY;
• ALTER TABLE t_user ADD PRIMARY KEY(user_id);
• ALTER TABLE t_user ADD CONSTRAINT PK_ID PRIMARY KEY(user_id);
3)删除主键约束
• ALTER TABLE t_user DROP PRIMARY KEY;
1.2 唯一约束
• 唯一约束是指定table的列或列组合不能重复,保证数据的唯一性;
• 唯一约束不允许出现重复的值,但是可以为多个null;
• 同一个表可以有多个唯一约束,多个列组合的约束;
• 如果不给唯一约束名称,就默认和列名相同;
• MySQL会给唯一约束的列上默认创建一个唯一索引;
1)创建表时添加
create table temp (
id int(10) PRIMARY KEY,
name varchar(25),
constraint uk_name_pwd unique(name)
);
2)添加唯一约束
alter table temp add unique(name, password);
3)删除约束
alter table temp drop index name;
2、域完整性
• 域完整性是对数据表中字段属性的约束
• 它是由确定表结构时所定义的字段的属性决定的
• 限制数据类型,缺省值,规则,约束,是否可以为空
• 域完整性可以确保不会输入无效的值
2.1 默认值约束
• 添加默认约束
1)在创建表的时候添加
CREATE TABLE t_user(user_id INT(10) DEFAULT 3);
2)通过ALTER语句
ALTER TABLE t_user MODIFY user_id INT(10) DEFAULT 2;
• 删除默认约束
ALTER TABLE t_user MODIFY user_id INT(10);
2.2 非空约束
·添加非空约束
1)建表时直接添加
CREATE TABLE t_user(user_id INT(10) NOT NULL);
2)通过ALTER 语句
ALTER TABLE t_user MODIFY user_id INT(10) NOT NULL;
·删除非空约束
ALTER TABLE t_user MODIFY user_id INT(10);
3、参照完整性
指表与表之间的数据参照引用,使用外键约束实现。
3.1 外键约束
• 外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系;
• 表的外键值必须在主表中能找到或者为空;
• 当主表的记录被从表参照时,主表的记录将不允许删除;
• 如果要删除数据,需要先删除从表中依赖该记录的数据;
• 主表和从表必须都是按照InnoDB存储引擎创建 engine=InnoDB
• 主表的被参照字段必须是主表的主键
1)建表时添加外键约束
• 主表:
CREATE TABLE class(
clas_id INT(6) PRIMARY
KEY,
cla_name VARCHAR(30)
NOT NULL UNIQUE
);
• 从表:
CREATE TABLE students(
stu_id INT(10) PRIMARY KEY,
stu_name VARCHAR(30) NOT NULL,
stu_score FLOAT(5,2) DEFAULT 0.0,
cla_id INT(10),
CONSTRAINT FK_CLA_ID FOREIGN KEY(cla_id) REFERENCES class(clas_id)
);
2)给已有的表添加外键约束
ALTER TABLE students ADD CONSTRAINT FK_CLA_ID FOREIGN KEY(cla_id)
REFERENCES class(cla_id);
3)删除外键约束
ALTER TABLE students DROP FOREIGN KEY FK_CLA_ID;
原文地址:https://blog.csdn.net/qq_53865517/article/details/143695182
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!