create database lian0831
go
use lian0831
go
create table stu
(
code int not null,
cid varchar(20) not null,
name varchar(10),
banji varchar(10),
sex varchar(10),
age int not null,
yufen decimal(18,2),
shufen decimal(18,2),
yingfen decimal(18,2),
)
insert into stu values(1001,‘370302199101011111‘, ‘张三‘,‘一班‘,‘男‘,25,70,65,76)
insert into stu values(1002,‘370302199101011112‘, ‘李四‘,‘一班‘,‘女‘,25,76,85,66)
insert into stu values(1003,‘370302199201011111‘, ‘李琦‘,‘一班‘,‘男‘,24,30,95,46)
insert into stu values(1004,‘370302199301011112‘, ‘齐娜‘,‘一班‘,‘女‘,23,60,65,68)
insert into stu values(1005,‘370302199201011112‘, ‘王琦‘,‘二班‘,‘女‘,24,74,68,76)
insert into stu values(1006,‘370302199302011111‘, ‘唐骑‘,‘二班‘,‘男‘,23,76,67,75)
insert into stu values(1007,‘370302199103011112‘, ‘崔倩‘,‘二班‘,‘女‘,25,70,35,86)
insert into stu values(1008,‘370302199404011111‘, ‘牛超‘,‘二班‘,‘男‘,22,72,64,78)
insert into stu values(1009,‘370302199107011112‘, ‘王雪‘,‘三班‘,‘女‘,25,73,64,77)
insert into stu values(1010,‘370302199207011111‘, ‘张瑞‘,‘三班‘,‘男‘,24,77,65,77)
insert into stu values(1011,‘370302199203011111‘, ‘许可‘,‘三班‘,‘男‘,24,74,63,72)
insert into stu values(1012,‘370302199004011111‘, ‘余克‘,‘三班‘,‘男‘,26,50,45,86)
sp_renamedb lian0831,xuesheng
sp_renamedb xuesheng,lian0831
select* from stu
select yufen from stu
--将yufen作为语文成绩显示出来
select yufen as 语文 from stu
--查询年龄为24的人的年龄,语文分数,性别
select yufen,name,sex from stu where age=24
--查询yufen在60到80之间的人的姓名
select name from stu where yufen between 75and 80
--查询时自动去重,并不删除,对一列去重显示
select distinct yufen from stu where age=24
--查询一班年龄为24的女同学的语文成绩
select yufen as 语文,name as 姓名 from stu where age=23 and sex=‘女‘ and banji=‘一班‘
--查询一班的年龄为23或者24的学生姓名
select age as 年龄,name as ‘姓名‘ from stu where age=23 or age=24 and banji =‘一班‘
--查询年龄在22到23的所有数据
select*from stu where age in(22,23)
--查询学号不是1003和1011之间的所有数据
select * from stu where code not in(1003,1011)
--不在1003和1011之间的
select * from stu where code not between 1003 and 1011
--模糊查询
--百分号可以表示任意字符,长度不限
select *from stu where name like ‘%李%‘
--下划线表示任意找一个字符
select *from stu where name like‘许_‘
--引号里面括号外加下划线,意思为任意一个括号里的值
select *from stu where name like‘_[许可,徐克]‘
--升序降序
--按照语文分数升序
select *from stu order by yufen asc
--按照数分降序
select shufen as 数学 from stu order by shufen desc
--按照数分降序前三名的所有数据
select top 3* from stu order by shufen desc
--年龄为25的数分降序排列
select *from stu where age=25 order by shufen desc
--年龄为25的数分降序排列,找出第一个
select top 1*from stu where age=25 order by shufen desc
--数学函数
--绝对值
select ABS(-5)--得出结果
print abs(-7)--得出消息
select *from stu where ABS(shufen)>=85
--取上限 ceiling
select yufen from stu where CEILING(yufen)>75
--取下限 floor 取下限
select FLOOR(1.7)
--n次方 power
select POWER(2,4)
select ‘这是‘+‘年龄的平方:‘,POWER(age,2) from stu
--round 四舍五入,逗号后边表示第几位
select ROUND(222.336,1)
--平方根
select SQRT(4)
--平方
select SQUARE(4)
--字符串函数
--ASCII 返回字符串中首字母的ASCII编码
select ASCII(‘name‘)
select ASCII (name) from stu
select name,ascii(name) from stu where ASCII(name)>200
--char 将ASCII转化为对应字符
select CHAR(77)
select CHAR(yufen) from stu
--charindex 在一个表达式中搜索另一个表达式,并返回起始位置
--在逗号的后面寻找逗号前面的字符段,返回首字母的索引,索引从1开始
select CHARINDEX(‘ef‘,‘abcdefghi‘)
select CHARINDEX(‘1992‘,cid) from stu--返回值为0说明没有找到。
--字符串的拼接
select ‘a‘+‘b‘+‘c‘
--difference 返回相似度,用0-4表示相似度
select DIFFERENCE(‘a‘,‘abc‘)
--left 逗号前是字符串,后边是从左向右截取多少
select left(‘abcdef‘,3)
--right 从右向左截取
select right(‘123456‘,3)
select LEFT(name,1)from stu where age=23
--len 查询字符串长度,前面的空格算,后面的空格不算
select LEN (‘ abc ‘)
select LEN(name) from stu where yufen>=75
--lower 将大写转化为小写
select lower(‘ABCdef‘)
--小写转大写
select UPPER(‘abcDEF‘)
--删除左边空格,相当于.net里的trimstart
select LTRIM(‘ a‘)
--删除右边的空格
select RTRIM(‘ 123 ‘)
--patindex相当于charindex,返回查找的字符段的首字母所在的索引
select PATINDEX(‘%cd%‘,‘abcdefg‘)--查找的字符串前后要加%,与charindex不一样。
--replace 替换显示,并不是更改
--第一个是查找的位置字符串,第二个是要选择更换的字符段,第三个是要改成的字符段。
select yufen,name,replace(sex,‘女‘,‘lady‘) from stu where age=25 order by yufen asc
--replicate 复制,可规定次数
select REPLICATE(‘a‘,2)--显示的是被复制的两遍
--reverse翻转字符串
select REVERSE(‘abcd ‘)
select REVERSE(name) from stu where age=24
--打印空格
select ‘a‘+SPACE(15)+‘b‘
--str 将一个小数转化为字符串,1参数是原数据,
--2参数是字符串长度(要大于等于原数据的整数部分的长度),
--3参数是截取小数点后几位,小数点也算一位
select STR(1111.111,6,3)
--stuff 参数1是源字符串,参数2是从第几位索引开始,
--参数3表示向后删除几位(包括索引到的开始的字符),
--参数4表示要插入的字符串
select STUFF(‘abcde12345‘, 1,2,‘哈哈‘)
--substring 从指定索引截取指定长度的字符串
select yufen ,SUBSTRING(name,1,1)from stu where age=24 order by yufen asc
--时间日期函数
SELECT @@DATEFIRST AS ‘1st Day‘, DATEPART(dw, GETDATE()) AS ‘Today‘
SELECT GETDATE()
SELECT @@DATEFIRST--系统常量,直接返回一个值
--dateadd,参数1是增加的项,参数2是增加多少,参数3是在哪个时间上增加
select DATEADD(YEAR,2,‘2007-01-01‘)--month day
--datediff 相差多少,参数1是指定那个数,餐宿2是开始,参数3是结束
select DATEDIFF(MONTH,‘2007-01-01‘,‘2007-05-01‘)
--datename 返回参数1指定的类型
select DATENAME(WEEKDAY,‘2011-1-2‘)--(year,month ,day,week)
--datepart等同于datename区别于datename返回字符串,datepart返回int
--getdate获取本地时间日期
select GETDATE()
--isdate判断时间日期格式是否正确,正确为1,错误为0
select ISDATE(‘1-2-31‘)
--精确获取时间
select SYSDATETIME()
--数据转换,函数转换
--cast
select CAST(123 as varchar(20))--值类型转化为字符串
select CAST(1.23 as int)--decimal类型转化为int
select CAST(123 as decimal(18,2))--int类型转化为decimal
select CAST(‘1.23‘ as decimal(18,2))--字符串类型转化为decimal
select CAST(‘12.3‘ as int)--字符串转int
--convert--前面写类型,后边写原数据,与cast相反
select convert(int ,‘123‘)