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