1. 常用的数据类型(data_type)

  • 字符串类型

    • CHAR(n) : 固定长度
    • VARCHAR(n) : 可变长度
    • NCHAR(n) : 使用utf8存储,固定长度
    • NVARCHAR(n) : 使用utf8存储,可变长度
    • BLOB : (2^16 - 1)字节
    • LONGBOLB : (2^32 - 1)字节
    • ENUM('value1','value2',...) : 枚举,填入的值必须是枚举列表中的某一个
  • 数字类型

    • INT, INTEGER (n) : 标准整型
    • DOUBLE(m,n) : 标准双精度浮点型, m为总长度,n为小数精确位数(0<= n <=6)
    • BOOL, BOOLEAN : 值为零则视为false,非零视为true
  • 日期和时间类型

    • DATE : 以'YYYY-MM-DD'形式现实
    • DATETIME(fsp) : 以'YYYY-MM-DD HH:MM:SS[.fsp]'格式显示, (0 <= fsp <= 6)
    • TIME(fsp) : 以'HH:MM:SS[.fsp]'格式显示
    • YEAR : 以'YYYY'格式显示
  • JSONS数据类型(从MySql5.7.8开始支持)

    • JSON

JSON数据类型的优势:

  • 自动验证存储在JSON列中的JSON文档 。无效的文档会产生错误。
  • 优化的存储格式。存储在JSON列中的JSON文档将 转换为内部格式,以允许快速读取文档元素。当服务器稍后必须读取以此二进制格式存储的JSON值时,不需要从文本表示中解析该值。二进制格式的结构使服务器能够直接通过键或数组索引查找子对象或嵌套值,而无需在文档中读取它们之前或之后的所有值。

2. MySql表级约束和列级约束

  • 表级约束

    • PRIMARY KEY
    • UNIQUE
    • CHECK(exp)
    • FOREIGN KEY (column-name, ......) REFERENCES foreign-table (column-name, ......) ON [DELETE | UPDATE] [SET NULL | RESTRICT | CASCADE | NO ACTION | SET DEFAULT]
  • 列级约束
    • PRIMARY KEY, AUTO_INCREMENT
    • NOT NULL
    • UNIQUE
    • CHECK(exp)
    • DEFAULT
    • REFERENCES foreign-table (column-name, ......) ON [DELETE | UPDATE] [SET NULL | RESTRICT | CASCADE | NO ACTION | SET DEFAULT]

注意: 整数或浮点列可以具有附加属性AUTO_INCREMENT。通常该值为 value+1 ,这里 value 是目前在表中的列的最大值。如果插入NULL时自动为该列设至此值。

3. Example

CREATE TABLE T_DEPT
(
DEPTNO INTEGER(2) PRIMARY KEY,
DNAME VARCHAR(15),
LOC VARCHAR(15)
) DEFAULT CHARACTER SET utf8; INSERT INTO T_DEPT VALUES(10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO T_DEPT VALUES(20, 'RESEARCH', 'DALLAS');
INSERT INTO T_DEPT VALUES(30, 'SALES', 'CHICAGO');
INSERT INTO T_DEPT VALUES(40, 'OPERATIONS', 'BOSTON'); CREATE TABLE T_EMP
(
EMPNO INTEGER(4) PRIMARY KEY,
ENAME VARCHAR(15),
JOB VARCHAR(9),
MGR INTEGER(4),
HIREDATE DATE,
SAL DOUBLE(7,2),
COMM DOUBLE(7,2),
DEPTNO INTEGER(2) REFERENCES T_DEPT(DEPTNO) ON UPDATE CASCADE
) DEFAULT CHARACTER SET utf8; INSERT INTO T_EMP VALUES(7369, 'SMITH', 'CLERK', 7902, CURRENT_DATE, 800, NULL, 20);
INSERT INTO T_EMP VALUES(7499, 'ALLEN', 'SALESMAN', 7698, CURRENT_DATE, 1600, 300, 30);
INSERT INTO T_EMP VALUES(7521, 'WARD', 'SALESMAN', 7698, CURRENT_DATE, 1250, 500, 30);
INSERT INTO T_EMP VALUES(7566, 'JONES', 'MANAGER', 7839, CURRENT_DATE, 2975, NULL, 20);
INSERT INTO T_EMP VALUES(7654, 'MARTIN', 'SALESMAN', 7698, CURRENT_DATE, 1250, 1400, 30);
INSERT INTO T_EMP VALUES(7698, 'BLAKE', 'MANAGER', 7839, CURRENT_DATE, 2850, NULL, 30);
INSERT INTO T_EMP VALUES(7782, 'CLARK', 'MANAGER', 7839, CURRENT_DATE, 2450, NULL, 10);
INSERT INTO T_EMP VALUES(7788, 'SCOTT', 'ANALYST', 7566, CURRENT_DATE, 3000, NULL, 20);
INSERT INTO T_EMP VALUES(7839, 'KING', 'PRESIDENT',NULL, CURRENT_DATE, 5000, NULL, 10);
INSERT INTO T_EMP VALUES(7844, 'TURNER', 'SALESMAN', 7698, CURRENT_DATE, 1500, 0, 30);
INSERT INTO T_EMP VALUES(7876, 'ADAMS', 'CLERK', 7788, CURRENT_DATE, 1100, NULL, 20);
INSERT INTO T_EMP VALUES(7900, 'JAMES', 'CLERK', 7698, CURRENT_DATE, 950, NULL, 30);
INSERT INTO T_EMP VALUES(7902, 'FORD', 'ANALYST', 7566, CURRENT_DATE, 3000, NULL, 20);
INSERT INTO T_EMP VALUES(7934, 'MILLER', 'CLERK', 7782, CURRENT_DATE, 1300, NULL, 10); CREATE TABLE T_SALGRADE
(
GRADE INTEGER PRIMARY KEY AUTO_INCREMENT,
LOSAL INTEGER,
HISAL INTEGER
) DEFAULT CHARACTER SET utf8; INSERT INTO T_SALGRADE VALUES(1, 700, 1200);
INSERT INTO T_SALGRADE VALUES(2, 1201, 1400);
INSERT INTO T_SALGRADE VALUES(3, 1401, 2000);
INSERT INTO T_SALGRADE VALUES(4, 2001, 3000);
INSERT INTO T_SALGRADE VALUES(5, 3001, 9999); CREATE TABLE T_JSON
(
JOSN_TEXT JSON DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO T_JSON VALUES \
(
'{"type": \
[{"lavel": 1, "price": 500.12}, \
{"lavel": 2, "price": 800.78}], \
"width": 50, "height": 100}'\
); --搜索JSON值
mysql> SELECT JSON_EXTRACT(JOSN_TEXT, '$.width') from T_JSON;
+------------------------------------+
| JSON_EXTRACT(JOSN_TEXT, '$.width') |
+------------------------------------+
| 50 |
+------------------------------------+ mysql> SELECT JSON_EXTRACT(JOSN_TEXT, '$.type[1].lavel') from T_JSON;
+--------------------------------------------+
| JSON_EXTRACT(JOSN_TEXT, '$.type[1].lavel') |
+--------------------------------------------+
| 2 |
+--------------------------------------------+

MySql基本数据类型及约束的更多相关文章

  1. Mysql 常见数据类型及约束

    Mysql 常见数据类型及约束 最近在跟几个不太懂技术的同事(哈哈, 其实我也不懂), 要整一个数据库项目, 然后前端, 后端, 都没有像样的, 数据输出还不是由我们控制.... 这可难受了, 然后总 ...

  2. MySql数据库数据类型及约束介绍

    1,MySql中数据类型介绍 整型及浮点型 数据类型 存储范围 字节 TINYINT 有符号值:-2^到2^7-1 无符号值:0到2^8-1 2 SMALLINT 有符号值:-2^15到2^15-1 ...

  3. MySQL基本数据类型和约束方式

    常用数据类型 1.mysql中的基本数据类型 整型.浮点型.字符类型.日期类型.枚举和集合. 2.常用的约束条件 PRIMARY KEY.UNIPUE KEY.NOT NULL.FOREIGN KEY ...

  4. 关系型数据库MySql 数据类型与约束

    MySql数据库 :数据类型与约束 注意 :  在创建数据表的时候,需要对数据表中的字段设置 数据类型和约束, 便于检测用户输入的数据是否正确有效. 1 数据类型 数据类型的选用原则 : 够用就行,尽 ...

  5. Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束

    Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束 一丶MySQL的存储引擎 什么是存储引擎:    MySQL中的数据用各种不同的技术存储在文件( ...

  6. 存储引擎,MySQL中的数据类型及约束

    存储引擎,MySQL中的数据类型及约束 一.存储引擎 1.不同的数据应该有不同的处理机制 2.mysql存储引擎 ​ Innodb:默认的存储引擎,查询速度叫myisam慢,但是更安全 ​ 支持事务, ...

  7. (七)MySQL常见的数据类型、约束和标识列

    一.MySQL常见数据类型 1.数值型: ①整型:tinyint.smllint.mediumint.int/integer.bigint 图源:尚硅谷李玉婷 案例1:关键表格teacher,分别添加 ...

  8. MySQL入门(引擎、数据类型、约束)

    MySQL入门(二) 表的引擎:驱动数据的方式 - 数据库优化 # 概要:引擎是建表规定的,提供给表使用,不是数据库的 # 展示所有引擎 show engines; # innodb(默认): 支持事 ...

  9. MySQL数据库3 - MySQL常用数据类型

    一. MySql常用数据类型 数据类型:整数(tinyint smailint int bigint) 定点数 decimal(p,s) ------ 小数点位置固定的       ---> 数 ...

随机推荐

  1. webpack缓存

    缓存 缓存如何工作 1.当缓存客户端需要访问数据时,它首先检查缓存.当在缓存中找到所请求的数据时,它被称为缓存命中. 2.如果在缓存中找不到请求的数据 , 称为缓存未命中的情况,它将从主存储器中提取并 ...

  2. ASTreeView Demo:Add, Edit & Delete nodes

    http://www.jinweijie.com/ http://www.astreeview.com/astreeviewdemo/astreeviewdemo1.aspx 選擇節點: <sc ...

  3. Nodejs 如何制作命令行工具

    # 全局安装,安装报错是需要前面加上sudo $ sudo npm install -g xxxb # 输出帮助 $ xxxb -h Usage: xxxb 这里是我私人玩耍的命令哦![options ...

  4. 设置cssrem,设置emmet

    1.文件->首选项->设置 2.搜索cssrem-> 点击设置:"cssrem.rootFontSize": 16, 4.emmet

  5. height百分比以及高度自适应问题

    1.  你曾经是否说想要 高度占页面或者占div百分比无效的问题,相信你也搜索过了,就是说 需要 设置父亲父亲一直到祖宗html都要设置百分比,才有效果. 总之一句话:想用百分比设置他的高度,则它的父 ...

  6. linux里终端安转视频播放器的操作及显示

    [enilu@enilu ~]$ mplayerbash: mplayer: command not found[enilu@enilu ~]$ yum list | grep mplayer^C^C ...

  7. vim右键粘贴 等杂

    putty连上linux,vim编辑个文件,我去,右键不能用用上下面的命令,就好了. set mouse-=a 今天发现mysql倒入utf-8的文件网站显示出来都是乱码,不过用utf-8的控制台看是 ...

  8. myeclipse 2014 闪退问题解决

    1.删掉Workspace下面的  \.metadata\.plugins\org.eclipse.core.resources一整个文件夹 2.删掉Workspace 下面的 \.metadata\ ...

  9. 01_Quartz基础结构

    [各种任务调度的使用场景] 论坛每天凌晨统计论坛用户的积分排名. 论坛每半个小时生成精华文章. 每隔30分钟对锁定过期的用户解锁. 每月1号统计上个月各部门的业务数据. [Quartz 简介] Qua ...

  10. 使用Unicode写文本文件:一个简单类的示例

    参考了http://forums.codeguru.com/showthread.php?457106-Unicode-text-file示例. class WOFSTREAM : public st ...