不简单的SQL查询和排序语句
真不简单!!

一:使用select语句进行查询
语法:
SELECT <列名>
FROM <表名>
[WHERE <查询条件表达式>]
[ORDER BY <排序的列名>[ASC或DESC]]
eg1:
SELECT SCode,SName,SAddress
FROM Students
WHERE SSEX = 0
ORDER BY SCode
二:查询所有列和行:
eg:
SELECT * FROM Course
SELECT * FROM Students
三:查询部分列
eg:
SELECT SName, SAddress FROM Students
SELECT SName ,SGrade FROM Students
WHERE SAddress = '北京'
四:列别名
eg:
SELECT SCode AS 学生编号,SName AS 学生姓名,
SAddress AS 学生地址
FROM Students
WHERE SAddress <> '河南新乡'
SELECT FirstName + '.' + LastName AS 姓名
FROM Employees
注意:
1. + 连接的数据类型必须兼容
2. 如果 + 连接字符型数据,结果为字符串数据的连接
3. 如果 + 连接数值型数据,结果为数值的和
五:使用等号命名列
eg:
SELECT 姓名 = FirstName+'.'+LastName
FROM Employees
六:查询空行
eg:
SELECT SName FROM Students WHERE SEmail IS NULL
七:使用常量列
eg:
SELECT 姓名=SName,地址= SAddress , '北京新兴桥' AS 学校名称
FROM Students
八:限制固定行数
eg:
SELECT TOP 5 SName, SAddress
FROM Students WHERE SSex = 0
九:按百分数返回行
SELECT TOP 20 PERCENT SName, SAddress
FROM Students WHERE SSex = 0
十:相关练习:
SELECT StudentID,Score FROM Score ORDER BY Score
SELECT StudentID AS 学生编号,(Score*0.9+5) AS 综合成绩
FROM Score
WHERE (Score*0.9+5)>60
ORDER BY Score
十二:降序排列
eg:
SELECT StudentID,Score FROM Score ORDER BY Score DESC
十三:按多列排序
eg:
SELECT StudentID AS 学生编号, CourseID AS 课程ID, Score AS 成绩
FROM Score
WHERE Score > 60
ORDER BY CourseID, Score
常见问题:
.SQL语句不区分大小写
.字符串和日期类型都需要单引号
.起表名的时候,千万不要起得太好,例如不要使用User作为表名。
如果表名和关键字重复了,我们可以通过[]取消转义。
select * from [User]
注意:新建查询窗口中的中文空格。
select * from Message
十四:常用的几类函数:

函数名称:CharIndex('str1','str2',index)//位置从开始
--参数含义:
--第一个参数:要查询的字符串
--第二个参数:在哪个字符串中搜索
--第三个参数:从str2的第几个字母开始搜索
eg:
select charindex('好好学','S1是S2的基础,所以大家好好学',1)
SELECT CHARINDEX('JBNS','My Jbns Course')
select charindex('微冷的雨','好人啊微冷的雨',4)
select charindex('妈妈说','我们要为国家争光,妈妈说,是人就要有理想',11)
len():获取小括号中字符串的长度,空格也算一个字符长度
eg:
select len('明天咱们还上课,希望大家回去好好休息')
select len('大家都是好孩子 ')
注意点:如果内容以多个空格结尾,那么结尾的多个空格,是不计算长度的
upper():将括号中出现的英文全部转换成大写
select upper('i can speak english.你能吗?')
select lower('I HAVE A DREAM')
select upper('i have a dream,俺有一个梦想')
LTrim():清除括号中内容左边的空格(left:right)
select ltrim(' 生活不是林黛玉, '
select rtrim(' 生活不是林黛玉, ')
--既想移除左边空格,也想移除右边空格
select rtrim(ltrim(' 生活, '))
select ltrim(rtrim(' 你还好吧! '))
select len(rtrim('今年奇怪了,北京没下雪, '))
substring('字符串',截取的位置,截取的长度)
select substring('好吧,我爱自己伟大的祖国,真的',6,1)
right():从字符串右边返回指定类型的字符
select left('大家今天好像都没有交日记本,我去',3)
select right('大家今天好像都没有交日记本,我去',2)
replace('str1','要替换的字符','目标字符'):
select replace('周杰伦,残疾人,虽然手不残疾,但是X残疾','残疾','好')
stuff('字符串',删除的起始位置,删除的长度,'插入的字符串')
select stuff('我爱你中国,我爱你故乡',4,2,'北京')
select stuff('我们都要有理想,为了理想我们熬夜,当然以牺体为代价',6,2,'自信')

--01.getdate():获取当前日期和时间
select getdate()
--1000ms是s
--02.dateadd(按年/月/日添加,增量,时间)
select dateadd(yy,100,'2014-8-6')
select dateadd(year,-20,getdate())
--03.datediff(按年/月/日求差,小时间,大时间)
select datediff(year,'1998-01-01',getdate())
--04.datename:获取某个日期是星期几
select datename(dw,'2014-08-06')
--05.datepart(mm,日期):获取指定日期对应的年/月/日部分
select datepart(yy,getdate())
--Year yy
--Month mm
--Day dd
--push(推) pull(拉)
--通过该方式也可以获取当天是周几
select datepart(dw,getdate())

--01.rand():产生一个到之间的随机数
select right(rand(),4)
Select rand()
--如果产生四位数(-9999)
--02.abs:取绝对值
select abs(-10)
select abs(10)
--非负数
--03.ceiling:天花板,你要看天花板,抬头,向上取整
select ceiling(1.999991)
--04.floor:向下取整
select floor(1.999999)
select ceiling(1.000000000000001)
select floor(2.999999999999999)
--04.power(5,2)求幂值
select power(4,4)
select 1*2/3+5-56+100-5/100
select power(2,3)
--05.round:将一个数字四舍五入到指定精度
select round(42.564,1)
--06.sign:如果括号中写的是一个正数,返回,如果是负数,返回-1
--如果是返回
select sign(20)
select sign(0)
--07.sqrt()开平方
select sqrt(9)

卡里面的字母“O和数字0”、“字母i和数字1”,用户反映说看不清楚,公司决定,把存储在数据库中的密码中所有的“O”都改成“0”,把所有的“i”都改成“1”;
密码列名:PassWord
UPDATE Card SET PassWord = REPLACE(PassWord ,'O','0')
UPDATE Card SET PassWord = REPLACE(PassWord ,'i','1')
2:在数据库表中有以下字符数据,如:
13-1、13-2、13-3、13-10、13-100、13-108、13-18、13-11、13-15、14-1、14-2
13-1、13-2、13-3、13-10、13-11、13-15、13-18、13-100、13-108、14-1、14-2
后半部分的数字:
使用CONVERT函数将其转换为数字:0
SELECT ListNumber
FROM SellRecord
ORDER BY
CONVERT(int, LEFT(ListNumber, CHARINDEX('-', ListNumber)-1)),
CONVERT(int, STUFF(ListNumber,1, CHARINDEX('-', ListNumber), ''))
3:
新生入学,为其分配一个Email地址
分析:
DATEDIFF(DD,BornDate, GETDATE())>=365*20
RIGHT(Email, LEN(Email) - CHARINDEX('@',Email) )
CONVERT(VARCHAR(4), DATEPART(YYYY,GETDATE()))
获取4位随机数
RIGHT(RAND(),4)
世上无难事,只怕有心人。
不简单的SQL查询和排序语句的更多相关文章
- SQL查询结果排序
<第二章:查询结果排序>1:以指定的次序返回查询结果条件:显示部门10中员工名字,职位和工资并按照工资升序排列:升序asc 降序descSELECT ename,job,sal FRO ...
- [转载]要提高SQL查询效率where语句条件的先后次序应如何写
出处:https://www.cnblogs.com/exe19/p/5786806.html 我们要做到不但会写SQL,还要做到写出性能优良的SQL语句. (1)选择最有效率的表名顺序(只在基于规则 ...
- 要提高SQL查询效率where语句条件的先后次序应如何写
我们要做到不但会写SQL,还要做到写出性能优良的SQL语句. (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句 ...
- sql查询的常用语句
一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database 数据库名 3.说明:备份sql server --- 创建 ...
- Oracle提高SQL查询效率where语句条件的先后次序
(1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处 ...
- SQL查询效率where语句条件
有索引的列优先,都有索引的看查询出来的数据量,少的优先 in ,not in,<>,is null,is not null 等由于不会走索引,尽量不要使用. WHERE子句后面的条件顺序对 ...
- 执行sql查询,并查看语句执行花费时间
declare @d datetimeset @d=getdate() select * from A PRINT '[语句执行花费时间(毫秒)]'+LTRIM(datediff(ms,@d,getd ...
- SQL查询语句备忘录
有关于SQL查询的相关语句和语法的记录!备忘与复习用 1.SQL多表联合查询 select a.字段1,a.字段2,b,字段2 from 表1 a,表2 b where a.字段1 =b.字段1 2. ...
- 提高SQL查询效率(SQL优化)
要提高SQL查询效率where语句条件的先后次序应如何写 http://blog.csdn.net/sforiz/article/details/5345359 我们要做到不但会写SQL,还要做到 ...
随机推荐
- KnockoutJS 3.X API 第四章 表单绑定(11) options绑定
目的 options绑定主要用于下拉列表中(即<select>元素)或多选列表(例如,<select size='6'>).此绑定不能与除<select>元素之外的 ...
- 180分钟的python学习之旅
最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时 ...
- .NET实现Office Excel自定义公式 广泛应用于报表与数据分析
在管理软件开发的功能点中,有相当一部分功能是与Excel做数据交互,产生Excel 数据报表.如果Excel报表的数据计算方法很有规律可循,则可以通过自定义公式来解决.比如常见的资产负债表,利润表,取 ...
- silverlight MouseLeftButtonDown事件总是无法触发
参考解决办法:http://www.cnblogs.com/tianguook/archive/2011/05/13/2045299.html 在构造函数中首先添加一个事件: public BtnLi ...
- QQ5.0左侧滑动显示效果
前三篇为大家介绍了如何实现简单的类QQ5.0左侧的侧滑效果,本篇我将带领大家一起探讨一下如何真正实现QQ5.0左侧的侧滑效果,对于本篇的内容与之前的三篇关联性很强,如果前三篇你已经完全掌握,对于这一篇 ...
- mysql load data infile的使用 和 SELECT into outfile备份数据库数据
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE t ...
- 邻接矩阵有向图(二)之 C++详解
本章是通过C++实现邻接矩阵有向图. 目录 1. 邻接矩阵有向图的介绍 2. 邻接矩阵有向图的代码说明 3. 邻接矩阵有向图的完整源码 转载请注明出处:http://www.cnblogs.com/s ...
- PhotoShop常用快捷键
Photoshop常用快捷键: 图01 图02 图03 图04 图05 快捷键 PS快捷键是Photoshop为了提高绘图速度定义的快捷方式,它用一个或几个简单的字母来代替常用的命令. 多种工具共用一 ...
- Lagrange插值公式
朋友@耗子突然问起我一个 Lagrange 插值公式的问题,发现几年没碰差不多要忘干净了,于是找了本教科书来翻了翻,顺便把几个要点整理成文,以备日后查阅. 作者: peghoty 出处: http:/ ...
- UNIX/Linux打包,压缩 ,解压:
1.tar打包命令 ①tar cvf tarname.tar file1 file2 $ .log $ .log $ .log $ tar cvf alllog.tar *.log a .log 0K ...