mysql longbolb_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, ......) 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 |

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值