cover题图来自网络

作为一个只会增删查改、从来没有系统性学习数据库的小白,这些天有了一个契机来学习相关的知识,便想到以此开一篇新的学习博文,记录一些关键语句与自己的理解。

本篇笔记主要是基于菜鸟教程的内容进行初步的学习。至少在快速入门这方面,菜鸟教程还从未让我失望过。

开始:增删查改

SQL 的全称为 Structured Query Language,下列语句均以 MySQL 语法为准。我们先假设有一个如下名为 Website 的「表」:

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
+----+--------------+---------------------------+-------+---------+

SELECT

以下语句用于在指定的表中选择列:

# 从指定表中选取指定列输出
SELECT column_name, column_name FROM table_name;

# 从指定表中选取所有列输出(即相当于输出整张表)
SELECT * FROM table_name;

# 从表中选取指定列,并输出其中的不同值(即去除列中重复的元素)
SELECT DISTINCT column_name, column_name FROM table_name;

WHERE

本子句用于提取满足指定条件的数据:

SELECT column_name, column_name 
FROM table_name 
WHERE column_name operator value;

例如 SELECT * FROM Websites WHERE country='CN';,将会仅输出表的 country 列中值为 CN 的行。其后面可以接逻辑运算符号、条件判断和 BETWEENLIKEIN 等关键词。


OEDER BY

本子句用于对输出的结果集按照一列或多列进行排序:

SELECT column_name,column_name 
FROM table_name 
ORDER BY column_name,column_name ASC|DESC;

升降序关键词

其中的 ASC 代表升序,默认如此,可不写出;而 DESC 代表降序,需要手动指定。

多列排序

ORDER BY 后写多列的参数即可,其效果类似分别排序:
SELECT * FROM Websites ORDER BY country,alexa;

与 HERE 之关系

如果需要使用到 WHERE 语句,则 ORDER BY 必须写到 WHERE 到后面;而如果没有 WHERE 语句,则 ORDER BY 放在表的后面。如:SELECT * FROM Website WHERE country='CN' ORDER BY alexa;


INSERT INTO

本语句用于向表中插入新的数据:

# 第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTO table_name
VALUES (value1,value2,value3,...);

# 第二种形式需要指定列名及被插入的值:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

id 字段是自动更新的,表中的每条数据都有一个唯一的数字。


UPDATE

本语句用于更新表中已存在的记录:

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

注意:WHERE 子句规定了哪条 / 哪些记录需要更新,若省略,则表中所有的列数据都会被更新!


DELETE

本语句用于删去表中指定的行:

DELETE FROM table_name
WHERE some_column=some_value;

注意:UPDATE 语句类似,WHERE 子句指定了删除的对象,若省略,整张表中所有的数据都将被删除!
(注:表中所有的行被删除,但表的结构、属性和索引将保持不变)