SQL基础
前言
现在拿名为SQLLearn
数据库,其中有一个表Websites
举例
+--------------------+
| Tables_in_SQLLearn |
+--------------------+
| Websites |
+--------------------+
SELECT
这是用于获取数的语句
SELECT column1, column2,.... From table_name;
SELECT * FROM table_name;
实操,获取整个表的数据:
SELECT * FROM Websites;
结果
mysql> SELECT * FROM Websites;
+--------+---------------+-------+
| name | url | other |
+--------+---------------+-------+
| 百度 | www.baidu.com | 无 |
| 百度 | www.baidu.com | 无 |
| 知乎 | www.zhihu.com | None |
+--------+---------------+-------+
3 rows in set (0.00 sec)
SELECT DISTINCT
在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。
DISTINCT 关键词用于返回唯一不同的值。
SELECT DISTINCT column1, column2, ... FROM table_name;
实操
SELECT DISTINCT other FROM Websites;
mysql> SELECT DISTINCT other FROM Websites;
+-------+
| other |
+-------+
| 无 |
| None |
+-------+
2 rows in set (0.06 sec)
WHERE
WHERE 语句用于提取那些满足指定条件的记录
语法如下
SELECT column1, column2, ...FROM table_name WHERE condition;
参数说明:
- column1, column2, ... :要选择的字段名称,可以为多个字段。如果不指定字段名称,则会选择所有字段。
- table_name:要查询的表名称。
- condition:提取条件
实操
SELECT * FROM Websites WHERE name="知乎";
mysql> SELECT * FROM Websites WHERE name="知乎";
+--------+---------------+-------+
| name | url | other |
+--------+---------------+-------+
| 知乎 | www.zhihu.com | None |
+--------+---------------+-------+
1 row in set (0.00 sec)
WHERE语句中的运算符
运算符 | 描述 |
---|---|
= | 等于 |
<> | 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 != |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
IN | 指定针对某个列的多个可能值 |
AND & OR 运算符
SQL AND & OR 运算符
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
演示:
SELECT * FROM Websites WHERE name="知乎" OR name="百度";
mysql> SELECT * FROM Websites WHERE name="知乎" OR name="百度";
+--------+---------------+-------+
| name | url | other |
+--------+---------------+-------+
| 百度 | www.baidu.com | 无 |
| 百度 | www.baidu.com | 无 |
| 知乎 | www.zhihu.com | None |
+--------+---------------+-------+
3 rows in set (0.00 sec)
ORDER BY 关键字
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
- column1, column2, ...:要排序的字段名称,可以为多个字段。
- ASC:表示按升序排序。
- DESC:表示按降序排序。
INSER INTO语句
SQL INSERT INTO 语句
INSERT INTO 语句用于向表中插入新记录。
SQL INSERT INTO 语法
INSERT INTO 语句可以有两种编写形式。
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTO table_name
VALUES (value1,value2,value3,...);
第二种形式需要指定列名及被插入的值:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
- table_name:需要插入新记录的表名。
- column1, column2, ...:需要插入的字段名。
- value1, value2, ...:需要插入的字段值。
实操:
INSERT INTO Websites (name,url,other) VALUES ("B站","www.zhihu.com","99");
INSERT INTO Websites (name,url,other) VALUES ("MKGamer","mkgamer.top","99999");
INSERT INTO Websites (name,url,other) VALUES ("必应","www.bing.com","559");
INSERT INTO Websites (name,url,other) VALUES ("Github","www.Github.com","988");
mysql> INSERT INTO Websites (name,url,other) VALUES ("B站","www.zhihu.com","99");
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO Websites (name,url,other) VALUES ("MKGamer","mkgamer.top","99999");
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO Websites (name,url,other) VALUES ("必应","www.bing.com","559");
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Websites (name,url,other) VALUES ("Github","www.Github.com","988");
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM Websites;
+---------+----------------+-------+
| name | url | other |
+---------+----------------+-------+
| 百度 | www.baidu.com | 无 |
| 百度 | www.baidu.com | 无 |
| 知乎 | www.zhihu.com | None |
| B站 | www.zhihu.com | 99 |
| MKGamer | mkgamer.top | 99999 |
| 必应 | www.bing.com | 559 |
| Github | www.Github.com | 988 |
+---------+----------------+-------+
7 rows in set (0.00 sec)
UPDATE 语句
UPDATE 语句用于更新表中已存在的记录。
SQL UPDATE 语法
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
参数说明:
- table_name:要修改的表名称。
- column1, column2, ...:要修改的字段名称,可以为多个字段。
- value1, value2, ...:要修改的值,可以为多个值。
- condition:修改条件,用于指定哪些数据要修改。
请注意 SQL UPDATE 语句中的 WHERE 子句!
WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!
演示:
UPDATE Websites SET name="BingAI",url="chat.bing.com" WHERE name="必应";
mysql> UPDATE Websites SET name="BingAI",url="chat.bing.com" WHERE name="必应";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM Websites;
+---------+----------------+-------+
| name | url | other |
+---------+----------------+-------+
| 百度 | www.baidu.com | 无 |
| 百度 | www.baidu.com | 无 |
| 知乎 | www.zhihu.com | None |
| B站 | www.zhihu.com | 99 |
| MKGamer | mkgamer.top | 99999 |
| BingAI | chat.bing.com | 559 |
| Github | www.Github.com | 988 |
+---------+----------------+-------+
7 rows in set (0.00 sec)
DELETE语句
DELETE 语句用于删除表中的记录。
DELETE 语法
DELETE FROM table_name
WHERE condition;
参数说明:
- table_name:要删除的表名称。
- condition:删除条件,用于指定哪些数据要删除。
请注意 SQL DELETE 语句中的 WHERE 子句!
WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除!
演示:
DELETE FROM Websites WHERE name="百度";
mysql> DELETE FROM Websites WHERE name="百度";
Query OK, 2 rows affected (0.00 sec)
mysql> SELECT * FROM Websites;
+---------+----------------+-------+
| name | url | other |
+---------+----------------+-------+
| 知乎 | www.zhihu.com | None |
| B站 | www.zhihu.com | 99 |
| MKGamer | mkgamer.top | 99999 |
| BingAI | chat.bing.com | 559 |
| Github | www.Github.com | 988 |
+---------+----------------+-------+
5 rows in set (0.00 sec)