在上一篇文章中简单介绍了C语言上机实现:九九乘法表、百鸡问题、求圆的面积、判断年份是否是闰年和数组的排序。现在简单介绍一下程序(BS构架)的大致工作:客户端请求后台处理查询数据库并返回数据客户端接收返回数据并展示给用户,今天我们主要讲数据库基础常用的知识点。
首先学习之前必须安装SQL Server,我用的是2014你们可以根据自己电脑配置安装,安装教程百度很多这里就不详细介绍,安装完成之后我们打开SQL Server 2014 Management Studio。为了你们能看得清楚我用中文新建的一个成绩库分别建了几张表。
建表sql如下,将下来代码分别在新建查询中执行:
一、班级表
CREATETABLE[dbo].[班级表](
[班号] [char](8)NOTNULL,
[班名] [nvarchar](20)NULL,
[专业] [nvarchar](10)NULL,
[班主任] [nchar](10)NULL,
[系号] [char](4)NULL,
CONSTRAINT[PK_班级表]PRIMARYKEYCLUSTERED
(
[班号]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
一、学生表
CREATETABLE[dbo].[班级表](
[班号] [char](8)NOTNULL,
[班名] [nvarchar](20)NULL,
[专业] [nvarchar](10)NULL,
[班主任] [nchar](10)NULL,
[系号] [char](4)NULL,
CONSTRAINT[PK_班级表]PRIMARYKEYCLUSTERED
(
[班号]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
三、成绩表
CREATETABLE[dbo].[成绩表](
[学号] [char](10)NOTNULL,
[课程号] [nchar](8)NOTNULL,
[成绩] [numeric](5,1)NULL,
CONSTRAINT[PK_成绩表]PRIMARYKEYCLUSTERED
(
[学号]ASC,
[课程号]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
一、查询所以班级
select*from班级表--查询所有表
二、查询班级号为01002
select*from班级表where班号='01002'--01002的数据
三、按照班号,班名,系号分组
select班号,班名,系号from班级表Groupby班号,班名,系号--分组
四、多表联合查询:查询成绩不及格的
select*from[dbo].[学生表]where学号in(select学号from[dbo].[成绩表]where成绩
五、按照成绩高低降序排序和升序排序
select*from成绩表orderby成绩desc--降序排序
select*from成绩表orderby成绩asc--升序排序
六、删除000101的学生
delete[dbo].[成绩表]where学号='000101'--不带条件删除全部
七、插入学生,学号为10010、姓名为小三、性别为男、出生日期为1984-10-01、班号为10120 、系号为d002 、专业为语文的学生
INSERTINTO学生表(学号,姓名,性别,出生日期,班号,系号,专业)VALUES('10010','小三','男','1984-10-01','10120','d002','语文')
八、更新学号为10010将专业改为:数学
UPDATE学生表SET专业='数学'WHERE学号='10010'
九、预留给你们思考问题:分页查询,每页10条数据,并查出所有姓刘的学生,并按出身日期排序,并查出数据总数。
小结:数据库无非就是增删改查,最难的应该是查询,这里有很多条件限制,对于数据库设计不合理时影响到后面我们的代码编写逻辑和代码量,数据量越大数据查询效率也就越慢。第九个问题你们是否思考出来了呢?我给大家一个实例吧!下一篇讲解使用C#+SQL开发只有属于自己的网站。
selecttop10*,(selectcount(1)from学生表where1=1and姓名like'%刘%')asCountfrom(SELECTROW_NUMBER()OVER(ORDERBY学号)ASRowNumber,*FROM学生表)asAwhere1=1and姓名like'%刘%'andRowNumber>10*(1-1)ORDERBY出生日期DESC
领取专属 10元无门槛券
私享最新 技术干货