Mysql 基础
2022-05-24 19:19:22

Crate mysql database

  1. login & crate database
1
2
# mysql -u root -p
mysql> create database test;
  1. 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:

  1. varchar和char的的区别是什么
    Screenshot_20220524_194438

  2. binary和varbinary的区别

    类似char和varchar 不同的是他们包含二进制字符串而不包含非二进制字符串, 二进制字符串是由0和1组成的字符串, 二进制字符串可以用于存储图片, 视频, 音频等二进制文件。他们没有字符集,排序和比较基于字节的数值。

  3. 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;
  1. Not null: 必须传入输入值

  2. Auto increment: 自增长

  3. Default: 默认值

    如果是要实现自动写入时间,应该用 `TIMESTAMP`类型。

    DEFAULT 设置为 `CURRENT_TIMESTAMP` ` `。最好指定为` ` `NULL`

  4. Primary key: 主键,可以使用多列定义主键

  5. Engine: 存储引擎,默认是InnoDB

  6. Charset: 字符集,默认是utf8mb4

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

  1. 删除表
    1
    DROP TABLE `test`;
  2. 删除数据库
    1
    DROP DATABASE `test`;
    1
    mysqladmin -u root -p drop test
  3. 删除数据消除自增长
    1
    2
    ALTER TABLE `test` AUTO_INCREMENT = 1;
    //将自增长设为1,部分情况下可以解决自增长问题