数据查询语言(Database Query Language,DQL):SELECT语句之一

本文详细介绍了SQL中的SELECT语句,包括选择所有或特定列、使用DISTINCT消除重复、选择所有列星号(*)、指定列顺序、插入字符串、列别名以及算术运算符的应用。通过实例展示了如何从数据库中高效地检索和操作数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据查询语言(Database Query LanguageDQL):SELECT语句

从数据库中检索行,并允许从一个或多个表中选择一个或多个行或列。虽然 SELECT 语句的完整语法较复杂,但是其主要的子句可归纳如下:

SELECT [ALL|DISTINCT]|[TOP n [PERCENT]]

{  *|{TableName|ViewName|TableAlias}.*

|{ColumnName|Expression|IDENTITYCOL|ROWGUIDCOL}[ [AS] ColumnAlias ]

|ColumnAlias=Expression

}[,...n]

        [INTO NewTableName]

FROM TableName [[AS] TableAlias]|ViewName [[AS] TableAlias]

[,TableName [[AS] TableAlias]|ViewName [[AS] TableAlias]] [,…n]

[WHERE Condition_Expression]

[GROUP BY ColumnName [,ColumnName] [,…n] [HAVING Condition_Expression]]

[ORDER BY ColumnName [ASC|DESC] [,ColumnName [ASC|DESC]] [,…n]]

说明:方括号“[]”中的内容为可选项;中括号“{}”中的内容为必选项;“…n”表示紧跟其前的语法可以任意重复多次定义;竖线“|”表示由该符号隔开的内容必须任选其一;Expression可以是是列名、常量、函数以及由运算符连接的列名、常量和函数的任意组合,或者是子查询。

 

一、使用SELECT语句选择列。

1、使用DISTINCT关键字消除重复列;使用ALL关键字选择所有行(默认),可省略。

格式:SELECT DISTINCT ColumnName [,ColumnName] [,…n] FROM TableName|ViewName

例一:查询所有作者的所在城市和州名,要求没有重复信息。

SELECT DISTINCT city,state FROM authors

city                 state

-------------------- -----

Ann Arbor             MI

Berkeley              CA

Corvallis             OR

Covelo                CA

Gary                  IN

Lawrence              KS

                  

(所影响的行数为 16 行)

例二:查询所有作者的所在城市和州名。

SELECT ALL city,state FROM authors

city                 state

-------------------- -----

Menlo Park            CA

Oakland               CA

Berkeley              CA

San Jose              CA

Oakland               CA

Lawrence              KS

                  

(所影响的行数为 23 行)

注:DISTINCT关键字消除重复行时,NULL也会算在其中,且每一个SELECT命令只能拥有一个DISTINCT关键字,这就意味着,关键字DISTINCT是限制整条数据记录都重复的而且只显示其中的一条记录,而不是针对某个字段来处理。

 

2、使用“*”选择所有列

格式:SELECT * FROM TableName|ViewName

例:查询所有购书信息。

SELECT * FROM sales

 

3、选择指定列

格式:SELECT ColumnName [,ColumnName] [,…n] FROM TableName|ViewName

例:查询所有书籍的书号、购书数量、付帐方式信息。

SELECT titleid,qty,payterms FROM sales

注:SELECT后的各个列的顺序不一定要跟原表中一致,也就是说,用户在查询的时候可以根据自己的需要任意调整各个列的顺序,如果在上例中想把数量信息排在第一列,则语句应该写成如下的形式:

SELECT qty,titleid,payterms FROM sales

 

4、在结果中插入字符串

格式:SELECT ['string',] ColumnName [,['string',] ColumnName] [,…n] FROM TableName|ViewName

例:查询所有书籍的书号、购书数量、付帐方式信息,并在每个付帐方式前显示“付帐方式”,表明显示信息是付帐方式信息。

SELECT title_id,qty,'付帐方式:',payterms FROM sales

title_id qty              payterms    

-------- ------ --------- ------------

BU1032   5      付帐方式:     Net 60

PS2091   3      付帐方式:     Net 60

PC8888   50     付帐方式:     Net 30

PS2091   75     付帐方式:     ON invoice

PS2091   10     付帐方式:     Net 60

TC3218   40     付帐方式:     Net 30

                       

(所影响的行数为 21 行)

 

5、修改列标题,即为列指定一别名

格式:SELECT [ColumnTitle=] ColumnName [,[ColumnTitle=] ColumnName] [,…n] FROM TableName|ViewName

SELECT ['ColumnTitle'=] ColumnName [,['ColumnTitle'=] ColumnName] [,…n] FROM TableName|ViewName

SELECT ColumnName ['ColumnTitle'] [,ColumnName ['ColumnTitle']] [,…n] FROM TableName|ViewName

SELECT ColumnName AS ColumnTitle [,ColumnName AS ColumnTitle] [,…n] FROM TableName|ViewName

例:查询所有出版商的ID号和名称,并要求用ID和名称来进行区别。

SELECT ID=pub_id,名称=pub_name FROM publishers    

SELECT 'ID'=pub_id,'名称'=pub_name FROM publishers

SELECT pub_id 'ID',pub_name '名称' FROM publishers

SELECT pub_id AS ID,pub_name AS 名称 FROM publishers

ID       名称                                      

---- ----------------------------------------

0736     New Moon Books

0877     Binnet & Hardley

1389     Algodata Infosystems

1622     Five Lakes Publishing

1756     Ramona Publishers

9901     GGG&G

9952     Scootney Books

9999     Lucerne Publishing

(所影响的行数为 8 行)

 

6、在列中使用算术运算符

SQL Server常见的运算符有:

加(+

加法(注意并非字符串连接符)

减(-

减法

乘(*

乘法

除(/

除法

模(%

返回一个除法的整数余数,例如5%2=1,因为5除以21

注:算术运算符+-*/号可以用于任何数值列。取模操作(%)不能用于Money列。

例:查询将所有书的价格提高10%后的价格、书号和类型信息。

SELECT title_id,type,(price*1.1) 'price' FROM titles

title_id type             price                   

-------- --------------- ------------------------

BU1032   business         21.98900

BU1111   business         13.14500

BU2075   business         3.28900

BU7832   business         21.98900

MC2222   mod_cook         21.98900

MC3021   mod_cook         3.28900

MC3026   UNDECIDED        NULL

                      

(所影响的行数为 18 行)

注:一个表达式中有多于一个算术符时,先进行乘、除和取模运算,然后是加和减运算。当运算符的运算优先级相同时,就从左到右进行运算。括号中的运算总是最先进行。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值