美文网首页
每天一SQL语句(02):SQL 语句进阶篇-上

每天一SQL语句(02):SQL 语句进阶篇-上

作者: 奔跑的Tester | 来源:发表于2019-07-29 15:29 被阅读0次

【开篇】SQL 语句进阶篇-上

【1】SQL TOP 子句

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

对于拥有数千条记录的大型表来说,top 子句是非常重要的。top 子句结合 order by 会很有用处,比如:查询最大值之类的。

但是需要注意的是:并不是所有的数据库系统都支持 top 子句。

1、SQL Server 的语法:使用 top 关键字

select top 数字 列名称 from 表名称 ;

或:选取 XX% 的记录

select top 数字 percent 列名称 from 表名称;

2、MySQL 的语法:使用 limit 关键字

select 列名称 from 表名称 limit 数字 ;

实例:选取 Orders 表中头4条记录

又例如:将 Orders 表按照 OrderNumber 排序后,选取前8条记录

3、Oracle 的语法:使用 rownum 关键字

select 列名称 from 表名称 where rownum <= 数字 ;

【2】SQL LIKE 操作符

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

1、like 语法

select 列名称 from 表名称 where 列名称 like 模式 ;

select 列名称 from 表名称 where 列名称 not like 模式 ;

---- 温馨提示 ----

模式中定义通配符(模式中缺少的字母),用 “ % ” 。

2、like 实例

原始 Orders 表:

(1)选取地址在以 ‘S’ 开头的公司

(2)选取地址在以 ‘A’ 结尾的公司

(3)选取地址在包含 ‘ER’ 的公司

(4)选取地址在不包含 ‘ER’ 的公司

【3】SQL 通配符

在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。

SQL 通配符必须与 like 运算符一起使用。

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

1、使用 % 通配符

从 “users” 表中选取姓为 “植” 的用户:

2、使用 _ 通配符

从 “users” 表中选取姓为 “植” ,名字第一个是任意字符,第二个是 “娇” 的用户:

【4】SQL IN 操作符

in 操作符允许在 where 子句中规定多个值。

1、in 语法

select 列名称 from 表名称 where 列名称 in(值1,值2,...) ;

2、in 实例

从表中选取名称为 Facebook 和 Oppo 的公司:

【5】SQL BETWEEN 操作符

between 操作符在 where 子句中使用,操作符 between ... and 会选取介于两个值之间的数据范围, 这些值可以是数值、文本或者日期。

1、between 语法

select 列名称 from 表名称 where 列名称 between 值1 and 值2 ;

select 列名称 from 表名称 where 列名称 not between 值1 and 值2 ;

2、between 实例

(1)显示名称介于 “Facebook”(包括) 和 “LinkedIn” (包括) 之间的公司

---- 注意事项 ----

不同的数据库对于 between...and 操作符的处理方式是有差异的。

a.某些数据库会列出介于 “Facebook” 和 “LinkedIn” 之间的公司,但不包括“Facebook” 和 “LinkedIn”;

b.某些数据库会列出介于 “Facebook” 和 “LinkedIn” 之间并包括 “Facebook” 和 “LinkedIn” 的公司;

c.某些数据库会列出介于 “Facebook” 和 “LinkedIn” 之间的公司,包括 “Facebook”,但不包括 “LinkedIn” 的公司;

(2)如果需要使用上面的例子显示范围之外的公司,使用 not 操作符

【6】SQL Alias(别名)

通过使用 SQL,可以为 表名称 或者 列名称 指定别名(Alias)。

1、Alias 语法

(1)表名称指定别名

select 列名称 from 表名称 as 别名;

(2)列名称指定别名

select 列名称 as 别名 form 表名称;

2、Alias 实例

(1)使用表名称别名

(2)使用列名称别名

【7】SQL JOIN

SQL join 用于根据两个或者多个表中的列之间的关系,从这些表中查询数据。

(1)Join 和 Key

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果,就需要执行 join。

数据库中的表可通过 “键” 将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表总的所有数据的情况下,把表间的数据交叉捆绑在一起。

(2)引用两个表

(3)使用 join

【8】SQL INNER JOIN 关键字

在表中存在至少一个匹配时,inner join 关键字返回行。

1、inner join...on 语法

select 列名称 from 表1名称 inner join 表2名称

  on 表1名称.列名称 = 表2名称.列名称;

---- 温馨提示 ----

inner join 与 join 是相同的。

2、 inner join...on 实例

【9】SQL LEFT JOIN 关键字

left join 关键字会从 “左表(表1名称)” 那里返回所有的行,即使在 “右表(表2名称)” 中没有匹配的行。

1、left join...on 语法

select 列名称 from 表1名称 left join 表2名称

  on 表1名称.列名称 = 表2名称.列名称;

---- 温馨提示 ----

在某些数据库中,left join 称为 left outer join 。

2、left join...on 实例

---- 温馨提示 ----

left join 关键字会从 左表(communities)那里返回所有的行,即使在 右表(community_full_name)中没有匹配的行。

【10】SQL RIGHT JOIN 关键字

right join 关键字会从 “右表(表2名称)” 那里返回所有的行,即使在 “左表(表1名称)” 中没有匹配的行。

1、right join...on 语法

select 列名称 from 表1名称 right join 表2名称

  on 表1名称.列名称 = 表2名称.列名称;

---- 温馨提示 ----

在某些数据库中,left join 称为 right outer join 。

2、right join...on 实例

---- 温馨提示 ----

right join 关键字会从 右表(community_full_name)那里返回所有的行,即使在 左表(communities)中没有匹配的行。

【11】SQL FULL JOIN 关键字

只要其中某个表存在匹配,full join 关键字就会返回行。

1、full join...on 语法

select 列名称 from 表1名称 full join 表2名称

  on 表1名称.列名称 = 表2名称.列名称;

---- 温馨提示 ----

在某些数据库中,full join 称为 full outer join 。

2、在 MySQL 是不支持 full join的。

【12】SQL UNION 和 UNION ALL 操作符

union 操作符用于合并两个或多个 select 语句的结果集。

请注意:union 内部的 select 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。同时,每条 select 语句中的列的顺序必须相同。

1、union 语法

select 列名称 from 表1名称

union

select 列名称 from 表2名称;

---- 温馨提示 ----

默认地,union 操作符选取不同的值,重复的值不会重复选取。

2、union all 语法

select 列名称 from 表1名称

union all

select 列名称 from 表2名称;

---- 温馨提示 ----

union all 操作符和 union 操作符几乎是等效的,不过 union all 操作符会列出所有的值,包括重复的值。

3、union 和 union all 实例

(1)union:若既是管理员又是用户,则只会选取一次名字

(2)union all:若既是管理员又是用户,会选取两次名字

【13】SQL SELECT INTO 语句

select into 语句从一个表中选取数据,然后把数据插入另一个表中。常用于创建表的备份复件,或者用于对记录进行存档。

1、select into 语法

(1)把所有的列插入新表

select * into 新表名称 [in externaldatabase] from 旧表名称;

(2)只把希望的列插入新表

select 列名称 into 新表名称 [in externaldatabase] from 旧表名称;

2、select into 实例

(1)制作备份复件

---- 温馨提示 ----

MySQL 数据量是不支持 select into 语句的,可以用其他办法解决。

(2)带有 where 子句

(3)被连接的表

【14】SQL CREATE DATABASE 语句

create database 用于创建数据库。

1、create database 语法

create database 数据库名称;

2、create database 实例

【15】SQL CREATE TABLE 语句

create table 用于创建数据库中的表。

1、create table 语法

create table 表名称

(

列名称1 数据类型,

列名称2 数据类型,

列名称3 数据类型

);

---- 温馨提示 ----

(1)最后一个列的数据类型后面没有 ,符号

(2)数据类型规定了列可容纳何种数据类型。如下包含了SQL中最常用的数据类型:

2、create table 实例

---- 后记 ----

学习链接:http://www.w3school.com.cn/sql/index.asp


- End -

若有错误,请随时指正。也欢迎大家一起讨论,让我们野蛮成长!

相关文章

网友评论

      本文标题:每天一SQL语句(02):SQL 语句进阶篇-上

      本文链接:https://www.haomeiwen.com/subject/usmhtctx.html