1 --使用昨天创建好的lianxi0425的数据库
2 --1.创建一个学生信息表xinxi
3 --列名分别为:
4 --code(int) not null
5 --name(varchar(50)) not null
6 --birth(varchar(50)) not null
7 --sex(char(10)) not null
8 --score(decimal(18,2))
9 --banji(varchar(20)) not null
10 --创建表格
11 use lianxi0425
12 go
13 create table xinxi
14 (
15 code int not null,
16 name varchar(50) not null,
17 birth varchar(50) not null,
18 sex char(10) not null,
19 score decimal(18,2) not null,
20 banji varchar(20) not null,
21 )
22 go
23
24
25
26 --插入信息:
27 --插入十个人的信息,插入班级时要求有两个班级
28 --创建一班数据
29 insert into xinxi values(101,'张三','1990年3月2日','男',86,'一班')
30 insert into xinxi values(102,'王丽','1991年5月5日','女',95,'一班')
31 insert into xinxi values(103,'王五','1990年10月3日','男',86,'一班')
32 insert into xinxi values(104,'李四','1992年11月11日','男',89,'一班')
33 insert into xinxi values(105,'张红','1990年9月5日','女',80,'一班')
34
35 --创建二班数据
36 insert into xinxi values(201,'赵六','1990年4月2日','男',94,'二班')
37 insert into xinxi values(202,'赵红','1991年6月6日','女',95,'二班')
38 insert into xinxi values(203,'马七','1990年5月9日','男',86,'二班')
39 insert into xinxi values(204,'刘九','1992年12月20日','男',78,'二班')
40 insert into xinxi values(205,'马丽','1990年7月5日','女',92,'二班')
41 --1)查询全部
42 select *from xinxi
43 --2)查询一列(姓名)
44 select name from xinxi
45 --3)查询多个列(姓名、性别、生日)
46 select name,sex,birth from xinxi
47 --4)根据条件查询一行(code=102)
48 select * from xinxi where code=102
49 --5)根据条件查找一个数据(code为102的姓名)
50 select name from xinxi where code =102
51 --6)根据条件查找多个数据(code为102的姓名性别)
52 select name , sex from xinxi where code=102
53 --7)插入一条数据(自己的信息)
54 insert into xinxi values(206,'张全蛋','1989年3月3日','男',60,'二班')
55 --8)更改code为102的学生的生日为1990-1-1
56 update xinxi set birth='1990年1月1日' where code=102
57 --9)删除code为205的学生的数据
58 delete from xinxi where code=205
59
60 --查询所有分数在90分以上的
61 select * from xinxi where score between 90 and 100
62 select * from xinxi where score>90
63
64 --模糊查询 用% 表示
65 --%可以表示任意的字符,不管长度如何
66 --like 像
67 --查看所有姓赵的
68 select * from xinxi where name like '赵%'
69 select * from xinxi where name like '%四'
70 --下划线表示此位置只有一个完整字符
71 --查看姓李的并且名字只有两个字
72 select * from xinxi where name like '李_'
73
74 --分数从小到大排出来 后缀为asc 默认不写就是升序
75 select * from xinxi order by score
76 --降序 后缀为desc
77 select * from xinxi order by score desc
78
79 --查看分数排名前三的人员的所有信息
80 select top 3 * from xinxi order by score desc
81
82
83
84 --聚合函数
85 --AVG() 求平均数
86 --求平均分数 as表示列名显示为***
87 select AVG(score) as 平均分 from xinxi
88 --查询一班的平均分
89 select AVG(score) as 平均分 from xinxi where banji='一班'
90
91 --Count 求个数
92 select COUNT(*) from xinxi
93 --查询姓王的人有几个
94 select COUNT(*) from xinxi where name like '王%'
95
96 --MAX 求最大
97 select MAX(score) from xinxi where banji='二班'
98 --MIN 求最小
99
100 --SUM 求总和
101 select SUM(score) from xinxi where banji = '一班'
102
103 --group by 分组
104 select banji from xinxi group by banji
105 --分组之后看看每个班级的平均分
106 select banji , AVG(score) as 平均分,COUNT(*) as 人数 from xinxi group by banji
107 --having 后面只允许跟聚合函数
108 select banji ,AVG(score) as 平均分 from xinxi where score>85 group by banji having COUNT(*)>3
109
110
111 --select 作用 查询
112 select 7+19
113
114 --数学函数
115 --ABS 绝对值
116 select ABS(-44)
117 --ceiling 上线
118 select CEILING(3.14)
119 --floor 下线
120 select FLOOR(3.14)
121 --POWER 谁得几次方
122 select POWER(6,4)
123 --ROUND 四舍五入,逗号后边表示小数点后有几位
124 select ROUND(44.444,0)
125 --SQRT 平方根
126 select SQRT(4)
127 --square 2次方
128 select SQUARE(4)
129
130
131 --字符串函数
132 --ASCII 将字符转化为数值
133 select ASCII('a')
134 select ASCII(name) from xinxi
135 --CHAR 将数值转化为字符
136 select CHAR(97)
137 select CHAR(score) from xinxi
138 --CHARINDEX 查看此字符串首次出现的位置
139 select CHARINDEX('efg','abcdefghijklmn')
140
141 --left 从左侧截取多少个
142 select LEFT('abcdefg',3)
143 --right 从右截取几个
144 select RIGHT('abcdefg',3)
145 --LEN 查看字符串的长度,前面的空格算,后面的不算
146 select LEN(' abc ')
147
148
149 --时间日期函数
150 SET DATEFIRST 1
151 SELECT @@DATEFIRST AS '1st Day', DATEPART(dw, GETDATE()) AS 'Today'
152 SELECT GETDATE()--获取当前时间
153 select SYSDATETIME()--获取更精确的系统时间