MySql基本数据类型及约束
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
, ......) REFERENCESforeign-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基本数据类型及约束的更多相关文章
- Mysql 常见数据类型及约束
Mysql 常见数据类型及约束 最近在跟几个不太懂技术的同事(哈哈, 其实我也不懂), 要整一个数据库项目, 然后前端, 后端, 都没有像样的, 数据输出还不是由我们控制.... 这可难受了, 然后总 ...
- MySql数据库数据类型及约束介绍
1,MySql中数据类型介绍 整型及浮点型 数据类型 存储范围 字节 TINYINT 有符号值:-2^到2^7-1 无符号值:0到2^8-1 2 SMALLINT 有符号值:-2^15到2^15-1 ...
- MySQL基本数据类型和约束方式
常用数据类型 1.mysql中的基本数据类型 整型.浮点型.字符类型.日期类型.枚举和集合. 2.常用的约束条件 PRIMARY KEY.UNIPUE KEY.NOT NULL.FOREIGN KEY ...
- 关系型数据库MySql 数据类型与约束
MySql数据库 :数据类型与约束 注意 : 在创建数据表的时候,需要对数据表中的字段设置 数据类型和约束, 便于检测用户输入的数据是否正确有效. 1 数据类型 数据类型的选用原则 : 够用就行,尽 ...
- Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束
Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束 一丶MySQL的存储引擎 什么是存储引擎: MySQL中的数据用各种不同的技术存储在文件( ...
- 存储引擎,MySQL中的数据类型及约束
存储引擎,MySQL中的数据类型及约束 一.存储引擎 1.不同的数据应该有不同的处理机制 2.mysql存储引擎 Innodb:默认的存储引擎,查询速度叫myisam慢,但是更安全 支持事务, ...
- (七)MySQL常见的数据类型、约束和标识列
一.MySQL常见数据类型 1.数值型: ①整型:tinyint.smllint.mediumint.int/integer.bigint 图源:尚硅谷李玉婷 案例1:关键表格teacher,分别添加 ...
- MySQL入门(引擎、数据类型、约束)
MySQL入门(二) 表的引擎:驱动数据的方式 - 数据库优化 # 概要:引擎是建表规定的,提供给表使用,不是数据库的 # 展示所有引擎 show engines; # innodb(默认): 支持事 ...
- MySQL数据库3 - MySQL常用数据类型
一. MySql常用数据类型 数据类型:整数(tinyint smailint int bigint) 定点数 decimal(p,s) ------ 小数点位置固定的 ---> 数 ...
随机推荐
- scss-算术运算符
由于scss具有编程语言的特点,那么运算符是必不可少的. 下面就通过代码实例分别做一下介绍. 一.赋值运算符: 赋值运算符就是我们最为熟悉的冒号(:),用来给声明的变量赋值. 代码实例如下: $hig ...
- querySelector()与querySelectorAll()的区别及NodeList和HTMLCollection对象的区别
querySelector().Document.Element类型均可调用该方法. 当用Document类型调用querySelector()方法时,会在文档元素范围内查找匹配的元素:而当用Elem ...
- Aligning Plots in a Column作图列对齐
Plot[Sin[x], {x, 0, Pi}] Plot[10000 Sin[x], {x, 0, Pi}] 直接作图左边无法对齐,影响图的美观.可以使用左边界空格实现列对齐,代码如下: optio ...
- win7下tomcat5.5无法通过ip和127.0.0.1访问的解决方法
解决办法:找到tomcat5.5目录下的conf\server.xml文件,原文如下: <Connector port="8080" maxHttpHeaderSize=&q ...
- 使用CTE公用表表达式的递归查询(WITH AS)
公用表表达式 (CTE) 具有一个重要的优点,那就是能够引用其自身,从而创建递归 CTE.递归 CTE 是一个重复执行初始 CTE 以返回数据子集直到获取完整结果集的公用表表达式. 当某个查询引用递归 ...
- css Media Query详解
Media Queries详解 Media Queries直译过来就是“媒体查询”,在我们平时的Web页面中head部分常看到这样的一段代码: 1 <link href="css/re ...
- 一个sql server 实施工程师的反思
自14年开始从事数据库实施,至今(2018-02-16)晃眼间已经四个年头过去了,工作上的能力要求多数能自己解决,可这不应该成为我学习路上的终点.加之总觉得自己对sql 的理解有些浮于表面,所以借着春 ...
- php入门到精通(复习笔记)
第一章:php语言基础 1,标记风格: ①<?php echo “hello”;?> ②<script language="php">echo " ...
- bind 详解
请看我的有道云笔记: http://note.youdao.com/noteshare?id=eaf4194473cf4294776fbc263ffe6b89&sub=5CB214C594E0 ...
- May 15th 2017 Week 20th Monday
Life is a flower of which love is the honey. 人生是花朵,爱情是花蜜. Not every life can be a flower, not every ...