前言
SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。虽然 SQL 是一门 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言,但是仍然存在着多种不同版本的 SQL 语言。然而,为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的命令(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)
7
一、一些最重要的 SQL 命令
SELECT - 从数据库中提取数据
UPDATE - 更新数据库中的数据
DELETE - 从数据库中删除数据
INSERT INTO - 向数据库中插入新数据
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
二、查询(SELECT)
1、查询所有列
SELECT * FROM Websites
2、查询指定列
SELECT name,country FROM Websites;
3、查询并去重(DISTINCT )
SELECT DISTINCT country FROM Websites;
4、按条件查询where
SELECT * FROM Websites WHERE id=1;
SELECT * FROM Websites WHERE country='CN';
5、SQL AND & OR 运算符
从 "Websites" 表中选取国家为 "CN" 且alexa排名大于 "50" 的所有网站:
SELECT * FROM Websites WHERE country='CN' AND alexa > 50;
从 "Websites" 表中选取国家为 "USA" 或者 "CN" 的所有客户:
SELECT * FROM Websites WHERE country='USA' OR country='CN';
从 "Websites" 表中选取 alexa 排名大于 "15" 且国家为 "CN" 或 "USA" 的所有网站:
SELECT * FROM Websites WHERE alexa > 15 AND (country='CN' OR country='USA');
6、SQL ORDER BY 关键字
ORDER BY 关键字用于对结果集进行排序。
ASC:表示按升序排序。
DESC:表示按降序排序。
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
7、SQL LIMIT 关键字
LIMIT指定返回的记录的数目
SELECT *
FROM Persons
LIMIT 5;
8、SQL LIKE 操作符
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SELECT column1, column2, ...
FROM table_name
WHERE column LIKE pattern;
示例
选取 name 以字母 "G" 开始的所有客户
SELECT * FROM Websites
WHERE name LIKE 'G%';
选取 name 以字母 "k" 结尾的所有客户:
SELECT * FROM Websites
WHERE name LIKE '%k';
选取 name 包含模式 "oo" 的所有客户:
SELECT * FROM Websites
WHERE name LIKE '%oo%';
选取 name 不包含模式 "oo" 的所有客户:
SELECT * FROM Websites
WHERE name NOT LIKE '%oo%';
9、SQL IN 操作符
IN 操作符允许您在 WHERE 子句中规定多个值。
SELECT * FROM Websites
WHERE name IN ('Google','百度','必应');
9、SQL BETWEEN 操作符
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
示例:
选取 alexa 介于 1 和 20 之间的所有网站:
SELECT * FROM Websites
WHERE alexa BETWEEN 1 AND 20;
选取 alexa 介于 1 和 20 之间但 country 不为 USA 和 IND 的所有网站:
SELECT * FROM Websites
WHERE (alexa BETWEEN 1 AND 20)
AND country NOT IN ('USA', 'IND');
选取 date 介于 '2016-05-10' 和 '2016-05-14' 之间的所有访问记录:
SELECT * FROM access_log
WHERE date BETWEEN '2016-05-10' AND '2016-05-14';
三、插入(INSERT INTO)
INSERT INTO 语句可以有两种编写形式。
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可
INSERT INTO table_name
VALUES (value1,value2,value3,...);
第二种形式需要指定列名及被插入的值:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
示例:
INSERT INTO Websites (name, url, alexa, country) VALUES ('百度','https://www.baidu.com/','4','CN');
四、更新(UPDATE)
UPDATE 语句用于更新表中已存在的记录。
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
注意:
在更新记录时要格外小心!在上面的实例中,如果我们省略了 WHERE 子句,如下所示:
UPDATE Websites
SET alexa='5000', country='USA'
执行以上代码会将 Websites 表中所有数据的 alexa 改为 5000,country 改为 USA。
执行没有 WHERE 子句的 UPDATE 要慎重,再慎重。
五、删除(DELETE)
DELETE 语句用于删除表中的记录。
DELETE FROM table_name
WHERE condition;
示例
DELETE FROM Websites WHERE name='Facebook' AND country='USA';
注意
您可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:
DELETE FROM table_name;
注释:在删除记录时要格外小心!因为您不能重来!