MySQL基本语句

一、DDL 语句(Data Definition Languages,数据定义语言)

这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。

1.创建数据库

CREATE DATABASE db_name;

2.删除数据库

DROP DATABASE db_name;

3.创建表

CREATE TABLE tb_name (
column_name_1   column_type_1   constraints,
column_name_2   column_type_2   constraints,
column_name_3   column_type_3   constraints,
...
column_name_n   column_type_n   constraints)

column_name 为列的名字, column_type 为列的数据类型, constraints 为列的约束条件。

4.查看表定义

DESC tb_name;

5.查看创建表的SQL语句

SHOW CREATE TABLE db_name;

6.删除表

DROP TABLE tb_name

7.修改表

修改表的数据类型

ALTER TABLE tb_name MODIFY [COLUMN] column_name column_definition [FIRST | AFTER column_name];

增加表字段

ALTER TABLE tb_name ADD [COLUMN] column_name column_definition [FIRST | AFTER column_name];

删除表字段

ALTER TABLE tb_name DROP [COLUMN] column_name;

修改字段名

ALTER TABLE tb_name CHANGE [COLUMN] old_column_name column_name column_definition [FIRST | AFTER column_name];

修改字段顺序

[FIRST | AFTER column_name];

修改字段顺序主要是通过 FIRST 和 AFTER,在其后指定字段名则是调整至该字段前一位或后一位,不指定字段名则是调整至最前或者最后。

更改表名

ALTER TABLE tb_name RENAME [TO] new_tb_name;

二、DML 语句(Data Manipulation Language,数据操纵语句)

1.插入记录

INSERT INTO tb_name (field1, field2, ..., fieldn) VAULES(value1, value2, ...,valuen);

可空字段、非空但是含有默认值的字段、自增字段可以不列在字段列表中。

INSERT INTO tb_name VAULES(value1, value2, ...,valuen);

也可以不指定字段名称,VALUES 顺序和字段排列顺序一致。

INSERT INTO tb_name (field1, field2, ..., fieldn) 
VAULES
(record1_value1, record1_value2, ...,record1_valuen),
(record2_value1, record2_value2, ...,record2_valuen),
...
(recordn_value1, recordn_value2, ...,recordn_valuen);

也可以同时插入多行的记录。

2.更新记录

UPDATE tb_name SET field1=value1, field2=value2, ..., fieldn=valuen [WHERE condition];

3.更新多个表中的数据

UPDATE tb_name1, tb_name2, ..., tb_namen SET tb_name1.field=value, ..., tb_namen.field=value [WHERE condition];

4.删除记录

DELETE FROM tb_name [WHERE condition];

5.删除多个表中的数据

DELETE tb_name1, tb_name2, ..., tb_namen FROM tb_name1, tb_name2, ..., tb_namen [WHERE condition];

真正要删除的记录在 FROM 前的 tb_name 中,FROM 后的 tb_name 是用于 WHERE 中的条件判断。

6.查询记录

SELECT column_name FROM tb_name;

查询不重复的记录

在要查询的 column_name 前添加字段 distinct

SELECT distinct column_name FROM tb_name;

条件查询

SELECT column_name FROM tb_name WHERE condition;

排序

SELECT * FROM tb_name [WHERE condition] [ORDER BY field1 [DESC|ASC], field2 [DESC|ASC], ..., fieldn [DESC|ACS]];

DESC 表示按照字段进行降序排序, ASC 表示升序排序,不指定默认升序排序。

限制

SELECT * FROM tb_name [LIMIT offset_start, row_count];

offset_start 表示偏移量, row_conut 表示显示的行数。

SELECT * FROM tb_name [LIMIT row_count];

只指定一个参数时,默认偏移量为0。

聚合

很多情况下,需要对一些数据进行汇总。

SELECT [field1, field2, ..., fieldn] function_name
FROM tb_name
[WHERE condition]
[GROUP BY field1, field2, ..., fieldn
[WITH ROLLUP]
[HAVING condition]];

function_name 表示要做的聚合操作,又称聚合函数。常用的有 sum()、 count(*)、 max() 和 min()。

GROUP BY 关键字表示要进行分类聚合的字段。

WITH ROLLUP 表明是否对分类聚合后的结果进行再汇总。

HAVING 关键字表示对分类后的结果再进行条件的过滤。

注意:HAVING 和 WHERE 的区别在于,HAVING 是对聚合后的结果进行条件的过滤,而 WHERE 是对聚合前的记录进行过滤。

表连接

需要同时显示多个表中的字段的时候,通过表连接可以实现,表连接分为内连接外连接两种。

内连接选出两张表中互相匹配的记录。外连接会选出其它的记录。

内连接

SELECT field1, field2, ...,fieldn FROM tb_name1, tb_name2, ..., tb_namen [WHERE condition];

外连接

外连接分为左连接右连接

左连接:包含左边表中的所有记录,左边表中某些字段的记录在右边表中有没有匹配项会被显示为空。

右连接:包含右边表中的所有记录,右边表中某些字段的记录在左边表中有没有匹配项会被显示为空。

SELECT left_field, right_field FROM left_tb_name
LEFT JOIN right_tb_name ON condition;
SELECT left_field, right_field FROM right_tb_name
LEFT JOIN left_tb_name ON condition;

子查询

查询的时候,condition 需要的条件是另外一个 SELECT 语句的结果,称为子查询。

子查询的关键字主要包括:IN、 NOT IN、 =、 !=、 EXISTS 和
NOT EXISTS 等。

记录联合

将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来。关键字是 UNION 和 UNION ALL。

SELECT * FROM tb_name1 [WHERE condition]
UNION | UNION ALL
SELECT * FROM tb_name2 [WHERE condition]
...
UNION | UNION ALL
SELECT * FROM tb_namen [WHERE condition]

UNION ALL 是表示全部记录,包括了多个查询结果的重复记录。如果希望去掉多个查询结果的重复记录,使用 UNION 关键字。

三、DCL 语句(Data Control Language,数据控制语句)

这些语句主要是 DBA 用于管理系统中的对象权限

1.权限控制

GRANT all ON db_name.tb_name TO 'user_name'@'host_name';
REVOKE all ON db_name.tb_name FROM 'user_name'@'host_name';

你可能感兴趣的:(MySQL基本语句)