SQL部分解析

Posted 牧云的少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL部分解析相关的知识,希望对你有一定的参考价值。

建表规则:

创建新表的时候,如果不选择模式的话,数据库则会使用默认的模式,

模式名为dbo

指定模式的解释 --create Schemas

CREATE SCHEMA production;

go

CREATE SCHEMA sales;

go

模式==表的一个分组

SQL简介

SQL 语言是集DDL,DML和DCL于一体的数据库语言。

 DDL:定义数据库

DML:操纵数据库

 DCL:数据权限控制

SQL语言主要由以下9个单词引导的操作语句来构成,但每一条语句都能表达复杂的操作请求;

   (1)DDL语句引导词:Create,Alter,Drop

 模式的定义和删除。包括定义Database,Table,View,Index和完整性约束条件等。

(2)DML语句引导词:Insert,Delete,Update,Select

各种方式的更新与检验操作。

 各种复杂条件的检索。如连接查找,模糊查找,分组查找,嵌套查找等。

各种聚集操作。包括求平均,求和等,也包括分组聚集,分组过滤等。

(3)DCL语句引导词:Grant,Revoke

安全性控制:授权和撤销授权。

Select关键字:

customers表

Id

first_name

last_name

phone

email

City

1

Abc

Todd 

Null

132qq.com

London

2

Jacq  

Kice

65465

812qq.com 

New York

3

garry 

Ortiz

2125

222qq.com 

Beijing

select(关键字”查询“) *(代表查的字段是这个表里所有的字段“也可以单单

只查这个表中的其他字段例如:email”) from(代表前面所查询的字段来自前面的

哪个表) sales(模式名如果不加此模式名则默认后面的表模式为dbo模式

则会影响后续所查询的数据,所以除非表模式为dbo模式不然请不要省略表模式。

注:虽然表查询的完全体是数据库名+表模式+表名,但数据库名可以不用写因为打

开此表查询时已经默认为此数据库名了).customers(所需要查询的表名);

当查询表字段不查询所有字段*时,分别查询想要的字段不止一个则一个字段一个逗号隔开

例如emill,phone,last_name(并且写代码时注意美观不要写一整条长长的代码,最好是一段

代码一行)例如:

select id,last_name,maill

from sales.customers

order by(关键字排序有升序和降序 ASC/DESC,一般默认为升序,如果不用此规则则是按照id

自动排序) last_name(让此字段从a---Z排序,如果想让他反过来则添加后缀desc即可)

还有某些特殊排序例如想查询从a-z的城市中查询a-z的名字

select  id,name,city

from sales.customers

order by  city,name  (只需要在城市字段后用逗号隔开下一个要查询的字段即可,它会优先排序第一个字段

然后根据第一个字段里的再排序后面的名字,如需要其中一个字段反过来在其字段添加desc后缀即可)

len()函数,可以检测字符串长度

按照名字长短来排序

order by len(name)[asc/desc];

可以在数据库用123代表查询的字段例如

order by 1,2,3来代表id,name,city

top关键字;

如果只想要查询前面的某些行数例如10行则就可以用top关键字分拣出来只需要写在selsct关键字后即可例如;

select top 10 name,city;

如果是查询排前面的百分比而不是查询准确的多少行例如百分之10就可以在top10后面加关键字percent。

select top 10 percent name,city(当行数多出来小数,数据库则会把小数换成多一行,不管是0.1还是0.9)

from sales.customers

order by name,city;

不管是top 10好还是top 10 percent ,后面都要用到order  by关键字来排序,

不然在数据库数据多的情况下会发生一些不可预估的错误例如下次查询出来的数据会与这次不大相同。

top with ties 关键字;

把top筛选出来的数据的最后一行数据提出来,然后再根据提出来的数据跟所有词字段的

数据对比,如果有相同的则在下面添加。例如

SQL Sever Offset Fetch 子句

数据库的一种SQL的分页写法,它们用于限制指定查询返回的行数。  注: 两个关键字

Offset,Fetch 必须与关键字order by结合使用,因为他们是order by 子句的选项。

       在production.products表中查询出0-10关于product_name,model_year,list_price 的

数据

Offset Fetch公式 offset ((常变量num=多少页)-1)*size(变量)rows

fetch next size(与上面的size相同,此作用是让数据库输出多少条结果) rows only

(或从最后一条id开始查询)

从id=0开始查询每页五条的第五页关于product_name,model_year,list_price 的数据

select product_id,product_name,model_year,list_price

from production.products

order by product_id (asc/desc)

offset (5-1)*10 rows

fetch next 5 rows only 

以上是关于SQL部分解析的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL 第 2 部分中以破坏序列升序/降序对结果最小值/最大值进行分组

具有特定顺序的 SQL ORDER BY,首先以特定单词开头,然后是升序 [重复]

编码表字节流字节缓冲流

sql 升序降序排列

sql查询降序和升序的问题

一些常用的sql语句