【SQL】SQL语句及其功能

SQL SELECT TOP 子句
在 Microsoft SQL Server 中还可以使用百分比作为参数。
下面的 SQL 语句从 websites 表中选取前面百分之 50 的记录:

SELECT TOP 50 PERCENT * FROM Websites;

变相返回后 N 行:
–前5行

select top 5 * from table

–后5行

select top 5 * from table order by id desc  --desc 表示降序排列 asc 表示升序

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

下面的 SQL 语句选取 name 为 “Google” 或 “菜鸟教程” 的所有网站:

SELECT * FROM Websites WHERE name IN ('Google','菜鸟教程');

in 与 = 的转换

select * from Websites where name in ('Google','菜鸟教程');

可以转换成 = 的表达:

select * from Websites where name='Google' or name='菜鸟教程';

SQL BETWEEN 操作符
下面的 SQL 语句选取 alexa 介于 1 和 20 之间但 country 不为 USA 和 IND 的所有网站:

实例

SELECT * FROM Websites
WHERE (alexa BETWEEN 1 AND 20)
AND country NOT IN ('USA', 'IND');

SQL INNER JOIN 关键字
INNER JOIN 与 JOIN 是相同的。

1. A inner join B 取交集。
2. A left join B 取 A 全部,B 没有对应的值为 null。
3. A right join B 取 B 全部 A 没有对应的值为 null。
4. A full outer join B 取并集,彼此没有对应的值为 null。

对应条件在 on 后面填写。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
SQL UNION 操作符
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

使用UNION命令时需要注意,只能在最后使用一个ORDER BY命令,是将两个查询结果合在一起之后,再进行排序!绝对不能写两个ORDER BY命令。

另外,在使用ORDER BY排序时,注意两个结果的别名保持一致,使用别名排序很方便。当然也可以使用列数。

ORDER BY 除了可以对指定的字段进行排序,还可以使用函数进行排序:

order by abs(a);

SQL INSERT INTO SELECT 语句
INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。

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

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

  1. 复制表结构及其数据:
create table table_name_new as select * from table_name_old
  1. 只复制表结构:
create table table_name_new as select * from table_name_old where 1=2;

或者:

create table table_name_new like table_name_old
  1. 只复制表数据:

如果两个表结构一样:

insert into table_name_new select * from table_name_old

如果两个表结构不一样:

insert into table_name_new(column1,column2...) select column1,column2... from table_name_old

SQL 约束(Constraints)
约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。

在 SQL 中,我们有如下约束:
• NOT NULL - 指示某列不能存储 NULL 值。
• UNIQUE - 保证某列的每行必须有唯一的值。
• PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
• FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
• CHECK - 保证列中的值符合指定的条件。
• DEFAULT - 规定没有给列赋值时的默认值。

SQL PRIMARY KEY 约束
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
在这里插入图片描述
SQL CHECK 约束
在这里插入图片描述
SQL ALTER TABLE 语句
在这里插入图片描述
SQL AUTO INCREMENT 字段
我们通常希望在每次插入新记录时,自动地创建主键字段的值。
我们可以在表中创建一个 auto-increment 字段。
在这里插入图片描述
SQL Date 函数
在这里插入图片描述

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

SQL NULL 值
无法比较 NULL 和 0;它们是不等价的。
无法使用比较运算符来测试 NULL 值,比如 =、< 或 <>。
必须使用 IS NULL 和 IS NOT NULL 操作符。
在这里插入图片描述
NULL 表示的是什么都没有,它与空字符串、0 这些是不等价的,是不能用于比较的!

SQL 函数
在这里插入图片描述
SQL COUNT() 函数
在这里插入图片描述
SQL MID() 函数
在这里插入图片描述
SQL LEN() 函数
在这里插入图片描述
SQL FORMAT() 函数
在这里插入图片描述
SQL中PERSISTED关键字
指定 SQL Server 数据库引擎将在表中物理存储计算值,而且,当计算列依赖的任何其他列发生更新时对这些计算值进行更新。将计算列标记为 PERSISTED,可允许您对具有确定性、但不精确的计算列创建索引。有关详细信息,请参阅为计算列创建索引。用作已分区表的分区依据列的所有计算列都必须显式标记为 PERSISTED。指定 PERSISTED 时,computed_column_expression 必须具有确定性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值