SQL关键字及其用途

where关键字:筛选符合条件的记录,用的很多

DISTINCT关键字:筛选不重复的列 

SQL关键字及其用途

判断空值:is null

不带比较运算符:SELECT studentNO FROM student WHERE 0(不返回值,0转化为false)

AND & OR运算符:串联多个筛选条件

ORDER BY关键字:结果按某个字段排序(默认为升序ASC) 降序是DESC,有多列时先按第一列排序,再第二列排序
INSERT INTO:向表中插入新记录,它可以有两种编写形式
INSERT INTO table_name VALUES (value1,value2,value3,...);
INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
UPDATE:更新表中的记录
//WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!
UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value;
DELETE:删除表中的记录 WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除!
SELECT TOP:规定要返回的记录的数目,对于拥有数千条记录的大型表来说,是非常有用的。

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

SELECT TOP 50 PERCENT * FROM Websites;

SELECT * FROM Websites LIMIT 2;

LIKE :在 WHERE 子句中搜索列中的指定模式。

SQL关键字及其用途

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

选取 name 以 "G"、"F" 或 "s" 开始的所有网站:WHERE name REGEXP '^[GFs]';

IN :在 WHERE 子句中规定多个值。

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);
//NOT IN (value1,value2,...)

BETWEEN :选取介于两个值之间的数据范围内的值。

//选取 name 以介于 'A' 和 'H' 之间字母开始的所有网站
SELECT * FROM Websites
WHERE name BETWEEN 'A' AND 'H';
//NOT BETWEEN 'A' AND 'H';

请注意,在不同的数据库中,BETWEEN 操作符会产生不同的结果!
在某些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段。

因此,请检查您的数据库是如何处理 BETWEEN 操作符!

别名:为表名称或列名称指定别名(用as+别名表示)

//我们把三个列(url、alexa 和 country)结合在一起,并创建一个名为 "site_info" 的别名:
SELECT name, CONCAT(url, ', ', alexa, ', ', country) AS site_info
FROM Websites;

在下面的情况下,使用别名很有用:

  • 在查询中涉及超过一个表
  • 在查询中使用了函数
  • 列名称很长或者可读性差
  • 需要把两个列或者多个列结合在一起

JOIN:用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段(INNER JOIN最常见)

SQL关键字及其用途

在我们继续讲解实例之前,我们先列出您可以使用的不同的 SQL JOIN 类型:

  • INNER JOIN:如果表中有至少一个匹配,则返回行
  • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN:只要其中一个表中存在匹配,则返回行

在使用 join 时,on 和 where 条件的区别如下:

  •  1、 on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。
  •  2、where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

UNION :合并两个或多个 SELECT 语句的结果,但是它不会列出两个表中重复的所有记录

UNION ALL :合并两个或多个 SELECT 语句的结果并列出两个表中重复的所有记录

SELECT INTO :从一个表复制数据,然后把数据插入到另一个新表中。

MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECT 

或者 CREATE TABLE   新表    AS  SELECT * FROM    旧表

*select into from 和 insert into select 都是用来复制表

两者的主要区别为: select into from 要求目标表不存在,因为在插入时会自动创建;insert into select from 要求目标表存在。

CREATE DATABASE :创建数据库

CREATE TABLE :创建数据库中的表

约束(Constraints):

SQL关键字及其用途

命名 UNIQUE 约束,并定义多个列的 UNIQUE:CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)

撤销 UNIQUE 约束:ALTER TABLE Persons DROP CONSTRAINT uc_PersonID

撤销主键:ALTER TABLE 表名 DROP PRIMARY KEY

FOREIGN KEY 约束:预防破坏表之间连接的行为,防止非法数据插入外键列,它必须是它指向的那个表中的值之一。

仅删除表内的数据,不删除表本身:TRUNCATE TABLE table_name

AUTO INCREMENT :每次插入新记录时,自动地创建主键字段的值