-
随着信息化的不断深入发展,数据生成速度正在提高,需要处理的数据量急速膨胀,大数据时代即将到来。
所谓大数据指所涉及的数据量规模巨大,以至于无法通过主流软件在合理的时间内进行处理的数据。
在面对海量数据时,传统关系数据库虽然具有支持完整性约束、支持事务等优点,但是在大规模海量数据面前显得力不从心。
传统关系数据库主要存在以下问题,
一是在数据格式转化和存储方面无法满足海量数据处理对性能的要求;
二是无法满足动态扩展和高可用性的需求;三是传统大型关系数据库通常运行在大型设备上,成本高昂。
大数据对数据的存储和处理方法提出了新的要求。
如何有效地对这些大规模数据进行存储、查询、分析,已经成为一个亟待解决的问题,因此我们介绍几种数据查询系统。
一. 数据查询基础
1. 查询所有数据
select * from 表名
2. 根据限制条件查询数据
select * from 表名 where 限制条件
3. 根据特定列进行排序,默认为升序排列
select * from 表名 order by 排序列名 升序/降序
4. 使用别名AS
select StudentName as 学生姓名,GradeId as 年级编号 from Student
5. 使用=号命名别名
select 学生姓名=StudentName,年级编号=GradeId from Student
6. 使用+号拼接数据
SELECT StudentNo+GradeId AS 学生信息 FROM Student
注意:
1. + 连接的数据类型必须兼容
2. 如果 + 连接字符型数据,结果为字符串数据的连接
3. 如果 + 连接数值型数据,结果为数值的和
7. 查询空值
select * from Student where Emial IS NULL
8.使用常量列
SELECT StudentName AS 学生姓名,'北京昌平' AS 住址 FROM Student\\\
9.使用Top限制数据行
9.1 限制特定数据行数
SELECT top 10 * from Student
9.2 限制特定数据百分比
SELECT TOP 60 PERCENT * FROM Student
二. 多表查询
思路:确定要查询的列,以及确定要查询的表,然后找表与表之间的关系
--查询学生信息(学生姓名,年级名称,出生日期以及邮箱),找引用关系
select studentName,GradeName,BornDate,email from Student,Grade where Student.GradeId=Grade.GradeId
--查询S1年级下的科目名称
select SubjectName as 科目名称 from Subject,Grade where Grade.GradeName='S2' AND Subject.GID=Grade.GradeId
--查询S1年级下所有学生姓名
select StudentName as 学生姓名 from Student,Grade where Grade.GradeName='S1' AND Student.GradeId=Grade.GradeId
--查询学生编号为1的考试科目以及考试成绩
select SubjectName,StudentResult from Result,Subject,Student where Student.StudentNo=1
AND Result.StudentNo=Student.StudentNo And Result.SubjectId=Subject.SubjectId
三. SQL函数
1.字符串函数
用于控制返回给用户的字符串
2.日期函数
用于操作日期值
3.数学函数
用于对数值进行代数运算
4.系统函数
获取有关SQL Server中对象和设置的系统信息
详情请见书上SQL函数表
年满20周岁的条件
DATEDIFF(DD,BornDate, GETDATE())>=365*20
获取Email的域名
RIGHT(Email, LEN(Email) - CHARINDEX('@',Email) )
获取当前日期的年、月、日
CONVERT(VARCHAR(4), DATEPART(YYYY,GETDATE()))
获取4位随机数
RIGHT(RAND(),4)