5.Select的基本用法
创建数据表是在创建存放数据的容器,修改和删除数据表是在维护数据模型的正确性,将数据插入数据表、更新数据表以及删除数据表中的数据则是在维护数据库中数据与真实业务数据之间的同步,这些操作都不是经常发生的,它们只占据数据库操作中很小的一部分,我们大部分时间都是在对数据库中的数据进行检索,并且基于检索结果进行响应的分析,可以说数据的检索是数据库中最重要的功能。
创建数据表并添加数据:
create table T_Employee ( FNumber varchar(20),--员工工号 FName varchar(20),--员工姓名 FAge int,--年龄 FSalary decimal(10,2),--月工资 primary key(FNumber) ) --插入初始数据 insert into T_Employee(FNumver,FName,FAge,FSalary) values('DEV001','Tom',25,8300) insert into T_Employee(FNumver,FName,FAge,FSalary) values('DEV002','Jerry',28,2300.80) insert into T_Employee(FNumver,FName,FAge,FSalary) values('SALES001','John',23,5000) insert into T_Employee(FNumver,FName,FAge,FSalary) values('SALES002','Kerry',28,6200) insert into T_Employee(FNumver,FName,FAge,FSalary) values('SALES003','Stone',22,12000) insert into T_Employee(FNumver,FName,FAge,FSalary) values('HR001','Jane',23,2200.88) insert into T_Employee(FNumver,FName,FAge,FSalary) values('HR002','Tina',25,5200.36)
1.简单的检索数据
select FNumber,FName,FAge,FSalary from T_Employee
2.列别名
为字段取一个别名,这样就可以使用这个别名来引用这个列了。
SELECT FNumber AS Number,FName AS Name,FAge AS Age,FSalary AS Salary FROM T_Employee
或者
SELECT FNumber 工号,FName 姓名,FAge 年龄,FSalary 工资
FROM T_Employee
3.按条件过滤
SELECT * FROM T_Employee WHERE FSalary<5000 and FAge>25
4.数据汇总
SQL标准中规定了下面几种聚合函数:
SELECT MAX(FSalary) as MAX_SALARY FROM T_Employee WHERE FAge>25
Count(*)与Count(字段):
执行下面的sql
SELECT COUNT(*),COUNT(FNumber),COUNT(FName) FROM T_Employee
会得到结果:9,9,8.可以看到COUNT(*)、COUNT(FNumber)两个表达式的计算结果都是9,而COUNT(FName)的计算结果是8。也就反应出了两种使用方式的区别:COUNT(*)统计的是结果集的总条数,而COUNT(FName)统计的则是除了结果集中FName不为空值(也就是不等于NULL)的记录的总条数。
5.排序
SELECT * FROM T_Employee ORDER BY FAge DESC
“ORDER BY FAge ASC”指定了按照FAge字段的顺序进行升序排列,其中ASC代表升序。因为对于ORDER BY子句来说,升序是默认的排序方式,所以如果要采用升
序的话可以不指定排序方式,也就是“ASC”是可以省略的。
多个排序规则:
SELECT * FROM T_Employee ORDER BY FAge DESC,FSalary DESC
ORDER BY子句完全可以与WHERE子句一起使用,唯一需要注意的就是ORDER BY子句要放到WHERE子句之后:
SELECT * FROM T_Employee WHERE FAge>23 ORDER BY FAge DESC,FSalary DESC
6.随机排序
在开发一些新闻、娱乐类应用系统的时候,有时候需要随机的显示数据库中的若干条数据,比如随机显示3个人员。要实现这个功能首先需要随机对人员表中的数据进行排序,然后再取排序后的结果集的前三条即可。
SELECT TOP 3 * FROM T_Person ORDER BY NEWID()--随机排序
7.表复制
--复制源表的结构并复制表中的数据 SELECT * INTO table2 FROM T_Person
--只复制源表的结构 SELECT * INTO T_Person2 FROM T_Person WHERE 1<>1