前言:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,用户可以对文件中的数据进行增、删、改、查。数据库有很多种类型,从简单的存储有各种数据的表格到能都进行海量数据存储的大型数据库系统都在各个方面都到了广泛的应用。在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。这节课主要讲解SQL数据库。
内容:
1.SQL Server 2008安装教程参考:http://blog.csdn.net/mingxuanyun/article/details/7752259。
2.在新建数据库时,数据库最好以英文单词来命名,增强代码的可读性,并且各英文单词首字母大写。
3.在新建表时,最好让表有一个自增的主键。
4.数据库是运行在SQL Server(MSSQLSERVER)服务上的,若在删除某数据库时出现“该数据库正在被占用”的错误,则可以把该服务重启一下即可。重启该服务可以做应急处理。
5.如果修改一个表的时候弹出不让修改的提示,可以选择工具->选项->Designers->表设计器和数据库设计器,将其下面的“阻止保存要求重新创建表的修改”前面的对号去掉即可。
6.可以用可视化的方式创建数据库,也可以用SQL语句来进行创建。
7.数据库中的布尔类型用bit来表示。
8.char/nchar/varchar/nvarchar:char(10)表示能存放10个字符,5个汉字,定长,如果只放了一个字符则后面有九个空格,这种方式的存储容易造成浪费,所以很少使用;nchar(10)表示能放10个中文,也是定长的存储方式,也很少使用;varchar(10)能存放5个中文,变长,根据内容的长度来存储,不会造成空间的浪费,是比较常用的方式;nvarchar(10)表示可以放10个中文,变长,用的相对较多。
9.SQL语句是不区分大小写的,且其字符串是单引号,不是双引号。
10.常见的SQL语句用法:
(1)create database Library //创建数据库
go
use Library
go
(2)create table Users //创建表
{
UID int primary key,
userAge int not null,
userName nvarchar(20) not null,
userPwd nvchar(20) not null
}
(3)select语句
select * from Users //查询出Users表里面的所有信息
select UID,userName from Users //查询出Users表里面所有的UID,userName
select * from Users where UID=3 //查询出Users表里面UID=3的所有信息
select * from Users order by userAge asc //默认是asc(可以不写)从小打到,desc是从大到小
select * from Users where userName = 'zoe' and userAge = 20
select * from Users where UID in (2,3,4) //查询出Users表中的UID为2,3,4的所有信息
select * from Users where userAge between 20 and 30 order by userAge //查询出Users表中userAge在20到30之间的所有信息,并且按照userAge从小到大排序,同样也可以写成:select * from Users where userAge > 20 and userAge <30 order by userAge
select * from Users where userName like 'z%' //查询出Users表中userName里面第一个字母是z的所有人信息
select * from Users where userName like '%z%' //查询出Users表中userName里面包含z的所有人信息
select * from Users where userName like '%z' //查询出Users表中userName里面最后一个字母是z的所有人信息
select top 3* from Users order by userAge desc //查询出年龄最大的三个用户
select top 3 userName from Users order by userAge desc //查询出年龄最大的三个用户的姓名
select count(*) from Users //查询出Users表中的所有记录数
select count(*) as UserCount from Users //查询出Users表中的所有记录数,并将该列命名为UserCount
select count(*) as UserCount, userAge from Users group by userAge //通过userAge分组查询出Users表中的所有记录数,并将该列命名为UserCount
select count(*) as UserCount, userAge from Users group by userAge having count(*)>2 //分组查询出表中记录数大于2的组,group by 和having配合使用,不能再使用where条件
select min(userAge) from Users //查询出Users表中userAge最小的记录
select max(userAge) from Users //查询出Users表中userAge最大的记录
select avg(userAge) from Users //查询出Users表中userAge的平均值
select sum(userAge) from Users //查询出Users表中userAge的总和
select * from Users where userAge > (select avg(userAge) from Users) //查询userAge大于平均userAge的所有记录
(4)连接:inner join on,left join on, right join on
select SI.StuId,SI.StuName,SI.ClassName,PE.FatherName,PE.MotherName from StuInfor SI left join Parent PE on SI.StuId=PE.StuId //左关联,表示以左表为基准来查询,即上面的StuInfor,左表的记录将会全部表示出来,而右表(Parent)只会显示符合搜索条件的记录。同理可以理解right join on。inner join on并不以哪个表为基准,只显示符合条件的记录。项目中一般有三个表就行了,四个表或以上联合查询的效率很低下。
后记:大概了解了怎么用,基本的语句都是懂的,只能在实战中多使用了。