SQL Notebook

sql grammar

  • SQL 对大小写不敏感:SELECT 与 select 是相同的。
  • 某些数据库系统要求在每条 SQL 语句的末端使用分号。
  • SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。

Most important command

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

SQL SELECT 语句

SELECT 语句用于从数据库中选取数据。

结果被存储在一个结果表中,称为结果集。

1
2
SELECT column_name,column_name
FROM table_name;

SELECT DISTINCT 语句

在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。

DISTINCT 关键词用于返回唯一不同的值。

SQL WHERE 子句

WHERE 子句用于提取那些满足指定标准的记录。

语法

1
2
3
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;
1
SELECT * FROM Websites WHERE country='CN';

WHERE 子句中的运算符

下面的运算符可以在 WHERE 子句中使用:

运算符 描述
= 等于
<> 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式
IN 指定针对某个列的多个可能值

##AND & OR 运算符

AND & OR 运算符用于基于一个以上的条件对记录进行过滤。

1
2
3
SELECT * FROM Websites
WHERE alexa > 15
AND (country='CN' OR country='USA');

SQL ORDER BY 关键字

ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。

ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。

1
2
3
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;

例如 按多列排序

1
2
SELECT * FROM Websites
ORDER BY country,alexa;

SQL INSERT INTO 语句

INSERT INTO 语句用于向表中插入新记录。

SQL INSERT INTO 语法

INSERT INTO 语句可以有两种编写形式。

第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

1
2
INSERT INTO table_name
VALUES (value1,value2,value3,...);

第二种形式需要指定列名及被插入的值:

1
2
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

SQL UPDATE 语句

UPDATE 语句用于更新表中已存在的记录。

SQL UPDATE 语法

1
2
3
UPDATE Websites
SET alexa='5000', country='USA'
WHERE name='菜鸟教程';

==WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!==

在 MySQL 中可以通过设置sql_safe_updates 这个自带的参数来解决,当该参数开启的情况下,你必须在update 语句后携带 where 条件,否则就会报错。

set sql_safe_updates=1; 表示开启该参数

SQL DELETE 语句

DELETE 语句用于删除表中的行。

1
2
DELETE FROM table_name
WHERE some_column=some_value;

您可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:

DELETE FROM *table_name*;

DELETE * FROM *table_name*;

SQL SELECT TOP 子句

SELECT TOP 子句用于规定要返回的记录的数目。

SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的。

注意:并非所有的数据库系统都支持 SELECT TOP 语句。 MySQL 支持 LIMIT 语句来选取指定的条数数据, Oracle 可以使用 ROWNUM 来选取。

SQL Server / MS Access 语法

1
2
SELECT TOP number|percent column_name(s)
FROM table_name;

MySQL 语法

1
2
3
SELECT column_name(s)
FROM table_name
LIMIT number;

实例

1
2
3
SELECT *
FROM Persons
LIMIT 5;

Oracle 语法

1
2
3
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;

实例

1
2
3
SELECT *
FROM Persons
WHERE ROWNUM <=5;

SQL LIKE 操作符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

SQL LIKE 语法

1
2
3
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;

下面的 SQL 语句选取 name 以字母 "G" 开始的所有客户:

1
2
SELECT * FROM Websites
WHERE name LIKE 'G%';

下面的 SQL 语句选取 name 不包含模式 "oo" 的所有客户:

1
2
SELECT * FROM Websites
WHERE name NOT LIKE '%oo%';

SQL 通配符

在 SQL 中,通配符与 SQL LIKE 操作符一起使用。

SQL 通配符用于搜索表中的数据。

在 SQL 中,可使用以下通配符:

通配符 描述
% 替代 0 个或多个字符
_ 替代一个字符
[charlist] 字符列中的任何单一字符
[^*charlist*] 或 [!charlist] 不在字符列中的任何单一字符

IN 操作符

IN 操作符允许您在 WHERE 子句中规定多个值。

SQL IN 语法

1
2
3
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);