在数据库上执行的大部分工作由SQL语句完成。
有以下SQL命令
- SELECT - 从数据库中提取数据
- UPDATE - 更新数据库中的数据
- DELETE - 从数据库中删除数据
- INSERT INTO - 向数据库中插入新数据
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
以Websites数据表为例
一、SELECT
1.从表中选取某列(行)
语法
SELECT column_name(column_name)FROM table_name;
eg. 选取“name“和“country”列:
SELECT name,country FROM websits;
运行结果
选取所有列
SELECT * FROM table_name;
eg.读取表中所有数据
SELECT * FROM Wedsites;
运行结果
2.DISTINCT关键字
返回唯一不同的值。
在表中,一个列可能会包含多个重复值,有时希望仅仅列出不同(distinct)的值。
语法
SELECT DISTINCT column_name,column_name FROM table_name;
eg.从 "Websites" 表的 "country" 列中选取唯一不同的值,也就是去掉 "country" 列重复值:
SELECT DISTINCT country FROM Websites;
运行结果
3.WHERE 关键字
用于过滤,提取那些满足指定条件的记录
语法
SELECT column_name,column_name FROM table_name WHERE column_name operator value;
eg. 从 "Websites" 表中选取国家为 "CN" 的所有网站:
SELECT * FROM Websites WHERE country='CN';
运行结果
如果是数值字段,请不要使用引号。
eg.读取第一行的数据
SELECT * FROM Websites WHERE id=1;
运行结果
WHERE 关键字中的运算符
运算符 | 描述 |
= | 等于 |
<> | 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 != |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
IN | 指定针对某个列的多个可能值 |
AND & OR 运算符
用于基于一个以上的条件对记录进行过滤。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
AND
eg. 从 "Websites" 表中选取国家为 "CN" 且alexa排名大于 "50" 的所有网站
SELECT * FROM Websites WHERE country='CN' AND alexa > 50;
运行结果
OR
eg.从 "Websites" 表中选取国家为 "USA" 或者 "CN" 的所有客户
SELECT * FROM Websites WHERE country='USA' OR country='CN';
运行结果
结合AND&OR
eg. 从 "Websites" 表中选取 alexa 排名大于 "15" 且国家为 "CN" 或 "USA" 的所有网站:
SELECT * FROM Websites WHERE alexa > 15 AND (country='CN' OR country='USA');
运行结果
4. ORDER BY 关键字
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,可以使用 DESC 关键字。
语法
SELECT column_name,column_name FROM table_name ORDER BY column_name,column_name ASC/DESC;
ORDER BY
eg. 从 "Websites" 表中选取所有网站,并按照 "alexa" 列排序:
SELECT * FROM Websites ORDER BY alexa;
运行结果
ORDER BY DESC
eg. 从 "Websites" 表中选取所有网站,并按照 "alexa" 列降序排序:
SELECT * FROM Websites ORDER BY alexa DESC;
运行结果
ORDER BY 多列
eg. 从 "Websites" 表中选取所有网站,并按照 "country" 和 "alexa" 列排序:
SELECT * FROM Websites ORDER BY country,alexa;
运行结果
##先按照country排序,再根据alexa排序。
SELECT * FROM websites ORDER BY alexa,country;
##先按照alexa排序,再按照country排序
有个排序的先后顺序。
二、INSERT INTO
用于向表中插入新记录。
NSERT INTO 语句可以有两种编写形式。
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTO table_name VALUES (value1,value2,value3,...);
第二种形式需要指定列名及被插入的值:
INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
eg. 向 "Websites" 表中插入一个新行
添加 name:百度,
alexa: 4
country: CN
INSERT INTO Websites (name, url, alexa, country) VALUES ('百度','https://www.baidu.com/','4','CN');
再进行读取
SELECT * FROM Wedsites;
运行结果
##id列是自动更新的,表中的每条记录都有一个唯一的数字。
在指定的列插入数据
eg. 插入一个新行,但是只在 "name"、"url" 和 "country" 列插入数据(id 字段会自动更新)
INSERT INTO Websites (name, url, country) VALUES ('stackoverflow', 'http://stackoverflow.com/', 'IND');
进行读取
SELECT * FROM Wedsites;
运行结果
三、UPDATE
UPDATE 语句用于更新表中的记录。
语法
UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column =some_value;
WHERE 子句规定哪条记录或者哪些记录需要更新。如果省略了 WHERE 子句,所有的记录都将被更新!
###在运行时会出现错误
You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
eg. 把 "菜鸟教程" 的 alexa 排名更新为 5000,country 改为 USA
UPDATE Websites SET alexa='5000', country='USA' WHERE name='菜鸟教程';
运行结果
Update Attention!
在更新记录时要格外小心!在上面的实例中,如果我们省略了 WHERE 子句,如下所示:
UPDATE Websites SET alexa='5000', country='USA'
执行以上代码会将 Websites 表中所有数据的 alexa 改为 5000,country 改为 USA。
执行没有 WHERE 子句的 UPDATE 要慎重,再慎重。
四、DELETE
DELETE 语句用于删除表中的记录。
删除表中的行
语法
DELETE FROM table_name WHERE some_column=some_value;
## WHERE 子句规定哪条记录或者哪些记录需要删除。如果省略了 WHERE 子句,所有的记录都将被删除
eg. 从 "Websites" 表中删除网站名为 "Facebook" 且国家为 USA 的网站。
DELETE FROM Websites WHERE name='Facebook' AND country='USA';
运行结果
删除所有数据
DELETE FROM table_name;
###感受
SQL语言对大小写不敏感,在进行UPDATE,DELETE时要切记关键字WHERE!!!
11.2很充实,干论文去了。