专栏首页后台全栈之路MySQL/MariaDB 语句速查笔记
原创

MySQL/MariaDB 语句速查笔记

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

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

基础 CURD

Create,添加数据

INSERT INTO 表名 (列名, 列名, ...)
VALUES (值, 值)

Update,更新数据

UPDATE 表名 SET 列名=值, 列名=值, ...
WHERE 条件 ...

Read,读取

基本操作

SELECT 列名, 列名, ... WHERE 条件 ...

获取数据并去掉重复项

SELECT DISTINCT 列名, 列名, ... WHERE 条件 ...

Delete,删除

DELETE FROM 表名 WHERE 条件 ...

Find or Create 逻辑

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

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

数据表操作、调整

获取表信息

desc 表名

获取表创建语句

show create table 表名

添加字段

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

修改字段

# 修改字段类型
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 年问题

参考资料


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

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

原文标题:MySQL 速查笔记

发布日期:2019-07-02


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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 小面试官教你 MySQL——简介和功能

    MySQL 是我们作为后台开发中非常重要的软件。前段时间作为面试官,面试了几位后台开发的候选人——MySQL 的知识由浅入深一路问下去,并没有人能够完整地回答出...

    amc
  • 腾讯 Tars-Go 服务 Hello World——从 HTTP 开始

    Tars 框架最新的版本已经把内部的 Taf-Go 开源为 Tars-Go。作为与时俱进的程序员,当然要尝鲜啦。

    amc
  • 腾讯 Tars Web 管理端用户体系对接

    这段时间一直在基于 Tars 作开发。最近的文章也多是针对 Tars 的一些学习笔记。前面我们搭建了 Tars 基础框架,打开了 Tars web 管理界面进行...

    amc
  • 编程小白 | 每日一练(101)

    这道理放在编程上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从编程小白进阶到高手,需要经历的是日积月累的学习,那么如何学习呢?当然是每天都...

    C语言入门到精通
  • cmake教程二,变量以及flow control

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

    bear_fish
  • 模板模式

    定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。

    晚上没宵夜
  • 编程小白 | 每日一练(23)

    这道理放在编程上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从编程小白进阶到高手,需要经历的是日积月累的学习,那么如何学习呢?当然是每天都...

    C语言入门到精通
  • DBA生存警示:业务高峰误操作案例及建议

    编辑手记:对于资深的老DBA们,他们在漫长的职业生涯中养成了很多稀奇古怪的守则,以在复杂多变的环境中“幸存”,这源于无数血泪的教训,我曾经在《数据安全警示录》一...

    数据和云
  • 解决Python3无法使用supervisor问题

    简单、
  • Centos7安装Python3并安装Requests的方法

    由于centos7原本就安装了Python2,而且这个Python2不能被删除,因为有很多系统命令,比如yum都要用到。

    Erwin

扫码关注云+社区

领取腾讯云代金券