SQL关键字及其用途

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

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

判断空值: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 子句中搜索列中的指定模式。

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 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):

命名 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 :每次插入新记录时,自动地创建主键字段的值

SQL 视图(Views):视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也可以呈现数据,就像这些数据来自于某个单一的表一样

--创建视图
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

注释:视图总是显示最新的数据!每当用户查询视图时,数据库引擎通过使用视图的 SQL 语句重建数据

--SQL 更新视图
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
--删除视图
DROP VIEW view_name

视图的作用:

1、视图隐藏了底层的表结构,简化了数据访问操作,客户端不再需要知道底层表的结构及其之间的关系。

2、视图提供了一个统一访问数据的接口。(即允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)

3、从而加强了安全性,使用户只能看到视图所显示的数据。

4、视图还可以被嵌套,一个视图中可以嵌套另一个视图。

Date 数据类型:

  • DATE - 格式:YYYY-MM-DD
  • DATETIME - 格式:YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式:YYYY-MM-DD HH:MM:SS
  • YEAR - 格式:YYYY 或 YY

提示:如果您希望使查询简单且更易维护,那么请不要在日期中使用时间部分!

NULL 值:代表遗漏的未知数据。

注释:无法比较 NULL 和 0 和 "";它们是不等价的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值