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. PHP file_put_contents() 函数

    file_put_contents() 函数把一个字符串写入文件中. 与依次调用 fopen(),fwrite() 以及 fclose() 功能一样. 语法如下 file_put_contents(f ...

  2. Java ScheduledExecutorService源码分析

    Java 定时任务可以用Timer + TimerTask来做,或者使用ScheduledExecutorService,使用ScheduledExecutorService有两个好处: 1. 如果任 ...

  3. css-css简介

    CSS:层叠样式表 ** 层叠:一层一层的 ** 样式表:很多的属性和属性值 * 使页面显示效果更好 * CSS将网页内容和显示样式进行分离,提高了显示功能.

  4. String字符串操作

    char chars[] ={'a','b','c'}; String s = new String(chars); int len = s.length();//字符串长度 System.out.p ...

  5. App Inventor 网络资源及推荐书目

    Ai2服务器 官方服务器:http://ai2.appinventor.edu/ 官方备用服务器:(大陆可用):http://contest.appinventor.mit.edu/ 国内个人服务器: ...

  6. apk接入google play邮箱登陆及充值注意事项

    unity3d 接入google play商店相关sdk,相关要求A.环境配置: 1.手机安装谷歌安装器 2.使用谷歌安装器安装Google 服务框架.Google Play服务.Google Pla ...

  7. NGUI动态字体的使用

    LZ今年六月刚刚毕业,在学校跟着老师做Android,OpenGL ES方面的项目(说白了就是干苦力╮(╯_╰)╭).年后来SZ了,就业前景好像并没有电视上渲染的那样糟糕,至少IT行业是这样吧,只要你 ...

  8. Java—集合框架List

    集合的概念 现实生活中:很多的事物凑在一起 数学中的集合:具有共同属性的事物的总和 Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象 集合的作用 在类的内部,对数据进行组 ...

  9. 【邀请函】小投入 大产出—微软智能云(Azure)之CDN 专题

    会议时间 2016 年 11 月 24 日 14:00-16:00 会议介绍 尊敬的客户: 您是否还在为如何提高网站的响应速度以及用户增长造成的源站压力烦恼?是否还在担心源站 IP 暴露存在安全隐患? ...

  10. How To Capture Packets with TCPDUMP?

    http://linux-circles.blogspot.com/2012/11/how-to-capture-packets-with-tcpdump.html See the list of i ...