当前位置: 首页 > news >正文

MySQL-建表原则和方式

目录

一、Mysql数据类型分类

1、数值

2、日期/时间

3、字符串

二、数据库建表原则和方式

1、表的创建语法

2、删除表

3、修改表

三、完整性约束

1、实体完整性

1.1 主键约束

1.2 唯一约束

2、域完整性

2.1 默认值约束

2.2 非空约束

3、参照完整性

3.1 外键约束


一、Mysql数据类型分类

数值、日期/时间、字符串(字符)类型

1、数值

类型

大小

范围(有符号)

范围(无符号)

用途

TINYINT

1 字节

(-128127)

(0255)

小整数值

SMALLINT

2 字节

(-32 76832 767)

(065 535)

大整数值

MEDIUMINT

3 字节

(-8 388 6088 388 607)

(016 777 215)

大整数值 

INTINTEGER

4 字节

(-2 147 483 6482 147 483 647)

(04 294 967 295)

大整数值

BIGINT

8 字节

(-9 233 372 036 854 775 8089 223 372 036 854 775 807)

(018 446 744 073 709

551 615)

极大整数值

FLOAT

4 字节

(-3.402 823 466 E+381.175 494 351 E-38)0(1.175 494 351 E-383.402 823 466 351 E+38)

0(1.175 494 351 E-383.402 823 466 E+38)

单精度

浮点数值

DOUBLE

8 字节

(1.797 693 134 862 315 7 E+3082.225 073 858 507 201 4 E-308)0(2.225 073 858 507 201 4 E-3081.797 693 134 862 315 7 E+308)

0(2.225 073 858 507 201 4 E-3081.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;


http://www.mrgr.cn/news/70679.html

相关文章:

  • 使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
  • 【UE5】在材质中计算模型在屏幕上的比例
  • Rust学习(八):异常处理和宏编程:
  • 【AI系统】GPU 架构回顾(从2018年-2024年)
  • 设计模式-创建型-抽象工厂模式
  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:跨数据中心环境下的挑战与对策(上)(27 / 30)
  • C语言中,“extern”关键字的含义与用法
  • [线程池]
  • day62 53.寻宝
  • 【编程概念基础知识】
  • 【数据结构】图的应用的时间复杂度
  • ‌MySQL 5.7和8.0版本在多个方面存在显著区别,主要包括性能优化、新特性引入以及安全性提升
  • 【FF++】FaceForensics++: Learning to Detect Manipulated Facial Images
  • SpringCloud微服务聚合工程创建指南
  • 明日周刊-第27期
  • [CUDA] cuda程序编译注意事项
  • 解码潜意识:如何用Python构建梦境分析模型
  • C#入门 020 事件(类型成员)
  • (05/16) - 萨班斯-奥克斯利法案(SOX)--- 详解SOX法案
  • 【uiautomator】自动化测试camera【一】
  • 简述 synchronized 和 java.util.concurrent.locks.Lock 的异同?
  • Scrapy搭配Selenium爬取豆瓣电影250排行榜动态网页数据
  • Linux中线程的基本概念与线程控制
  • 深⼊理解指针(5)[回调函数、qsort相关知识(qsort可用于各种类型变量的排序)】
  • YOLOv11融合CVPR[2020]自校准卷积SCConv模块及相关改进思路|YOLO改进最简教程
  • 前端知识点---字符串的8种拼接方法(Javascript)