第九章 数据查询基础

 
          查询    
/****** Script for SelectTopNRows command from SSMS  ******/
SELECT TOP 1000 [StudentNo]
      ,[LoginPwd]
      ,[StudentName]
      ,[Sex]
      ,[GradeId]
      ,[Phone]
      ,[Address]
      ,[BornDate]
      ,[Email]
  FROM [MySchool].[dbo].[Student]
  
  --查询所有的数据行和列
  SELECT * FROM dbo.Student
  
  查询部分行或列
  SELECT StudentNo ,StudentName ,GradeId FROM dbo.Student WHERE Sex='女' AND GradeId=1
 
 --查询中使用列的别名
 SELECT StudentNo AS 学号,StudentName AS 姓名, GradeId AS 年级 FROM dbo.Student  WHERE Sex='男' AND GradeId=2
 
  --查询空值(采用 "IS NULL"或"IS NOT NULL"来判断是否为空)
  SELECT 姓名=StudentName,性别=Sex,年级=GradeId,Email FROM dbo.Student WHERE  Email IS NULL
 --------------
  SELECT 姓名=StudentName,性别=Sex,年级=GradeId,Email FROM dbo.Student WHERE  Email IS NOT NULL
   
  
  --查询中使用常量列(将常量的默认值添加到查询输出中) 
  SELECT '北大青鸟' AS 学校,StudentNo AS 学号,StudentName AS 姓名,Sex AS 性别,GradeId AS 年级,Phone AS 联系方式, Email FROM dbo.Student
 
 -- 查询返回限制的行数 (查询部分前十列,使用TOP关键字约束)
 SELECT TOP 10 StudentNo,StudentName,Sex,GradeId FROM dbo.Student WHERE GradeId=1
 
 
 --查询返回限制的行数 (查询百分比提取记录,使用PERCENT关键字来限制)
 SELECT TOP 20 PERCENT StudentNo AS 学号,StudentName AS 姓名,Sex AS 性别,GradeId AS 年级 FROM dbo.Student WHERE Sex='男'
 
 --(1990年后出生的学生姓名)
 SELECT * FROM dbo.Student WHERE BornDate>1990
 
 
 
 
 
 
 -------(字符串函数)
 
 --查询所在位置
 SELECT StudentNo AS 学号,StudentName AS 姓名, GradeId AS 年级,Phone AS 联系方式 ,CHARINDEX('6',Phone,1)as 位置,Address AS 地址   FROM dbo.Student  WHERE Sex='男' AND GradeId=2
 
 
 --查询长度
SELECT StudentNo AS 学号,StudentName AS 姓名, GradeId AS 年级,Phone AS 联系方式 ,Address AS 地址,LEN(Address)AS 长度  FROM dbo.Student  WHERE Sex='男' AND GradeId=2
  
  
  --转换成大写
  SELECT StudentNo AS 学号,StudentName AS 姓名, GradeId AS 年级,Phone AS 联系方式 ,Address AS 地址,Email,UPPER(Email)AS 大写Email  FROM dbo.Student  WHERE Sex='男' AND GradeId=2
  
  
  --清除字符左边的空格
                           --添加空格
  SELECT StudentNo AS 学号,' '+StudentName+' ' AS 姓名, GradeId AS 年级,Phone AS 联系方式 ,Address AS 地址,Email  FROM dbo.Student  WHERE Sex='男' AND GradeId=2
  --左边的空格
  SELECT StudentNo AS 学号,' '+StudentName+' ' AS 姓名,LTRIM(StudentName), GradeId AS 年级,Phone AS 联系方式 ,Address AS 地址,Email  FROM dbo.Student  WHERE Sex='男' AND GradeId=2
  --右边的空格
  SELECT StudentNo AS 学号,' '+StudentName+' ' AS 姓名,RTRIM(StudentName), GradeId AS 年级,Phone AS 联系方式 ,Address AS 地址,Email  FROM dbo.Student  WHERE Sex='男' AND GradeId=2
  
  
  --从字符串右边返回指定数目的字符
  SELECT StudentNo AS 学号,StudentName AS 姓名, GradeId AS 年级,Phone AS 联系方式 ,RIGHT(Phone,4)AS 右边四位数, Address AS 地址,Email  FROM dbo.Student  WHERE Sex='男' AND GradeId=2
   --从字符串左边返回指定数目的字符
  SELECT StudentNo AS 学号,StudentName AS 姓名, GradeId AS 年级,Phone AS 联系方式 ,left(Phone,4)AS 左边四位数, Address AS 地址,Email  FROM dbo.Student  WHERE Sex='男' AND GradeId=2
  
  
  --替换一个字符串中的字符
   SELECT StudentNo AS 学号,StudentName AS 姓名, GradeId AS 年级,Phone AS 联系方式 , Address AS 地址,REPLACE(Address,'学生','优秀')AS 替换后地址, Email  FROM dbo.Student  WHERE Sex='男' AND GradeId=2
  
  
  --删除指定长度的字符,并在该位置插入新的字符串
  SELECT StudentName AS 姓名,Phone AS 联系方式,STUFF(Phone,3,5,'***')AS 插入后,Address AS 地址 FROM dbo.Student 
  
  
  
  
  
  
  -------(日期函数)
  --yy,yyyy(年)  mm,m(月)  wk,ww(周)  dw,w(日期) mi,n(分) ss,s(秒) 
  --取得当前系统日期
  SELECT StudentNo,StudentName,Address,BornDate,GETDATE()AS 当前日期,Email FROM dbo.Student 
  
  
  --将指定的数值添加到指定日期(月份)
  SELECT StudentNo,StudentName,Address,BornDate,DATEADD(MM,4,BornDate )AS 添加后日期,Email FROM dbo.Student 
  
  
  --指定日期部分的间隔(月份)
  SELECT StudentNo,StudentName,Address,BornDate,DATEDIFF(MM,'1995-9-9',BornDate)AS 日期间隔,Email FROM dbo.Student 
   
   
   --指定日期部分字符串形式(weekday)
   SELECT StudentNo,StudentName,Address,BornDate,DATENAME(DW,BornDate)AS 字符串形式,Email FROM dbo.Student 
   
   
   --指定日期部分的整数形式
   --(整数--年)
   SELECT StudentNo,StudentName,Address,BornDate,DATEPART(year,BornDate)AS 整数型式,Email FROM dbo.Student 
   --(整数--月)
   SELECT StudentNo,StudentName,Address,BornDate,DATEPART(month,BornDate)AS 整数型式,Email FROM dbo.Student 
   --(整数--日)
   SELECT StudentNo,StudentName,Address,BornDate,DATEPART(DAY,BornDate)AS 整数型式,Email FROM dbo.Student 
   
   
  
  
  
  --------数学函数
  
  --返回从0到1之间的随机float值
  SELECT RAND() 
  
  --取数值表达式的绝对值
  SELECT ABS(-78),ABS(-63)
  
         --取整数        幂值           指定精度                    平方根     
  SELECT CEILING(55.6), POWER(5,2), ROUND(45.321,1),ROUND(23.212,2),SQRT(9)
  
  --正数返回+1,负数返回-1,0则返回0
  SELECT SIGN(-45),SIGN(23) 
  
  
  
  
  
  
  ------系统函数
  
      --转变数据类型               返回当前用户姓名      字节数            计算机名字   所登录用户名  用户ID返回用户名
  SELECT CONVERT(VARCHAR(5),12345), CURRENT_USER ,  DATALENGTH('滴滴答答'),HOST_NAME(), SYSTEM_USER,  USER_NAME(1)
  
  
  
  
  
  
  
  
 -- (E-maill中@的位置) 
 SELECT Email,CHARINDEX('@',Email,1 ) FROM dbo.Student 
 
 --(E-maill的长度)
  SELECT Email,LEN(Email) FROM dbo.Student
  
 


 

 

 

 
   排序
/****** Script for SelectTopNRows command from SSMS  ******/
SELECT TOP 1000 [Id]
      ,[StudentNo]
      ,[SubjectId]
      ,[StudentResult]
      ,[ExamDate]
  FROM [MySchool].[dbo].[Result]
  --查看第一学期所有学生信息
  SELECT  * FROM [MySchool].[dbo].[Result] WHERE SubjectId=1
  
  
  --查看第二学期所有学生的信息
  SELECT * FROM [MySchool].[dbo].[Result] WHERE SubjectId=2
  
  
  --查看第三学期所有学生的信息
  SELECT * FROM dbo.Result WHERE SubjectId=3
 
 
 --查看StudentResult超过60的信息
 SELECT * FROM dbo.Result WHERE StudentResult>60
 
 --查询排序(使用ORDER BY进行排序   ASC:"升序--[默认]"  DESC:"降序")
 --ExamDate(升序输出)
 SELECT * FROM dbo.Result  ORDER BY  ExamDate 
 
 
 --StudentResult(降序输出)
 SELECT * FROM dbo.Result ORDER BY StudentResult DESC
  
  --按日期,成绩,编号为1的考试科目信息
  SELECT ExamDate,StudentResult,SubjectId  FROM dbo.Result WHERE SubjectId=1  ORDER BY ExamDate , StudentResult DESC   
 
  --前五名学生成绩
  SELECT TOP 5 StudentResult FROM dbo.Result  WHERE ExamDate='2013-3-22'
  
  --查询学号"S1101003"考试信息,先后顺序显示
  SELECT StudentNo,StudentResult,ExamDate FROM dbo.Result WHERE StudentNo='s1101003'  ORDER BY ExamDate
  
  


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值