mysql小白之旅——基础篇1——增删改查语句

1.SELECT语句

参考:https://www.techonthenet.com/mysql/select.php

SELECT [ ALL | DISTINCT | DISTINCTROW ]
       [ HIGH_PRIORITY ]
       [ STRAIGHT_JOIN ]
       [ SQL_SMALL_RESULT | SQL_BIG_RESULT ] [ SQL_BUFFER_RESULT ]
       [ SQL_CACHE | SQL_NO_CACHE ]
       [ SQL_CALC_FOUND_ROWS ]
expressions
FROM tables
[WHERE conditions]
[GROUP BY expressions]
[HAVING condition]
[ORDER BY expression [ ASC | DESC ]]
[LIMIT [offset_value] number_rows | LIMIT number_rows OFFSET offset_value]
[PROCEDURE procedure_name]
[INTO [ OUTFILE 'file_name' options 
       | DUMPFILE 'file_name'
       | @variable1, @variable2, ... @variable_n]
[FOR UPDATE | LOCK IN SHARE MODE];

2.INSERT语句

INSERT [ LOW_PRIORITY | DELAYED | HIGH_PRIORITY ] [ IGNORE ]
INTO table
(column1, column2, ... )
VALUES
(expression1, expression2, ... ),
(expression1, expression2, ... ),
[ ON DUPLICATE KEY UPDATE 
    dup_column1 = dup_expression1,
    dup_column2 = dup_expression2,
    ... ];

3.UPDATE语句

  ——更新多个字段

UPDATE [ LOW_PRIORITY ] [ IGNORE ]
table
SET column1 = expression1,
    column2 = expression2,
    ...
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]]
[LIMIT number_rows];

——从另一个表中拿到更新的字段来更新数据

UPDATE table1
SET column1 = (SELECT expression1
               FROM table2
               WHERE table1.column = table2.column)
[WHERE conditions];

——同时更新多张表

PS:5.7版本此语法更新不了,使用join更新

UPDATE table1, table2, ... 
SET column1 = expression1,
    column2 = expression2,
    ...
WHERE table1.column = table2.column
AND conditions;

4.DELETE语句(删除数据)

DELETE [ LOW_PRIORITY ] [ QUICK ] [ IGNORE ] FROM table
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]]
[LIMIT number_rows];

PS:可以排序后指定删除行,不排序的话会使用数据插入的顺序作为默认排序

5.TRUNCATE语句 (清空表)

TRUNCATE TABLE [database_name.]table_name;

6.UNION 操作(求并集,去重)

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

PS:UNION 默认就是 UNION DISTINCT

7.UNION ALL (求合集)

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION ALL
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

8.INTERSECT (交集)

MySQL

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
INTERSECT
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

9.INNER JOIN (simple join)(内连接)

参考:https://www.techonthenet.com/mysql/joins.php

MySQL

SELECT columns
FROM table1 
INNER JOIN table2
ON table1.column = table2.column;

  也可以写成:

SELECT table1.columns
FROM table1 
LEFT JOIN table2
ON table1.column = table2.column
WHERE table2.column is not null;

也可以写成(子查询效率较低):

SELECT columns
FROM table1 
WHERE EXISTS (SELECT *
              FROM table2
              WHERE table1.column = table2.column)

也可以写成(子查询效率较低):

SELECT columns
FROM table1 
WHERE column in (SELECT column
              FROM table2)

10.LEFT OUTER JOIN(左外连接)

MySQL

SELECT columns
FROM table1
LEFT [OUTER] JOIN table2
ON table1.column = table2.column;

11.RIGHT OUTER JOIN(右外连接)

MySQL

SELECT columns
FROM table1
RIGHT [OUTER] JOIN table2
ON table1.column = table2.column;

12. DISTINCT (移除重复语句)

SELECT DISTINCT expressions
FROM tables
[WHERE conditions];

13.ORDER BY 排序

SELECT expressions
FROM tables
[WHERE conditions]
ORDER BY expression [ ASC | DESC ];

14.GROUP BY(分组)

SELECT expression1, expression2, ... expression_n, 
       aggregate_function (expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n;

PS: aggregate_function 合计函数,如 SUM, COUNT, MIN, MAX, or AVG .

15.HAVING语句

SELECT expression1, expression2, ... expression_n, 
       aggregate_function (expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n
HAVING condition;

PS:此函数是为了对 GROUP BY之后的函数做二次限制

参考:https://www.techonthenet.com/mysql/having.php

猜你喜欢

转载自blog.csdn.net/u014112608/article/details/80884498