sql操作

sql操作

INSERT INTO

1
2
3
INSERT INTO Websites (name, url, country)
VALUES ('stackoverflow', 'http://stackoverflow.com/', 'IND');
--将插入一个新行,但是只在 "name"、"url" 和 "country" 列插入数据(id 字段会自动更新):

Update

1
2
3
4
UPDATE Websites
SET alexa='5000', country='USA'
WHERE name='菜鸟教程';
--把 "菜鸟教程" 的 alexa 排名更新为 5000,country 改为 USA

SQL通配符

在 SQL 中,通配符与 SQL LIKE 操作符一起使用。 SQL 通配符用于搜索表中的数据。 在 SQL 中,可使用一下通配符:

通配符 描述
% 替代 0 个或多个字符
- 替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist] 或 [!charlist] 不在字符列中的任何单一字符
使用 SQL % 通配符
1
2
3
SELECT * FROM Websites
WHERE url LIKE 'https%';
--选取 url 以字母 "https" 开始的所有网站
使用 SQL _ 通配符
1
2
3
4
5
6
7
SELECT * FROM Websites
WHERE name LIKE '_oogle';
--选取 name 以一个任意字符开始,然后是 "oogle" 的所有客户

SELECT * FROM Websites
WHERE name LIKE 'G_o_le';
--选取 name 以 "G" 开始,然后是一个任意字符,然后是 "o",然后是一个任意字符,然后是 "le" 的所有网站
使用 SQL [charlist] 通配符

MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式

1
2
3
4
5
6
7
8
9
10
11
SELECT * FROM Websites
WHERE name REGEXP '^[GFs]';
--SQL 语句选取 name 以 "G"、"F" 或 "s" 开始的所有网站

SELECT * FROM Websites
WHERE name REGEXP '^[A-H]';
--选取 name 以 A 到 H 字母开头的网站

SELECT * FROM Websites
WHERE name REGEXP '^[^A-H]';
--选取 name 不以 A 到 H 字母开头的网站

SQL IN 操作符

1
2
3
SELECT * FROM Websites
WHERE name IN ('Google','菜鸟教程');
--选取 name 为 "Google" 或 "菜鸟教程" 的所有网站

SQL 别名

列的别名实例

1
2
3
SELECT name AS n, country AS c
FROM Websites;
--指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。提示:如果列名称包含空格,要求使用双引号或方括号

SQL INNER JOIN 关键字

SQL INNER JOIN 语法

1
2
3
4
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
实例
1
2
3
4
5
6
SELECT Websites.name, access_log.count, access_log.date
FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count;
--将返回所有网站的访问记录

SQL LEFT JOIN 关键字

SQL LEFT JOIN 语法

1
2
3
4
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
实例
1
2
3
4
5
6
7
SELECT Websites.name, access_log.count, access_log.date
FROM Websites
LEFT JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count DESC;
--将返回所有网站及他们的访问量(如果有的话)。
--实例中我们把 Websites 作为左表,access_log 作为右表

SQL GROUP BY 语句

GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

SQL GROUP BY 语法
1
2
3
4
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

SQL DISTINCT 用法

SQL DISTINCT 示例

1
2
3
4
SELECT DISTINCT name, url
FROM Websites
WHERE id='10'
--可以防止id = 10,且 name 相同的数据出现