MySQL最常用的指令(最全的查询)
创始人
2024-03-28 01:29:52
0

介绍

MySQL 为关系型数据库(Relational Database Management System),一个关系型数据库由一个或数个表格组成,如下所示的一个表格


    name ▼ 键            ▼ 列(col)

┌┈┈┈┈┬┈┈┈┈┈┈┈┈┬┈┈┈┈┈┈┬┈┈┈┈┈┈┈┐

┆ id ┆ name   ┆ uid  ┆ level ┆  ◀ 表头header

├┈┈┈┈┼┈┈┈┈┈┈┈┈┤┈┈┈┈┈┈┤┈┈┈┈┈┈┈┤

┆  1 ┆ mysql  ┆ 0    ┆ 3     ┆

├┈┈┈┈┼┈┈┈┈┈┈┈┈┤┈┈┈┈┈┈┤┈┈┈┈┈┈┈┤

┆  2 ┆ redis  ┆ 12   ┆ 1     ┆  ◀ 行 row

└┈┈┈┈┴┈┈┈┈┈┈┈┈┴┈┈┈┈┈┈┴┈┈┈┈┈┈┈┘

    redis ▲ 值


  • 表头(header) 每一列的名称
  • 列(col) 具有相同数据类型的数据的集合
  • 行(row) 每一行用来描述某个人/物的具体信息
  • 值(value) 行的具体信息,每个值与该列数据类型相同
  • 键(key) 用来识别某个特定的人/物的方法,有唯一性

登录MySQL

# 默认用户名,-p 是密码,

# ⚠️参数后面不需要空格

mysql -h 127.0.0.1 -u <用户名> -p<密码>

mysql -D 数据库名 -h 主机名 -u 用户名 -p

mysql -h -P <端口号> -u -p [db_name]

mysql -h -u -p [db_name]

常用的

数据库 Database

CREATE DATABASE db ;

创建数据库

SHOW DATABASES;

列出数据库

USE db;

切换到数据库

CONNECT db ;

切换到数据库

DROP DATABASE db;

删除数据库

表 Table

SHOW TABLES;

列出当前数据库的表

SHOW FIELDS FROM t;

表的列表字段

DESC t;

显示表格结构

SHOW CREATE TABLEt;

显示创建表sql

TRUNCATE TABLEt;

删除表中的所有数据

DROP TABLEt;

删除表格

Proccess

show processlist;

列出进程

kill pid;

杀死进程

查看 MySQL 信息

# 显示当前mysql的version的各种信息

mysql> status;

# 显示当前mysql的version信息

mysql> select version();

# 查看 MySQL 端口号

mysql> show global variables like 'port';

退出MySQL会话

mysql> exit

退出 quit; 或 \q; 一样的效果

备份

创建备份

mysqldump -u user -p db_name > db.sql

导出不带架构的数据库

mysqldump -u user -p db_name --no-data=true --add-drop-table=false > db.sql

恢复备份

mysql -u user -p db_name < db.sql

MySQL 示例

管理表格

创建一个包含三列的新表

CREATE TABLE t (

    id    INT,

    name  VARCHAR DEFAULT NOT NULL,

    price INT DEFAULT 0

    PRIMARY KEY(id)

);

从数据库中删除表

DROP TABLE t ;

向表中添加新列

ALTER TABLE t ADD column;

从表中删除列c

ALTER TABLE t DROP COLUMN c ;

添加约束

ALTER TABLE t ADD constraint;

删除约束

ALTER TABLE t DROP constraint;

将表从t1重命名为t2

ALTER TABLE t1 RENAME TO t2;

将列c1重命名为c2

ALTER TABLE t1 RENAME c1 TO c2 ;

删除表中的所有数据

TRUNCATE TABLE t;

从表中查询数据

从表中查询列c1、c2中的数据

SELECT c1, c2 FROM t

查询表中的所有行和列

SELECT * FROM t

查询数据并使用条件筛选行

SELECT c1, c2 FROM t

WHERE condition

查询表中的不同行

SELECT DISTINCT c1 FROM t

WHERE condition

按升序或降序对结果集排序

SELECT c1, c2 FROM t

ORDER BY c1 ASC [DESC]

跳过行的偏移并返回下n行

SELECT c1, c2 FROM t

ORDER BY c1

LIMIT n OFFSET offset

使用聚合函数对行进行分组

SELECT c1, aggregate(c2)

FROM t

GROUP BY c1

使用HAVING子句筛选组

SELECT c1, aggregate(c2)

FROM t

GROUP BY c1

HAVING condition

从多个表查询

内部连接 t1 和 t2

SELECT c1, c2

FROM t1

INNER JOIN t2 ON condition

左连接t1和t1

SELECT c1, c2

FROM t1

LEFT JOIN t2 ON condition

右连接t1和t2

SELECT c1, c2

FROM t1

RIGHT JOIN t2 ON condition

执行完全外部连接

SELECT c1, c2

FROM t1

FULL OUTER JOIN t2 ON condition

生成表中行的笛卡尔积

SELECT c1, c2

FROM t1

CROSS JOIN t2

执行交叉连接的另一种方法

SELECT c1, c2

FROM t1, t2

使用INNER Join子句将t1连接到自身

SELECT c1, c2

FROM t1 A

INNER JOIN t1 B ON condition

使用SQL运算符,合并两个查询中的行

SELECT c1, c2 FROM t1

UNION [ALL]

SELECT c1, c2 FROM t2

返回两个查询的交集

SELECT c1, c2 FROM t1

INTERSECT

SELECT c1, c2 FROM t2

从另一个结果集中减去一个结果集

SELECT c1, c2 FROM t1

MINUS

SELECT c1, c2 FROM t2

使用模式匹配%查询行_

SELECT c1, c2 FROM t1

WHERE c1 [NOT] LIKE pattern

查询列表中的行

SELECT c1, c2 FROM t

WHERE c1 [NOT] IN value_list

查询两个值之间的行

SELECT c1, c2 FROM t

WHERE  c1 BETWEEN low AND high

检查表中的值是否为NULL

SELECT c1, c2 FROM t

WHERE  c1 IS [NOT] NULL

使用 SQL 约束

将c1和c2设置为主键

CREATE TABLE t(

    c1 INT, c2 INT, c3 VARCHAR,

    PRIMARY KEY (c1,c2)

);

将c2列设置为外键

CREATE TABLE t1(

    c1 INT PRIMARY KEY, 

    c2 INT,

    FOREIGN KEY (c2) REFERENCES t2(c2)

);

使c1和c2中的值唯一

CREATE TABLE t(

    c1 INT, c1 INT,

    UNIQUE(c2,c3)

);

确保c1>0和c1>=c2中的值

CREATE TABLE t(

  c1 INT, c2 INT,

  CHECK(c1> 0 AND c1 >= c2)

);

c2列中的设置值不为NULL

CREATE TABLE t(

     c1 INT PRIMARY KEY,

     c2 VARCHAR NOT NULL

);

修改数据

在表格中插入一行

INSERT INTO t(column_list)

VALUES(value_list);

在表格中插入多行

INSERT INTO t(column_list)

VALUES (value_list),

       (value_list), …;

将行从t2插入t1

INSERT INTO t1(column_list)

SELECT column_list

FROM t2;

更新列c1中所有行的新值

UPDATE t

SET c1 = new_value;

更新列c1、c2中与条件匹配的值

UPDATE t

SET c1 = new_value,

        c2 = new_value

WHERE condition;

删除表中的所有数据

DELETE FROM t;

删除表中的行子集

DELETE FROM t

WHERE condition;

管理视图

创建由c1和c2组成的新视图

CREATE VIEW v(c1,c2)

AS

SELECT c1, c2

FROM t;

使用选中选项创建新视图

CREATE VIEW v(c1,c2)

AS

SELECT c1, c2

FROM t;

WITH [CASCADED | LOCAL] CHECK OPTION;

创建递归视图

CREATE RECURSIVE VIEW v

AS

select-statement -- anchor part

UNION [ALL]

select-statement; -- recursive part

创建临时视图

CREATE TEMPORARY VIEW v

AS

SELECT c1, c2

FROM t;

删除视图

DROP VIEW view_name;

管理触发器

创建或修改触发器

CREATE OR MODIFY TRIGGER trigger_name

WHEN EVENT

ON table_name TRIGGER_TYPE

EXECUTE stored_procedure;

WHEN

BEFORE

在事件发生前调用

AFTER

事件发生后调用

EVENT

INSERT

为INSERT调用

UPDATE

调用UPDATE

DELETE

调用DELETE

TRIGGER_TYPE

FOR EACH ROW

-

FOR EACH STATEMENT

-

管理索引

在t表的c1和c2上创建索引

CREATE INDEX idx_name

ON t(c1,c2);

在t表的c3、c4上创建唯一索引

CREATE UNIQUE INDEX idx_name

ON t(c3,c4)

删除索引

DROP INDEX idx_name;

MySQL 数据类型

Strings

CHAR

String (0 - 255)

VARCHAR

String (0 - 255)

TINYTEXT

String (0 - 255)

TEXT

String (0 - 65535)

BLOB

String (0 - 65535)

MEDIUMTEXT

String (0 - 16777215)

MEDIUMBLOB

String (0 - 16777215)

LONGTEXT

String (0 - 429496­7295)

LONGBLOB

String (0 - 429496­7295)

ENUM

One of preset options

SET

Selection of preset options

Date & time

DATE

yyyy-MM-dd

TIME

hh:mm:ss

DATETIME

yyyy-MM-dd hh:mm:ss

TIMESTAMP

yyyy-MM-dd hh:mm:ss

YEAR

yyyy

Numeric

TINYINT x

Integer (-128 to 127)

SMALLINT x

Integer (-32768 to 32767)

MEDIUMINT x

Integer (-8388608 to 8388607)

INT x

Integer (-2147­483648 to 214748­3647)

BIGINT x

Integer (-9223­372­036­854­775808 to 922337­203­685­477­5807)

FLOAT

Decimal (precise to 23 digits)

DOUBLE

Decimal (24 to 53 digits)

DECIMAL

"­DOU­BLE­" stored as string

相关内容

热门资讯

北京专业离婚律师服务分析(20... 随着社会经济结构的变化与个人权利意识的增强,婚姻家事法律服务需求日益呈现出专业化、精细化的趋势。在北...
海南自贸港封关超十日 多项政策... 本月18日,海南自由贸易港正式启动全岛封关运作,到今天(28日)已超过10天,多项从封关起实施的“升...
涉嫌恶意串通,伪造借条提起诉讼... 为逃避债务、规避法院执行 田某华串通亲友、伪造借条 向海南省海口市美兰区人民法院 提起诉讼 美兰法院...
原创 在... 在古代,被皇帝赐死其实是一种特殊的待遇,而不仅仅是死亡本身值得关注,更应看赐字所体现的意义。 首...
原创 2... 近日,拥有287万粉丝的抖音网红主播王某强(账号名:某某超市)因被曝多次犯下刑事罪行引发舆论哗然,相...
全球货币政策为何出现明显分化? 2025年岁末,全球金融市场出现“超级央行周”。 从12月10日开始,美国、日本、英国、欧盟、俄罗斯...
广汽自主品牌“三担责”政策发布 IT之家 12 月 28 日消息,广汽集团今日正式发布自主品牌“三担责”政策:三电问题自燃、电池衰减...
原创 他... John McAvoy 是一位来自英国的铁人三项运动员,创造了多个世界纪录,其中包括100,000米...
原创 高... 12月26日这一天,对日本右翼势力来说,具有非常特殊的意义,甚至可能成为东亚局势的一个重要导火索。日...
石景山检察院:侵犯知识产权犯罪... 新京报讯(记者张静姝)12月24日上午,北京市石景山区人民检察院(以下简称“石景山区检察院”)在中关...