CREATE DATABASE 语句 创建数据库
创建一个名为 “my_db” 的数据库:
CREATE DATABASE my_db;
CREATE TABLE 语句 创建数据库中的表
CREATE TABLE `table_user` (
`userId` int(32) NOT NULL AUTO_INCREMENT,
`username` varchar(32) DEFAULT NULL COMMENT '用户名',
`password` varchar(32) DEFAULT NULL COMMENT '密码',
`summary` varchar(128) DEFAULT NULL COMMENT '简介',
`age` int(2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4;
MySQL中主要三种数据类型:Text(文本)、Number(数字)和 Date/Time(日期/时间)类型。
Text类型
Number 类型:
Date 类型:
上面是MySQL提供的,常用的就几个
varchar:
变长字符串,使用时我们必须设定其长度,最大值”理论值”65535个
- 如果存储从中文gbk,则最多是65533/2个;
- 如果存储中文utf-8,则最多存储65533/3个;
此类型的实际长度是存储内容决定,而设定的值是最多可存储的字符个数。
tinyint
TINYINT 型的字段如果不设置UNSIGNED类型,存储**-128到127的整数**。
通常,为了节省空间,应该尽可能的使用最小的整型数据。一个TINYINT型数据只占用一个字节,一个INT型数据占用四个字节。这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。
decimal(dec)精确小数类型—精确数的存储
DEC(5,3)
- M:精度,(整数位数+小数位数)不包含小数点的数字总位数(1–30),不指定默认为10
- D:小数位数,如果不指定,默认为0
若位数不够,小数末尾补零;若位数超预算(整数位数=M-D),报错。
enum :
单选项字符串数据类型。它非常适用于存储表单界面中的”单选项值”,它设定的时候,需要给定”固定的几个选项” 存储的时候就只存储其中的一个值。
格式:
enum("选项1","选项2","选项3"……)
向表中插入数据(两种方式)
写值所对应的序列号(序列号1开始)
INSERT INTO table_user (enum_sex)VALUES(1);
直接写值
INSERT INTO table_user (enum_sex)VALUES('boy');
set :
格式:
set("选项1","选项2","选项3"……)
向表中插入数据(两种方式)
写值所对应的序列号和(序列号1,2,4,8,16,……最多64个)
1+2+4=7
INSERT INTO table_user (hobby)VALUES(7);
直接写值
INSERT INTO table_user (hobby)VALUES('football,tennis');
text :
“长文本”字符类型,通常,其存储的类型不占距表格中行的数据容量限制,其本身不占距表中一行的数据容量的限制,其本身最长可存储65535个字符。
blob一般存储图片,数据库中效率低,很少使用。
datetime(时间日期类型)
向表中插入数据
INSERT INTO table_user (createtime)VALUES('2018-10-4 16:41:34');
timesamp:
timestamp(时间戳类型):就是指一个时间的”数据值”–本质其实就是一个数字。它的一个重要作用:能够自动获得时间戳的数据值–相当于”now()”(注:这个字段通常不需要插入数据)
下面时间类型和datetime差不多,就格式改变。
date(日期类型)
'2017-4-13'
time(时间类型)
'16:41:34'
year(年份类型)
'2017'
特殊情况使用
sql中的[]括号作用
避免关键字引用,用于区分列名,表名与关键字。另外如果列名中有空格也是要用方括号的。
例如,a表中有个列名叫from,如果你直接写select from from a肯定报错,这时就要使用方括号了。select [from] from a就可以。