Crate mysql database#
- login & crate database
# mysql -u root -p
mysql> create database test;
- login with crate database
# mysqladmin -u root -p craete test
数据类型#
- 数值:整数,浮点数,布尔值,字符串
- 日期 / 时间:日期,时间,日期时间
- 字符串:字符串,二进制,字符集
数值类型#
类型 | 大小 | 范围 (有符号) | 范围 (无符号) | 用途 |
---|---|---|---|---|
tinyint | 1 | -128~127 | 0~255 | 整数 |
smallint | 2 | -32768~32767 | 0~65535 | 整数 |
mediumint | 3 | -8388608~8388607 | 0~16777215 | 整数 |
int | 4 | -2147483648~2147483647 | 0~4294967295 | 整数 |
bigint | 8 | -9223372036854775808~9223372036854775807 | 0~18446744073709551615 | 整数 |
float | 4 | -3.402823466E+38~3.402823466E+38 | -1.79E+308~1.79E+308 | 浮点数 |
double | 8 | -1.7976931348623157E+308~1.7976931348623157E+308 | -2.22E-308~2.22E-308 | 浮点数 |
decimal | DECIMAL (M,D) 中 M+2 和 D+2 中较大的数 | 依赖 M 和 D 的值 | 依赖 M 和 D 的值 | 小数值 |
日期和时间类型#
类型 | 大小 | 范围 | 格式 | 用途 |
---|---|---|---|---|
date | 4 | 1000-01-01~9999-12-31 | yyyy-mm-dd | 日期 |
time | 8 | -838:59:59~838:59:59 | hh:mm | 时间 |
datetime | 8 | 1000-01-01 00:00:00~9999-12-31 23:59:59 | yyyy-mm-dd hh:mm | 日期时间 |
timestamp | 8 | 1970-01-01 00:00:00~2038-01-19 03:14:07 | yyyy-mm-dd hh:mm | 时间戳 |
字符串类型#
类型 | 大小 | 用途 |
---|---|---|
char | 0~255 | 定长字符串 |
varchar | 0~65535 | 变长字符串 |
tinytext | 0~255 | 短文本字符串 |
text | 0~65535 | 长文本字符串 |
mediumtext | 0~16777215 | 中等长度文本字符串 |
langtext | 0~65535 | 极长文本字符串 |
tinyblob | 0-255 | 不超过 255 个字符的二进制字符串 |
blob | 0~65535 | 二进制长文本字符串 |
mediumblob | 0~16777215 | 中等长度的二进制字符串 |
longblob | 0~4294967295 | 长长度的二进制字符串 |
Tips:
-
binary 和 varbinary 的区别
类似 char 和 varchar 不同的是他们包含二进制字符串而不包含非二进制字符串,二进制字符串是由 0 和 1 组成的字符串,二进制字符串可以用于存储图片,视频,音频等二进制文件。他们没有字符集,排序和比较基于字节的数值。
-
Blob 和 Text 的区别
Blob 是二进制字符串,Text 是字符串。
Crate table#
例子:
```sql
# crate table
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(11) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
-
Not null: 必须传入输入值
-
Auto increment: 自增长
-
Default: 默认值
如果是要实现自动写入时间,应该用
`TIMESTAMP`
类型。DEFAULT 设置为
`CURRENT_TIMESTAMP` ` `。最好指定为` ` `NULL`
。 -
Primary key: 主键,可以使用多列定义主键
-
Engine: 存储引擎,默认是 InnoDB
-
Charset: 字符集,默认是 utf8mb4
例子:
root@seele # mysql -u root -p
Enter password:******
mysql> Use test;
Database changed
mysql> CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(11) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Query OK, 0 rows affected (0.00 sec)
Delete table & Database#
-
删除表
DROP TABLE `test`;
-
删除数据库
DROP DATABASE `test`;
mysqladmin -u root -p drop test
-
删除数据消除自增长
ALTER TABLE `test` AUTO_INCREMENT = 1; //将自增长设为1,部分情况下可以解决自增长问题