仓酷云

标题: MSSQL教程之SELECT 语句的使用 [打印本页]

作者: 小女巫    时间: 2015-1-16 22:19
标题: MSSQL教程之SELECT 语句的使用
在Windows中MySQL以服务形式存在,在使用前应确保此服务已经启动,未启动可用netstartmysql命令启动。而Linux中启动时可用“/etc/rc.d/init.d/mysqldstart"命令,注意启动者应具有管理员权限。从本节入手下手,我们将用大批的实例来说述SELECT语句的使用。起首从最复杂也是最经常使用的单表查询入手下手。
10.2.1选择列
(1)用SELECT子句来指定查询所需的列,多个列之间用逗号分隔
MSSQL教程之SELECT 语句的使用
登录/注册后可看大图


(2)可使用标记“*”来拔取表的全体列
MSSQL教程之SELECT 语句的使用
登录/注册后可看大图


(3)在查询了局中增加列
MSSQL教程之SELECT 语句的使用
登录/注册后可看大图

10.2.2选择行
(1)利用WHERE子句
用户在查询数据库时,常常其实不必要懂得全体信息,而只必要个中一部分满意某些前提的信息。在这类情形下就必要在SELECT语句中到场前提,以选择数据行,这时候就用到WHERE子句。WHERE子句中的前提是由表达式和逻辑联合词AND、OR、NOT等构成。

例10-4:查询人为介于2000元和3000元之间的员工姓名。
usepangu
selecte_name
fromemployee
wheree_wagebetween2000and3000
运转了局以下:
e_name
--------------------
王二
伍将
(2row(s)affected)

(2)利用DICTINCT关头字
用户在对数据库举行查询时,会呈现反复了局,这时候就必要利用DISTINCT关头字打消反复部分。
例10-5:列收工资年夜于7000的员工所属的部门编号。
usepangu
selectdistinctdept_id
fromemployee
wheree_wage>7000
运转了局以下:
dept_id
-------
1001
1005
(2row(s)affected

(3)利用IN关头字
在利用WHERE子句举行查询时,若前提表达式中呈现多少前提不异的情形,就会使表达式显得冗杂,方便于用户利用,这时候可用IN关头字来简化。
例10-6:查询在编号为‘1001’和‘1002’的部门中事情的员工姓名。
usepangu
selecte_name
fromemployee
wheredept_idin(’1001’,’1002’)
运转了局以下:
e_name
--------------------
张三
李四
......
(4)利用通配符
在WHERE子句中可使用谓词LIKE来举行字符串的婚配反省,个中将大批利用我们在Transact-SQL言语基本中先容到的通配符。
MSSQL教程之SELECT 语句的使用
登录/注册后可看大图


假如用户要查找的数据中自己就包括了通配符,如“SQL_Mail”,就必要利用逃逸字符来辨别通配符与实践存在的字符。其格局以下;
LIKE‘字符婚配串’ESCAPE‘逃逸字’

MSSQL教程之SELECT 语句的使用
登录/注册后可看大图


10.2.3对查询了局排序
(1)利用ORDER子句
当用户要对查询了局举行排序时就必要在SELECT语句中到场ORDERBY子句。在ORDERBY子句中可使用一个或多个排序请求,其优先级序次为从左到右。
例10-9:查询事情级别为‘2’的员工姓名,查询了局按人为排序。
MSSQL教程之SELECT 语句的使用
登录/注册后可看大图


(2)拔取前几行数据
在SELECT语句中利用TOPn或TOPnPERCENT,来拔取查询了局的前n行或前百分之n的数据。此语句常常和ORDER子句一同利用。
例10-11:查询人为最高的三名员工的姓名和人为。
usepangu
selecttop3e_name,e_wage
fromemployee
orderbye_wagedesc
运转了局以下:
e_namee_wage
-----------------------------------------
张三8000.0000
大家傅7500.0000
张龙7000.0000
(3row(s)affected)

10.2.4查询了局分组
(1)利用GROUP子句
当用户要对查询了局举行分组时,就必要在SELECT语句中到场GROUPBY子句。
例10-12:查询事情级别为‘2’的员工姓名,查询了局按部门分组;
MSSQL教程之SELECT 语句的使用
登录/注册后可看大图


(2)利用WITH{CUBE|ROLLUP}选项
利用这两个选项能够分外前往按组统计的数据行。与CUBE分歧的是,ROLLUP选项只前往最高层的分组列(即,第一个分组列)的统计数据。读者能够从上面的例子平分析两者的不同。
例10-13:查询公司编号、公司所订购的产物编号和应付出的金额,查询了局按公司编号和产物编号分组(本例中利用了统计函数,关于其利用请拜见下一大节)。
MSSQL教程之SELECT 语句的使用
登录/注册后可看大图

MSSQL教程之SELECT 语句的使用
登录/注册后可看大图

MSSQL教程之SELECT 语句的使用
登录/注册后可看大图

MSSQL教程之SELECT 语句的使用
登录/注册后可看大图


(3)利用HAVING子句
HAVING子句用来选择特别的组,它将组的一些属性与常数值举行对照,假如一个组满意HAVING子句中的逻辑表达式,它就能够包括在查询了局中。
MSSQL教程之SELECT 语句的使用
登录/注册后可看大图


注重:
在SELECT语句中WHERE、GROUPBY、HAVING子句和统计函数的实行序次以下:WHERE子句从数据源中往失落不切合
其搜刮前提的数据行;GROUPBY子句汇集数据行到各个组中;统计函数为各个组盘算统计值;HAVING子句往失落不切合共组搜刮前提的各组数据行。

10.2.5利用统计函数
在SELECT语句中利用统计函数,能够失掉良多有效的信息。

MSSQL教程之SELECT 语句的使用
登录/注册后可看大图
MSSQL教程之SELECT 语句的使用
登录/注册后可看大图

MSSQL教程之SELECT 语句的使用
登录/注册后可看大图

mysql的prepare其实是本地PHP客户端模拟的,并没有根据你mysql的设置做字符集的调整。应该交与mysqlserver端做prepare,同时得调用mysql_set_character_set去操作,server才会按照字符集去做转义。
作者: 若天明    时间: 2015-1-19 08:43
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
作者: 不帅    时间: 2015-1-24 19:16
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
作者: 精灵巫婆    时间: 2015-2-2 12:43
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
作者: 柔情似水    时间: 2015-2-7 20:14
如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
作者: 蒙在股里    时间: 2015-2-23 10:19
where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
作者: 愤怒的大鸟    时间: 2015-3-7 08:05
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
作者: 小女巫    时间: 2015-3-14 15:58
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
作者: 谁可相欹    时间: 2015-3-21 12:16
无法深入到数据库系统层面去了解和探究




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2