sql查询语句

用SELECT语句实现数据库的查询操作。同时,它还可以使用各种子句对查询结果进行分组统计、合计、排序等操作。SELECT语句还可将查询结果生成另一个表(临时表或永久表)。
SELECT语句的语法格式为:

在SELECT语句中,子句可以省略,但在列出时必须按照以上顺序。
简单查询:
简单的SQL查询只包括SELECT列表、FROM子句和WHERE子句,它们分别说明所查询列、查询操作的表或视图以及搜索条件等。
例:查询title表中1991年出版的"business"类图书及其价格。
SELECT title,price
FROM titles
WHERE DATEPART(YEAR,pubdate)=1991 AND type='business'
1.Select列表语句
SELECT列表语句(select_list)指定所选择的列,它可以为一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
(1)选择所有列
用星号表示选择指定表或视图中的选择所有列
SELECT * FROM discounts
选择指定列并指定它们的显示次序
在SELECT列表语句中指定列名来选择不同的列,各列之间用逗号分隔,显示结果中数据的排列顺序为列名的列表顺序。
SELECT discount,discounttype FROM discounts
在SELECT列表中,还可以对数值进行算术运算(包括加、减、乘、除、取模等)。
其中,加、减、乘、除操作适用于任何数值型列(如int,smallint,tinyint,decimal,numeric,float,real,money,smallmoney等),而取模操作不能用于money和smallmoneyu数据类型列。
对数值进行运算时,如果列值为空(null),则所执行的所有算术操作的结果仍为空:
SELECT discounttype,'lowqty+50'=lowqty+50
FROM discounts
在SELECT列表中,还可以指定字符串常量或变量输出结果的显示格式:

DECLARE @var char(12)
SELECT @VAR='折扣幅度'
SELECT '折扣名称:',discounttype,@var,discount
SELECT discounts
(2)删除重复行
SELECT语句可以使用ALL|DISTINCT选项来显示所有行(ALL)或删除重复的行(DISTINCT),缺省时为ALL。使用DISTINCT选项时,对于所有数据重复的SELECT列表值只显示一次。
SELECT DISTINCT country FROM publishers
2.FROM子句
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定16个表或视图,它们相互之间用逗号分隔,如果这些表或视图属于不同的数据库,可用“数据库.所有者名称.对象”格式限定表或视图对象。
SELECT au_id,titles.title_id
//由于在两个表中都存在"title_id"列,加入"titles."避免二义性
FROM titles,titleauthor
WHERE titles.title_id=titleauthor.title_id
在FROM子句中,可为每个表或视图指定一个别名,别名紧跟在对象名称之后,之间用空格分隔,然后可以使用别名引用表中各列。
SELECT au_id,t.title_id
FROM titles t,titleauthor ta
WHERE t.title_id=ta.title_id
用WHERE子句限定搜索条件,SELECT语句中使用WHERE子句指定查询条件。
WHERE语句中可包含的运算符,如下表:

例1:范围运算符:相交书价为$10~$30之内的图书
SELECT title,price
FROM titles
WHERE price BETWEEN $10 AND $30
例2:列表运算符:列出publishers表中社址在德国和法国的出版社
SELECT pub_name
FROM publishers
WHERE country IN('germany','france')
3.模式匹配符
模式匹配符[NOT] LIKE常用于模糊条件查询,它判断列值是否与指定的字符串格式相匹配,可用于char,varchar,datetime和smalldatetime数据类型。可使用的通配字符有以下几种:
●百分号%:可匹配任意类型长度的字符;
●下划线_:匹配单个字符,它常用来限制表达式的字符长度;
●方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个字符;
●[^]:其取值与[]相同,但它要求所匹配对象为指定字符以外的任一个字符。

例6:列出名称长度为5个字符,且以'GG'开头的出版社
SELECT pub_name
FROM publishers
WHERE pub_name LIKE 'GG_'
例7:空值判断符:查找目前仍未定价的图书
SELECT title,price
FROM titles
WHRER price IS NULL
例8:逻辑运算符:列出收价低于$5或高于$15且当年销量小于5000的图书
SELECT price,ytd_sales,title
FROM titles
WHERE(price<$5 OR price>$15) AND ytd_sales<5000
查询结果排序
在SELECT语句中,使用ORDER BY语句对查询结果按一列或多列进行排序。ORDER BY子句的语法格式为:

例:列出"business"类的图书标识和价格,结果排序方式为:价格由高到低,title_id列由低到高。
SELECT title_id,price
FROM titles
WHERE type='business'
ORDER BY price DESC,title_id,ASC

时间: 2024-09-13 02:29:20

sql查询语句的相关文章

SQL查询语句对象化的实现(C#)

对象|语句   在开发数据库应用的过程难免会编写大量的SQL语句,其中大部份是查询语句:为不同情况编写查询语句是一件很烦琐的事件.用过hibernate或Nhibernate会了解到把SQL查询语句对象化后使用起非常方便和快捷:也大大减少在编写查询SQL语句所带来的错误等问题.        前段时间在编写一个数据处理类的时候同样遇到这个问题,经过一段时间思考和设计现实现了SQL查询语句对象化的功能:在这里我把自己小小的成果共享一下. 在讲解前先看几个例子(数据是SQLServer的Northw

SQL查询语句中的bool类型字段值的写法

  SQL查询语句中的bool类型字段值的写法 没有系统地看过SQL语句的写法说明,只是看了一些常用SQL语句的例子.今天写了条select * from table where sex='true',老是提示标准数据类型不匹配(我用的Access),检查了半天,原来sex字段作为bool(是/否)类型,在SQL语句中其值不需要用''引起来.

15个初学者必看的基础SQL查询语句

本文将分享15个初学者必看的基础SQL查询语句,都很基础,但是你不一定都会,所以好好看看吧. 1.创建表和数据插入SQL 我们在开始创建数据表和向表中插入演示数据之前,我想给大家解释一下实时数据表的设计理念,这样也许能帮助大家能更好的理解SQL查询. 在数据库设计中,有一条非常重要的规则就是要正确建立主键和外键的关系. 现在我们来创建几个餐厅订单管理的数据表,一共用到3张数据表,Item Master表.Order Master表和Order Detail表. 创建表: 创建Item Maste

sql-数据库 SQL查询语句 简化语句

问题描述 数据库 SQL查询语句 简化语句 请问 怎样从上面的数据表中查询出下面表的效果?求大神指教 解决方案 group by month 解决方案二: select months 月份type1+type2+type3 总数case when type1>0 then 1 else 0 then 执照1case when type2>0 then 1 else 0 then 执照2case when type3>0 then 1 else 0 then 执照3from(select

hibernate-web后台的sql查询语句问题

问题描述 web后台的sql查询语句问题 我使用spring+hibernate的框架做的后台,在dao层中sql查询语句查询所有select * from tbplayer t1 where nickname='"+shopID+"'就可以查出结果,然后在拼接显示自己想要的内容,但是一旦换成查某个字段select p3_account from tb_player t1 where nickname='"+shopID+"'就报错,说没有psn这列,但是我的语句中

图片-qiushou求SQL查询语句问题, SQL语句忘记怎么写了

问题描述 qiushou求SQL查询语句问题, SQL语句忘记怎么写了 第一列是-主键-地区-销售人员-销售总额, 请问查询-每个地区销售金额最少的人是谁 解决方案 select * from ( select rank() over(partition by region order by total) as rid ,orderid,region,sales,total from salesorder ) t where t.rid = 1 解决方案二: select * from sale

[数据库] SQL查询语句表行列转换及一行数据转换成两列

本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两列数据的方法.子查询的应用.decode函数的用法.希望文章对你有所帮助~ 1.创建数据库表及插入数据 2.子查询统计不同性质的学生总数 3.一行数据转换成两列数据 union all 4.表行列数据转换(表转置) 1.创建数据库表及插入数据 创建数据库.创建学生表并设置主键.插入数据代码如下: --创建数据库 create database StudentMS --使用数据库 use StudentMS --创建学生

sql-数据库新手提问:SQL查询语句

问题描述 数据库新手提问:SQL查询语句 有3张表:学生表(学号,姓名,性别,年龄);课程表(课程号,课程名,学期):成绩表(学号,课程号,分数). 现在根据学号和学期查询某个同学的成绩信息:例如学号为001,学期是1的. 解决方案 select 学生表.姓名 课程表.课程 成绩表.分数 from 学生表,课程表, 成绩表 where 学生表.学号 = 成绩表.学号 and 课程表.课程号 = 成绩表.课程号 and 学生表.学号 = 001 and 课程表.学期 =1

mysql 查询指定日期时间内容sql查询语句

mysql教程 查询指定日期时间内容sql查询语句 在数据库教程设计时必须注意时间字段最好为int(4)这样,保存在数据库的时一个数字型日期时间截,我们可以用mktime函数求出当前日期的时间截进行加减就OK了,下面看实例 $time = time();   //一个月 $lastMonth = mktime(date('h'),date('i'),date('s'),date('m')-1,date('d'),date('y')); $where .= "  dtime < $lastM

sql 股票 复杂查询-股票数据复杂sql查询语句

问题描述 股票数据复杂sql查询语句 数据库表如下 CREATE TABLE STOCKITEM( STOCKDATE DATE NOT NULL, STOCKCODE CHAR(50) NOT NULL, STOCKNAME CHAR(50) NOT NULL, OPENPRICE DOUBLE NOT NULL, CLOSEPRICE DOUBLE NOT NULL, HIGHESTPRICE DOUBLE NOT NULL, LOWESTPRICE DOUBLE NOT NULL, FLU