1.约束

1.PrimaryKey(PK)主键

特点:唯一 + 非空,一张表中只能有一个主键约束,一般是一个数字列,最好是无意义的。

2.NOT NULL 非空

特点:不能为空,建议在MySQL中,业务关键列,尤其是索引列,设置为非空。

3.UNIQUE 唯一约束

特点:不能有重复值,可以有多个,一般像是手机号,身份证号

4.unsigned 数字列无符号(全是正数)

特点:必须要加在数字列后,表示数字无负数,一般适用于年龄。。。。。。。。。。

2.其他属性

1.AUTO_INCREMENT 自增长

特点:适用于ID主键列

2.DEFAULT 默认值

特点:在NOT NULL列中使用,不填写值,自动生成默认值。

3.COMMENT 注释

让表的数据更加具体化 特点:建议每个列都有一个注释。

3.DCL 数据控制语言

grant revoke

4.DDL 应用

1.库的定义

1.1 增

CREATE DATABASE oldguoCHARSET utf8mb4 COLLATE utf8mb4_bin;

1.2 删 (危险,不代表生产操作)

DROP DATABASE oldguo;

1.3 改

ALTER DATABASE oldguo CHARSET utf8mb4 COLLATE utf8mb4_bin;

1.4 查(DQL)

mysql> show create database oldboy;

+----------+--------------------------------------------------------------------+

| Database | Create Database |

+----------+--------------------------------------------------------------------+

| oldboy | CREATE DATABASE `oldboy` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |

+----------+--------------------------------------------------------------------+

1 row in set (0.00 sec)

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| oldboy |

| oldguo |

| performance_schema |

| sys |

| test |

| world |

+--------------------+

8 rows in set (0.00 sec)

1.5 规范

(1). 库名和业务相关

(2). 库名不能用大写字母,可以用数字,小写字母,特殊符号。

为什么?因为在Windows中,不区分大小写,Linux严格区分大小写。

(3). 库名不能数字开头

(4). 库名不能是预留字符

比如,table,database

(5). 库名不能超过十八个字符

(6). 必须要设置字符集,尽量是utf8mb4.

(7). 收回所有用户的DROP权限。

2.表定义

2.1 增 create table

复制表和表内容

(1). create table stu select * from student; 这种复制方法,会丢失主键,索引之类的约束会丢失。

(2). create table st like student;

insert into st select * from student;

2.2 删 drop table

2.3 查

2.4 改

建表规范 2.1 增 create table

1.表名:

不能大写字母,要和业务有关,不能数字开头,长度控制在18个字符内,不能和关键字同名。

2.要设置存储引擎类型:

INNODB,要设置字符集

3.列明要有意义

4.选择合适的数据类型:

合适的,完整的,简短的(数据类型会影响到索引的性能)

5.每个表要有主键。实在是不知道怎么设置,也要找一个无关的自增长列设置为主键。

6.尽量每个列都有NOT NULL (特别是将来要作为索引的)

7.每列要有注释信息。

2.2 删 drop table

drop table teacher_bak; 删除表结构+数据

truncate table tarcher_bak; 只清除数据(清除数据页)

delete from table teacher_bak; 清空数据行(逐行删除)

2.3 查

show tables; 查看表

show create table teacher; 查看表创建的命令

desc teacher; 详细查看表结构

扩展,复制一张表,只有表结构,没有表数据

create table teacher_bak like teacher;

2.4 改

(1).增加列,默认插入在最后一列

ALTER TABLE xuesheng ADD xqq BIGINT NOT NULL UNIQUE COMMENT 'QQ号';

在某行后面加入一列

ALTER TABLE xuesheng ADD wechat BIGINT NOT NULL UNIQUE COMMENT '微信号' AFTER xtel;

在最前面加入一列

ALTER TABLE xuesheng ADD mail BIGINT NOT NULL UNIQUE COMMENT '邮箱' FIRST;

(2)删除列

ALTER TABLE xuesheng DROP mail;

ALTER TABLE xuesheng DROP xqq;

(3)修改表属性

修改表名:将xuesheng表修改为student

ALTER TABLE xuesheng RENAME to student;

2. 修改某一列的属性信息,尽量使用MODIFY,性能比较高

DESC student;

ALTER TABLE student MODIFY xname VARCHAR(128) NOT NULL COMMENT '姓名';

3. 修改列名和属性,性能较低

ALTER TABLE student CHANGE xsex xgender CHAR(2) NOT NULL DEFAULT 'm' COMMENT '性别';

面试题:上亿行的数据规划:

1.按月归档表

2.没用的历史表进行挪走或删除。

注意:

执行alter语句,都是需要进行缩表操作的,此时只能发生查询操作,不能做修改操作。

我们建议,alter语句,尽量在业务不繁忙期间发生。如果非得线上操作,建议使用pt-osc工具进行。

5.DML 数据操作语言

DML操作数据行数据

1.insert 插入行数据

INSERT INTO

teacher(tid,tname,tage,tsex,tyear,txl,tstar)

VALUES('t0001','oldboy', 48 , 'm' ,20,'本科',10);

5.2 update

SELECT * FROM student;

UPDATE student SET xname='王钢蛋' WHERE xid=6;

UPDATE student SET xname='李铁锤' WHERE xid=5;

5.3 delete

INSERT INTO student VALUES(21,'王二麻子',22,'f','921','345','上海市','2020-01-01');

DELETE FROM student WHERE xid=21;

扩展:

伪删除

(1) 添加状态列 is_del (1代表删除,0代表有效)

ALTER TABLE student ADD is_del TINYINT NOT NULL DEFAULT 0 COMMENT '1代表删除,0代表有效';

SELECT * FROM student;

(2) delete ---> update

原语句:

delete from student where xid=20;

改为 :

update student set is_del=1 where xid=20;

(3) 更改业务查询方法

原语句:

SELECT * FROM student;

改为:

SELECT * FROM student where is_del=0;

mysql约束建表规范_MySQL 建库建表规范相关推荐

  1. mysql数据表案例_mysql中库和表的简单操作案例

    mysql中库和表的简单操作案例 发布时间:2020-12-05 09:54:06 来源:亿速云 阅读:71 作者:小新 这篇文章主要介绍mysql中库和表的简单操作案例,文中介绍的非常详细,具有一定 ...

  2. jdbc 生成建表语句_mysql数据库下建表语句

    mysql建立数据库报错You have an error in your SQL syntax; check the manual that corresponds to your MySQL se ...

  3. mysql ddl复制_MySQL DDL-对库和表的操作

    #DDL /* 数据定义语言 库和表的管理 一.库的管理 创建.修改.删除 二.表的管理 创建.修改.删除 创建:create 修改: alter 删除:drop */ 一.库的管理 #1.库的创建 ...

  4. mysql的teqcher表结构_Mysql之库表操作(胖胖老师)

    SQL 概念:结构化查询语言(SQL = Structured Query Language), 也是一种编程语言(数据库查询和程序设计语言),可以用于数据的存取及查询,更新,管理关系型数据库系统 p ...

  5. mysql约束添加删除数据_mysql中约束的添加,修改,与删除

    MySQL中的约束,添加约束,删除约束,以及其他的一些修饰: 一.NOT NULL(非空约束) 添加非空约束 1)建表时直接添加 CREATE TABLE t_user(user_id INT(10) ...

  6. mysql统计记录数据库设计_MYSQL数据库设计,查询规范

    MySQL数据库 (一)建表规约 1.[强制]表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是unsignedtinyint(1表示是,0表示否) .说明:任何字段如果为非负数,必须是 ...

  7. mysql全局读写怎么锁_MySQL全局锁和表锁

    最近正好在看操作系统中关于线程,锁的部分,也可以学习一下数据库种的锁. MySQL的锁分为全局锁,表级锁,行锁三类. 全局锁 名思义,全局锁就是对整个数据库实例加锁.MySQL提供了一个加全局读锁的方 ...

  8. 查看 mysql 占用的内存大小_mysql查看数据库和表的占用空间大小

    查看数据库的大小 use 数据库名 SELECT sum(DATA_LENGTH)+sum(INDEX_LENGTH) FROM information_schema.TABLES where TAB ...

  9. mysql数据库入门教程(7):库和表的管理

    DDL语言 #DDL /* 数据定义语言 库和表的管理 一.库的管理 创建.修改.删除 二.表的管理 创建.修改.删除 创建: create 修改: alter 删除: drop */ 一.库的管理 ...

  10. mysql innodb表移植_mysql Innodb引擎独立表空间下通过复制.ibd文件快速迁移数据文件...

    假设需求:需要把库test1中的的数据迁移到test2中,并且test2中数据量特别大 硬性条件:1.mysql 使用 Innodb引擎,且开启独立表空间,2.两个库的mysql版本一致(不同版本下未 ...

最新文章

  1. Ultimate SLAM:结合事件、图像和惯性测量单元,在HDR和高速场景下实现鲁棒的视觉SLAM...
  2. [转]产品需求文档(PRD)的写作
  3. inux 后台执行命令
  4. HDU 1426 Sudoku Killer【DFS 数独】
  5. 腹式肠道操 缩胃瘦身有奇效 - 健康程序员,至尚生活!
  6. 【Python】分享几个用Python给图片添加水印的方法,简单实用
  7. Visual Assist X插件
  8. 我怀疑对象做了什么对不起我的事......
  9. 漫画:什么是计数排序
  10. 设置字符串位数,不足位数补0
  11. 你都有哪些丢人的经历?
  12. 这个黑科技耳机方便又时尚,听歌也不怕坐过
  13. 拓端tecdat|采用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析
  14. Adobe flash player10安装失败的解决方法
  15. 为什么很多互联网公司喜欢招应届毕业生?
  16. 解决 无法删除文件夹 “文件夹访问被拒绝 你需要权限来执行此操作“ 的问题 理论上还可以使用本方法删除任何文件夹
  17. linux编写脚本读取txt文件,用bash脚本或者批处理 bat脚本 读取一个目录下.txt文件第一行内容存放到新文件a.txt...
  18. 离散卷积过程举例图示详解
  19. 人群计数数据集汇总和详细介绍,全网最全,crowd counting datasets
  20. 服务器系统linux当nas,使用Ubuntu 13.10当NAS服务器系统

热门文章

  1. 第八章 让开发板发出声音:蜂鸣器驱动读后感
  2. 天津Uber优步司机奖励政策(1月4日~1月10日)
  3. PAT 1015__部分正确__已解决
  4. 天涯htmlcss基础框架
  5. AndroidManifest.xml配置文件详解
  6. centos pptp+l2tp+radius+mysql+tc限速,安装配置
  7. 芯片老化验证流程_如何正确评估芯片的老化程度?
  8. event 和 window.event
  9. JavaScript 计时事件
  10. 培训第二弹:全国大学生智能汽车竞赛百度竞速组预告