Skip to content

MySQL 基本语句

1. 连接MySQL

mysql -u root -p

linux 下需要用管理员运行 sudo,原因未知。

2. MySQL管理

(1). 添加用户

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    -> ON DATABASE.*
    -> TO 'user'@'localhost'
    -> IDENTIFIED BY 'password';

上述命令为向DATABASE的数据库添加user的用户,密码为password MySQL语句以;结束

(2). USE DATABASES :

选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。

mysql> use DATABASE;

(3). SHOW DATABASES :

列出 MySQL 数据库管理系统的数据库列表。

(4). SHOW TABLES:

显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。

(5). SHOW COLUMNS FROM 数据表:

显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。

(6). SHOW INDEX FROM 数据表:

显示数据表的详细索引信息,包括PRIMARY KEY(主键)。

3. MySQL创建数据库

(1). CREATE DATABASE 数据库名;

(2). 使用 mysqladmin 创建数据库

mysqladmin -u root -p create 数据库名

4. MySQL删除数据库

(1). drop database 数据库名;

(2). 使用 mysqladmin 删除数据库

mysqladmin -u root -p drop 数据库名

5. MySQL选择数据库

use 数据库名;

6. MySQL 创建数据表

CREATE TABLE table_name(
   -> id INT NOT NULL AUTO_INCREMENT,
   -> title VARCHAR(100) NOT NULL,
   -> author VARCHAR(40) NOT NULL,
   -> date DATE,
   -> PRIMARY KEY ( id )
   -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
  • AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
  • PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
  • ENGINE 设置存储引擎,CHARSET 设置编码。

7. MySQL 删除数据表

DROP TABLE table_name;

8. MySQL 插入数据

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );
- 读取数据表:select * from table_name;

9. MySQL 查询数据

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]

10 . MySQL WHERE子句

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件。
  • 你可以在 WHERE 子句中指定任何条件。
  • 你可以使用 AND 或者 OR 指定一个或多个条件。
  • WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
  • WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。

11. MySQL UPDATE 更新

UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]

12. MySQL DELETE 语句

DELETE FROM table_name [WHERE Clause]

  • 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
  • 你可以在 WHERE 子句中指定任何条件
  • 您可以在单个表中一次性删除记录。

13. MySQL LIKE 子句

SELECT field1, field2,...fieldN 
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • 你可以在 WHERE 子句中指定任何条件。
  • 你可以在 WHERE 子句中使用LIKE子句。
  • 你可以使用LIKE子句代替等号 =。
  • LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
  • 你可以使用 AND 或者 OR 指定一个或多个条件。
  • 你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。

14. MySQL UNION

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
  • expression1, expression2, ... expression_n: 要检索的列。
  • tables: 要检索的数据表。
  • WHERE conditions: 可选, 检索条件。
  • DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。
  • ALL: 可选,返回所有结果集,包含重复数据。

15. MySQL 排序

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;

  • 你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
  • 你可以设定多个字段来排序。
  • 你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
  • 你可以添加 WHERE...LIKE 子句来设置条件。

16. MySQL 分组

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

17. MySQL 连接的使用

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
    SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a 
        INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
    
    SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a 
        LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
    
    SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a 
        RIGHT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
    

18. MySQL NULL 值处理

我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。

为了处理这种情况,MySQL提供了三大运算符:

IS NULL: 当列的值是 NULL,此运算符返回 true。

IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。

<=>: 比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true。

关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。

在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 NULL,即 NULL = NULL 返回 NULL 。

MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。

19. MySQL 正则表达式

20. MySQL 事务

21. MySQL ALTER命令

22. MySQL 索引

23. MySQL 临时表

24. MySQL 复制表

25. MySQL 元数据

26. MySQL 序列使用

27. MySQL 处理重复数据

28. MySQL 及 SQL 注入

29. MySQL 导出数据

30. MySQL 导入数据

31. MySQL 函数

32. MySQL 运算符

REF

[1]. https://www.runoob.com/mysql/