SQL语法

发布于 2020-12-01  336 次阅读


1.基础代码

    菜鸟教程&SQL

mysql> use RUNOOB;
Database changed

mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM Websites;
+----+--------------+---------------------------+-------+---------+
| 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     |
+----+--------------+---------------------------+-------+---------+
5 rows in set (0.01 sec)
代码:
use RUNOOB; 命令用于选择数据库。
set names utf8; 命令用于设置使用的字符集。
SELECT * FROM Websites; 读取数据表的信息。
上面的表包含五条记录(每一条对应一个网站信息)和5个列(id、name、url、alexa 和country)。
且sql对大小写不敏感


其他代码:
SELECT - 从数据库中提取数据
UPDATE - 更新数据库中的数据
DELETE - 从数据库中删除数据
INSERT INTO - 向数据库中插入新数据
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引


2.符号

;
分号可以使你一次执行多条语句。

''
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)
如果是数值字段,请不要使用引号

4.语法示例

SELECT name,country FROM Websites;
从 "Websites" 表中选取 "name" 和 "country" 列。

SELECT * FROM Websites;
从Websites中选取所有列并输出

SELECT DISTINCT country FROM Websites;
从 "Websites" 表的 "country" 列中选取唯一不同的值,也就是去掉 "country" 列重复值。
输出为USA CN

SELECT * FROM Websites WHERE country='CN';
从 "Websites" 表中选取国家为 "CN" 的所有网站。

SELECT * FROM Websites WHERE id=1;
搜索 Websites 等于 1 的数据。
where可以使用>,>=,<,<=,!=或<>

Select * from emp where sal between 1500 and 3000;
搜索emp中1500到3000之间的值。

Select * from emp where ename like 'M%';
搜索 EMP 表中 Ename 列中有 M 这个值,M 为要查询内容中的模糊信息。
% 表示多个字值,_ 下划线表示一个字符;
M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的。
%M% : 表示查询包含M的所有内容。
%M_ : 表示查询以M在倒数第二位的所有内容。

SELECT * FROM Websites
WHERE country='CN'
AND alexa > 50;
从 "Websites" 表中选取国家为 "CN" 且alexa排名大于 "50" 的所有网站。

SELECT * FROM Websites
WHERE country='USA'
OR country='CN';
从 "Websites" 表中选取国家为 "USA" 或者 "CN" 的所有客户。

SELECT * FROM Websites
WHERE alexa > 15
AND (country='CN' OR country='USA');
从 "Websites" 表中选取 alexa 排名大于 "15" 且国家为 "CN" 或 "USA" 的所有网站。

SELECT * FROM Websites
ORDER BY alexa;
从 "Websites" 表中选取所有网站,并按照 "alexa" 列排序。

SELECT * FROM Websites
ORDER BY alexa DESC;
从 "Websites" 表中选取所有网站,并按照 "alexa" 列降序排序。

SELECT * FROM Websites
ORDER BY country,alexa;
从 "Websites" 表中选取所有网站,并按照 "country" 和 "alexa" 列排序。

INSERT INTO Websites (name, url, alexa, country)
VALUES ('百度','https://www.baidu.com/','4','CN');
向 "Websites" 表中插入一个新行。