Seele

Seele

Mysql 基础

Crate mysql database#

  1. login & crate database
  # mysql -u root -p
  mysql> create database test;
  1. login with crate database
  # mysqladmin -u root -p craete test

数据类型#

  • 数值:整数,浮点数,布尔值,字符串
  • 日期 / 时间:日期,时间,日期时间
  • 字符串:字符串,二进制,字符集

数值类型#

类型大小范围 (有符号)范围 (无符号)用途
tinyint1-128~1270~255整数
smallint2-32768~327670~65535整数
mediumint3-8388608~83886070~16777215整数
int4-2147483648~21474836470~4294967295整数
bigint8-9223372036854775808~92233720368547758070~18446744073709551615整数
float4-3.402823466E+38~3.402823466E+38-1.79E+308~1.79E+308浮点数
double8-1.7976931348623157E+308~1.7976931348623157E+308-2.22E-308~2.22E-308浮点数
decimalDECIMAL (M,D) 中 M+2 和 D+2 中较大的数依赖 M 和 D 的值依赖 M 和 D 的值小数值

日期和时间类型#

类型大小范围格式用途
date41000-01-01~9999-12-31yyyy-mm-dd日期
time8-838:59:59~838:59:59hh:mm时间
datetime81000-01-01 00:00:00~9999-12-31 23:59:59yyyy-mm-dd hh:mm日期时间
timestamp81970-01-01 00:00:00~2038-01-19 03:14:07yyyy-mm-dd hh:mm时间戳

字符串类型#

类型大小用途
char0~255定长字符串
varchar0~65535变长字符串
tinytext0~255短文本字符串
text0~65535长文本字符串
mediumtext0~16777215中等长度文本字符串
langtext0~65535极长文本字符串
tinyblob0-255不超过 255 个字符的二进制字符串
blob0~65535二进制长文本字符串
mediumblob0~16777215中等长度的二进制字符串
longblob0~4294967295长长度的二进制字符串

Tips:

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

  2. binary 和 varbinary 的区别

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

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

  2. Auto increment: 自增长

  3. Default: 默认值

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

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

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

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

  6. 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#

  1. 删除表

     DROP TABLE `test`;
    
  2. 删除数据库

    DROP DATABASE `test`;
    
    mysqladmin -u root -p drop test
    
  3. 删除数据消除自增长

    ALTER TABLE `test` AUTO_INCREMENT = 1;
    //将自增长设为1,部分情况下可以解决自增长问题
    
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。