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) ------ 小数点位置固定的 ---> 数 ...
随机推荐
- C# 读写xml、excel、word、ppt、access
C# 读写xml.excel.word.access 这里只是起个头,不做深入展开,方便以后用到参考 读写xml,主要使用.net 的xml下的document using System;using ...
- jquery控制滚动条
$(function () { $("table tr td a").css('white-space', 'nowrap'); $("div[id$=ctlScroll ...
- swftools 将pdf转换swf常见问题说明
swftools将PDF转成swfSWFTools提供了一系列将各种文件转成swf的工具: font2swf.exe gif2swf.exe jpeg2swf.exe pdf2swf.exe png2 ...
- apache-实战(一)
Apache 1.html的完整格式 # vim /var/www/html/index.html<html><head><title>我要</title& ...
- 7.Zabbix 3.0 web监控
请查看我的有道云笔记: http://note.youdao.com/noteshare?id=5f6b67f98a802fb831a83d810969c583&sub=B8D5267BDD5 ...
- 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 ...
- python入门23 pymssql模块(python连接sql server增删改数据 )
增删改数据必须connect.commit()才会生效 回滚函数 connect.rollback() 连接数据库 ''' dinghanhua sql server增删改 ''' import py ...
- IOS MapKit框架的使用(专门用于地图显示)
● MapKit框架使用前提 ● 导入框架 ● 导入主头文件#import <MapKit/MapKit.h> ● MapKit框架使用须知 ● MapKit框架中所有数据类型的前 ...
- vue.js--基础事件定义,获取数据,执行方法传值
<template> <div id="app"> <h1>{{ msg }}</h1> <br> <button ...
- matlab各类数据l图像之间的转化
matlab各类数据图像之间的转化 rgb类型转化为二值的步骤例如以下: 1.採用命令im2double将rgb类型转化三维的double >> str='E:\programing\Ei ...