Mysql 基础
2022-05-24 19:19:22
Crate mysql database
- login & crate database
1 | # mysql -u root -p |
- login with crate database
1 | # 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:ss | 时间 |
datetime | 8 | 1000-01-01 00:00:00~9999-12-31 23:59:59 | yyyy-mm-dd hh:mm:ss | 日期时间 |
timestamp | 8 | 1970-01-01 00:00:00~2038-01-19 03:14:07 | yyyy-mm-dd hh:mm:ss | 时间戳 |
字符串类型
类型 | 大小 | 用途 |
---|---|---|
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
例子:
1
2
3
4
5
6
7
8
9
# 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
例子:
1 | root@seele # mysql -u root -p |
Delete table & Database
- 删除表
1
DROP TABLE `test`;
- 删除数据库
1
DROP DATABASE `test`;
1
mysqladmin -u root -p drop test
- 删除数据消除自增长
1
2ALTER TABLE `test` AUTO_INCREMENT = 1;
//将自增长设为1,部分情况下可以解决自增长问题