MySQL/MariaDB 语句速查笔记

2019-11-08 12:38:58 浏览数 (2)

平时实际开发的时候,其实并不太依赖 MySQL 作为 关系型数据库 中的 “关系” 这一属性,更多地只是把 MySQL 作为数据存储的介质。因此 MySQL 语句其实很少写,所以本文用于记录一些 MySQL 在常规数据操作中的常用语法,备查。少用或者不用的知识就不列了。

本文地址:https://cloud.tencent.com/developer/article/1455009

基础 CURD

Create,添加数据

代码语言:txt复制
INSERT INTO 表名 (列名, 列名, ...)
VALUES (值, 值)

Update,更新数据

代码语言:txt复制
UPDATE 表名 SET 列名=值, 列名=值, ...
WHERE 条件 ...

Read,读取

基本操作

代码语言:txt复制
SELECT 列名, 列名, ... WHERE 条件 ...

获取数据并去掉重复项

代码语言:txt复制
SELECT DISTINCT 列名, 列名, ... WHERE 条件 ...

Delete,删除

代码语言:txt复制
DELETE FROM 表名 WHERE 条件 ...

Find or Create 逻辑

这是一个很实际的需求,业务需要依据条件获取一个条目,如果不存在,则创建该条目。如果用 select insert 组合,那么这个操作并不原子。理想情况下是使用 UNIQUE,但很多时候并不行。那么可以采用以下的语句:

代码语言:txt复制
INSERT INTO 表名 (列名1, 列名2, 列名3, ...)
SELECT * FROM (SELECT 值1 AS 列名1, 值2 AS 列名2, 值3 AS 列名3, ...) AS tmp
WHERE NOT EXISTS (
    SELECT id FROM 表名
    WHERE 条件 ...
) LIMIT 1

数据表操作、调整

获取表信息

代码语言:txt复制
desc 表名

获取表创建语句

代码语言:txt复制
show create table 表名

添加字段

代码语言:txt复制
# 非空、带默认值:
ALTER TABLE 表名 ADD 列名 数据类型 NOT NULL DEFAULT 默认值 COMMENT 注释
# 不带默认值:
ALTER TABLE 表名 ADD 列名 数据类型 COMMENT 注释
# 指定添加字段的位置
ALTER TABLE 表名 ADD 列名 数据类型 COMMENT 注释 AFTER 前一列名

修改字段

代码语言:txt复制
# 修改字段类型
ALTER TABLE 表名 MODIFY 列名 数据类型 ...		# 后面的 ... 需要和前面添加字段的 “数据类型” 后面的那些项一致
# 修改字段名
ALTER TABLE 表名 CHANGE 列名 新列名 数据类型 ...

MySQL 常用数据类型

整型数值

  • tinyint:相当于 int8_t
  • smallint:相当于 int16_t
  • int:相当于 int32_t
  • bigint:相当于 int64_t,建议用 bigint 存 timestamp 类型
  • 上述四种数据,可以加上 unsigned 表示无符号数,比如 tinyint unsigned 相当于 uint8_t

定义整型数值时,可以在后面加上括号,写一个数字,如 int(11),这个数字仅仅表示显示长度(十进制),不影响实际数据位宽。

字符串

  • char(n) :固定长度字符串,长度为 n,最大为 255。
  • varchar(n):变长字符串,最长长度为 n,最大为 65535。

日期和时间

  • date:日期,格式为 "2008-12-2"
  • time:仅时间,格式为 "13:15:55" 或 "13:15:55:123"
  • datetime(m):日期和时间,m 表示秒小数点后的位数
  • timestamp:不建议用,该值相当于 int32_t,有 2038 年问题

参考资料

  • MySQL: Insert record if not exists in table

本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

原作者: amc,欢迎转载,但请注明出处。

原文标题:MySQL 速查笔记

发布日期:2019-07-02


原文链接:https://cloud.tencent.com/developer/article/1455009。

0 人点赞