聚合函数,数学、字符串、函数,时间日期函数
create database lianxi0425--创建一个名字为lianxi0425的数据库 go use lianxi0425 --使用练习0425这个数据库 go --创建一个学生xinxi1的表,填写学号、名字、出生年份、性别、分数、班级 create table xinxi1 ( code int not null, name varchar(50) not null, birth varchar(50) not null, sex char(10) not null, score decimal(18,2), banji varchar(20) not null ) go --向表中添加值 insert into xinxi1 values(1,'张三',87,'男',98.5,'一班') insert into xinxi1 values(2,'李四',88,'男',97.5,'一班') insert into xinxi1 values(3,'王五',89,'男',96.5,'一班') insert into xinxi1 values(4,'赵六',90,'女',95.5,'一班') insert into xinxi1 values(5,'冯七',91,'男',94.5,'一班') insert into xinxi1 values(6,'周小红',92,'女',93.5,'一班') insert into xinxi1 values(7,'孙小明',93,'男',92.5,'二班') insert into xinxi1 values(8,'吴小刚',94,'男',91.5,'二班') insert into xinxi1 values(9,'郑克爽',95,'男',90.5,'二班') insert into xinxi1 values(10,'冯锡范',96,'男',99.5,'二班') go --查询全部 select*from xinxi1 --修改表中的值 --把编号为6的周小红班级改为二班 --用update修改xinxi1表中的数据,set列名为banji的列表中改名为二班,where条件name中'周小红'只修改这一个 update xinxi1 set banji = '二班' where name = '周小红' --查询多个列(姓名,性别,生日) select name,sex,birth from xinxi1 --根据条件查询一行(code=2) select*from xinxi1 where code=2 --根据条件查找一个数据(code为3的姓名) select name from xinxi1 where code=3 --根据条件查找多个数据(code为4的姓名,性别,分数) select name,sex,score from xinxi1 where code=4 --插入一条数据(自己的信息) insert into xinxi1 values(11,'索额图',88,'男',98,'二班') --删除code为8的学生的数据 delete from xinxi1 where code=8 --查询所有分数在95分以上的 select*from xinxi1 where score between 95 and 100 --between and二者之间,在分数95到90之间 select*from xinxi1 where score>95 --查询模糊 用%表示 --%可以表示任意字符,不管长度如何 --like 像 --查看所有名字中有小的 select*from xinxi1 where name like '%小%' --查看所有姓张的 select*from xinxi1 where name like '张%' --查看所有名字后面是七的 select*from xinxi1 where name like '%七' --下划线表示此位置只有一个完整字符 --查看姓李的并且名字只有两个字 select*from xinxi1 where name like '李_' --根据分数从小到大把学生信息排出来 后缀为asc 默认不写就是升序 select*from xinxi1 order by score asc --order by排序,用法order by加上列名 --降序 后缀为desc select*from xinxi1 order by score desc --后面加desc排序就会从大到小降序 --查询排名前三的人员所有信息 select top 3*from xinxi1 order by score desc--首先查询xinxi1中数据按照分数从大到小排列,再选取从上到下前三个人,用top,表示从上面开始,3表示选取三个 --聚合函数 --AVG()求平均数 --求平均分数 as表示列名显示为*** select AVG(score)as 平均分 from xinxi1 --查询一班的平均分 select AVG(score)as 平均分 from xinxi1 where banji='一班' --Count 求个数 select COUNT(*)from xinxi1 --查询姓王的人有几个 select COUNT(*)from xinxi1 where name like'王%' --查询有几个女的 select COUNT(*)from xinxi1 where sex='女' --MAX 求最大 最高分 select MAX(score) from xinxi1 --求二班最高分 select MAX(score) from xinxi1 where banji='二班' --MIN 求最小 --求分数最少的 select MIN(score) from xinxi1 --求一班最低分 select MIN(score) from xinxi1 where banji='一班' --SUM求总和 --求分数总和 select SUM(score) from xinxi1 --求一班分数总和 select SUM(score) from xinxi1 where banji='一班' --group by 分组 select banji from xinxi1 group by banji --分组之后看看每个班级的人数和平均分 select banji,AVG(score)as 平均分,COUNT(*)as 人数 from xinxi1 group by banji --having 后面只允许跟聚合函数 select banji,AVG(score)as 平均分 from xinxi1 where score>92 group by banji having COUNT(*)>3--having后面加的属于一个筛选条件,看看前面函数是否有符合这个条件的,不符合的不显示,只显示符合 --select 作用 查询 select 7+19 --数学函数 --ABS 绝对值 select ABS(-44) --ceiling 上线 select CEILING(3.14) --floor 下线 select FLOOR(3.14) --POWER 谁得几次方 select POWER(6,4)--这个表示6的4次方 --ROUND 四舍五入,逗号后边表示小数点后有几位 select ROUND(44.444,0)--44.4440四舍五入,小数点后面有零位 --SQRT 平方根 select SQRT(4)--开平方 --square 2次方 select SQUARE(4) --字符串函数 --ASCII 将字符转化为数值 select ASCII('a') select ASCII(name) from xinxi1 --CHAR 将数值转化为字符 select CHAR(97) select CHAR(score) from xinxi1 --CHARINDEX 查看此字符串首次出现的位置 select CHARINDEX('efg','abcdefghijklmn') --left 从左侧截取多少个 select LEFT('abcdefg',3) --right 从右截取几个 select RIGHT('abcdefg',3) --LEN 查看字符串的长度,前面的空格算,后面的不算 select LEN(' abc ')
--时间日期函数 SET DATEFIRST 1--程序默认一周的第一天是周日,需要把它先改为1,周一 SELECT @@DATEFIRST AS '1st Day', DATEPART(dw, GETDATE()) AS 'Today' SELECT GETDATE()--获取当前时间 select SYSDATETIME()--获取更精确的系统时间