数据库的简单检索SQL语句

上一篇 / 下一篇  2016-12-08 11:09:05 / 个人分类:数据库

数据准备:
T_Employee为记录员工信息的数据表,其中主键字段FNumber为员工工号,FName为人员姓名,FAge为年龄,FSalary为员工月工资。T_Employee数据表的创建SQL语句:
MYSQL:
CREATE TABLE T_Employee (FNumber VARCHAR(20),FName VARCHAR(20),FAge INT,FSalary
DECIMAL(10,2),PRIMARY KEY (FNumber))
MSSQLServer:
CREATE TABLE T_Employee (FNumber VARCHAR(20),FName VARCHAR(20),FAge INT,FSalary
NUMERIC(10,2),PRIMARY KEY (FNumber))
CREATE TABLE T_Employee (FNumber VARCHAR2(20),FName VARCHAR2(20),FAge NUMBER
(10),FSalary NUMERIC(10,2),PRIMARY KEY (FNumber))
DB2:
CREATE TABLE T_Employee (FNumber VARCHAR(20) NOT NULL,FName VARCHAR(20),FAge
INT,FSalary DECIMAL(10,2),PRIMARY KEY (FNumber))

数据插入SQL语句:
INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES('DEV001','Tom',25,8300);
INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES('DEV002','Jerry',28,2300.80);
INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES('SALES001','John',23,5000);
INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES('SALES002','Kerry',28,6200);
INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES('SALES003','Stone',22,1200);
INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES('HR001','Jane',23,2200.88);
INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES('HR002','Tina',25,5200.36);
INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES('IT001','Smith',28,3900);

简单的数据检索
SELECT * FROM T_Employee  与 
SELECT FNumber,FName,FAge,FSalary FROM T_Employee >>检索所有的行和列
SELECT FNumber FROM T_Employee  >>检索某一列
SELECT FName,FAge FROM T_Employee   >>检索某几列

列别名
SELECT FNumber AS Number1,FName AS Name,FAge AS Age,FSalary AS Salary FROM T_Employee 与
SELECT FNumber Number1,FName Name,FAge Age,FSalary Salary FROM T_Employee   >>定义别名的时候“AS”不是必须的,是可以省略的
SELECT FNumber 工号,FName 姓名,FAge 年龄,FSalary 工资FROM T_Employee   >>若数据库系统支持中文也可定义中文别名
 
条件过滤
SELECT FName FROM T_Employee
WHERE FSalary<5000
SELECT * FROM T_Employee
WHERE FSalary<5000 OR FAge>25

数据汇总
函数名说明:这几个聚合函数都有一个参数,这个参数表示要统计的字段名
MAX 计算字段最大值
MIN 计算字段最小值
AVG 计算字段平均值
SUM 计算字段合计值
COUNT 统计数据条数

SELECT MAX(FSalary) as MAX_SALARY FROM T_Employee
WHERE FAge>25
SELECT AVG(FAge) FROM T_Employee
WHERE FSalary>3800
SELECT SUM(FSalary) FROM T_Employee
SELECT MIN(FSalary),MAX(FSalary) FROM T_Employee
SELECT COUNT(*),COUNT(FNumber) FROM T_Employee  >>:COUNT(*)统计的是结果集的总条数,而COUNT(FName)统计的则是除了结果集中FName 不为空值(也就是不等于NULL)的记录的总条数

排序
SELECT语句允许使用ORDER BY 子句来执行结果集的排序方式
SELECT * FROM T_Employee
ORDER BY FAge ASC   >>升序
升序是默认的排序方式,也就是“ASC”是可以省略的,比如下面的SQL 语句具有和上面的SQL 语句等效的执行效果:
SELECT * FROM T_Employee
ORDER BY FAge

SELECT * FROM T_Employee
ORDER BY FAge DESC   >>降序

ORDER BY语句允许指定多个排序列,各个列之间使用逗号隔开即可
SELECT * FROM T_Employee
ORDER BY FAge DESC,FSalary DESC >>数据库系统首先按照FAge 字段的降序进行排列,如果按照第一个排序规则无法区分两条记录的顺序,则按照FSalary字段的降序进行排列

对于多个排序规则,数据库系统会按照优先级进行处理。数据库系统首先按照第一个排序规则进行排序;如果按照第一个排序规则无法区分两条记录的顺序,则按照第二个排序规则进行排序

ORDER BY子句完全可以与WHERE子句一起使用,唯一需要注意的就是ORDER BY子句要放到WHERE 子句之后,不能颠倒它们的顺序

SELECT * FROM T_Employee
WHERE FAge>23
ORDER BY FAge DESC,FSalary DESC


以上摘自《程序员的SQL 金典》

TAG: 数据库数据

 

评分:0

我来说两句

Open Toolbar