码迷,mamicode.com
首页 > 其他好文 > 详细

select语句

时间:2014-09-17 18:11:52      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:des   style   io   ar   数据   sp   on   c   line   

create database 石高峰

go

use 石高峰

go

create table fruit

(

xuliehao int primary key,

name varchar(20) not null,

jiage float,

[type] varchar(20)

)

go

insert into fruit values(‘1‘,‘红富士‘,‘578‘,‘苹果‘)

insert into fruit values(‘2‘,‘高清西瓜‘,‘265‘,‘西瓜‘)

insert into fruit values(‘3‘,‘红提‘,‘957‘,‘提子‘)

insert into fruit values(‘4‘,‘黄蕉‘,‘386‘,‘香蕉‘)

insert into fruit values(‘5‘,‘硬梨‘,‘186‘,‘梨‘)

insert into fruit values(‘6‘,‘鸭梨‘,‘586‘,‘梨‘)

insert into fruit values(‘7‘,‘酸果‘,‘359‘,‘苹果‘)

insert into fruit values(‘8‘,‘青提‘,‘789‘,‘提子‘)

insert into fruit values(‘9‘,‘火龙果‘,‘965‘,‘火果‘)

insert into fruit values(‘10‘,‘酸枣‘,‘329‘,‘枣类‘)

select *from fruit--*代表全部,显示fruit表里全部信息

选中上面 执行 即出结果

                       

将列名 显示成中文的三种写法:

 

投影

Select  列名   from   表名  where   列名   关系表达式  值

上边显示符合某一条件的列 ,称为投影

投影破坏了实体完整性,不能完整描述一个对象,所以失去了意义。

筛选

Select   *   from   表名   where   列名   关系表达式   值

上边的格式显示符合某一条件的行,称为筛选

例:

 

 

去重

Select  distinct 列名from 表名 去除这一列的重复值

模糊查询

Select  *  from  表名  where 列名 like‘’

通配符   % 任意多个字符

  一个下划线代表一个任意字符

[4,6,7]中括号代表选里面的值其一

例:’  [3,5]%’可以代替’  3%’or’  5%’

排序

Select * from表名 order by 列名 asc(升序)或desc(降序)

(可以写多个依据条件,用逗号分开,排序前面还可以加where筛选)

Select  top 3 * from 表名 order by 列名 asc  升序选前三条

统计

Select  count(*)from 表名  表里有多少条信息,后可加筛选

Select  AVG(列名)from 表名  查表中此列的平均值,括号内可为运算式,后可加条件

同理有最大值max 最小值min和sum

求平均值时的区别

Select *,(单价列名*重量列名)as新添加列名  from表名   显示添加新列

分组

Select 列名 from 表名 [where筛选]  group by列名 [having筛选]  [排序]

中括号代表可以有可以没有,显示二选一: 列名 or 列名,统计

显示的列名必须与分组依据的列名相同

Having筛选是对分组后的结果进行筛选,不能单独用,只能在group by后

连接查询(横扩展)

土方法:(依据为空值时容易丢数据)(筛选条件和连接条件混杂)

Select * from表名1,表名2… where 表名1.列名=表名2.列名…

表1 和表2 的列名不同时可以不用写 表名的

*可以为 表名.列名,…表名.列名as新列名(改列名)

SQL国际标准化方法:(不容易丢数据)(条件清晰)

Select *  from表名1

Join  表名2  on 连接条件

Join  表名3  on  连接条件

……

Where  筛选条件

 连接

内连接

Join前不加任何条件,有对应的显示,无对应不显(丢数据)

 外连接

全连接

Join前加Full

左表右表内容全显,无对应值为空(行增加很多)

左连接

Join前加Left

左表全显,右表中无对应值为空(行增加)

右连接

Join前加Right

右表全显,左表中无对应值为空(行增加)

Join会产生 笛卡尔积,影响性能,数据大时有可能系统瘫痪,所以join一般不用,如果需要用,一般别超过6个表,每个表别超过5000条记录。

联合(纵向扩展)

Union语句

一个表中:

Select * from 表名where 条件

Union

Select *from 表名where 条件

两个表:

Select * from 表1

Union

Select * from表2

*可以是列名……

子查询

嵌套查询

Select * from表1  where 列名=

Select 列名 from 表2 where 条件

如果()内的值不是惟一的,等号换成in

 

子查询分相关子查询和无关子查询

无关子查询:内层查询时与外层无关联,可以单独执行语句

相关子查询:里层查询时单独无法执行,必须内外同时进行

Exists 经常用在相关子查询(拿内层的条件到外层去筛选一下)

子查询不光可以在where处用,还可以在select与from之间用

Select …(select  列名 from 表名 后可加条件语句等)…from 表名…

子查询应用:

分页查询(查指定页数数据):

外层(每页多少条)内层(要找第几页)

例:取第三页的前三行(每页五行)

 

取总页数:

 

select语句

标签:des   style   io   ar   数据   sp   on   c   line   

原文地址:http://www.cnblogs.com/wanwuguizong/p/3977504.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!