简单的查询
一、 查询的基本结构
1. SELECT的基本结构:
SELECT [DISTINCT | ALL] select_list
FROM table_name_source
[WHERE search_condition]
[GROUG BY group_by_expression]
[HAVING search_condition]
[ORDER BY order_expression [ASC|DESC]]
必须的句子只有:SELECT 和 FROM 子句,其他句子都是可选的。各个部分具体含义如下:
A. 关键字SELECT后面输入要现实的字段清单。SECECT子句包含可选关键字DISTINCT 和ALL 。在需要删除结构中相同的行时,使用关键字DISTINCT;在需要返回查询结构中所有的行时,使用关键字ALL。如果没有指定任何一个关键字,那么关键字ALL就是默认的关键字。
B. FROM子句包括FROM 和一个或多个表结构,如果表结构不止一个,那么他们之间必须用逗号隔开。一般情况下,表结构是表的名称,但也可以是一种子查询。
C. 在WHERE子句中列出搜索标准,用于选择要现实的数据行。如果SELECT语句没有WHERE子句,DBMS假设目标行中所有的行都满足条件。
D. GROUP BY子句,用于分组查询结果。根据group_by_expression 中列出的列,归纳信息类型,汇总相关数据。
E. HAVING 子句,列出另外的行选择标准准,以便根据GROUP BY子句产生的结果筛选行。
F. ORDER BY 子句,接受SELECT 子句的输出,并且按照ORDER BY子句中的规范,对查询结果进行排列。这里的规范就是ASC和DESC关键字。ASC关键字表示生序排列结果,DESC表示将序排列结果。如果没有指定任何一个关键字,那么ASC就是默认的关键字。如果没有ORDER BY子句,DBMS将根据表中的数据来显示数据。
2. 列的查询
创建Teacher表
CREATE TABLE_NAME Teacher
{
TON INT NOT ALL,
TNAME CHAR(10) NOT ALL,
CON INT NOT ALL,
SAL INT,
DNAME CHAR(10) NOT ALL,
TSEX CHAR(2) NOT ALL,
AGE INT NOT ALL
}
INSERT INTO Teacher VALUES(1,‘王军’,4,800,‘数学’,‘男’,32)
INSERT INTO Teacher VALUES(2,‘李彤’,5,1200,‘生物’,‘女’,54)
……
2.1单列查询:
SELECT column
FROM table_name_name
SELECT指明要查询的字段名称(column),FROM关键字指明要获取字段的信息表的名称。
如 SELECT TNAME
FROM Teacher
2.2使用DISTINCT 去除重复信息
SELECT DISTINCT column
FROM table_name_name
2.3多列查询:
SELECT co1,co2,co3,……,coln
FROM table_name
如: SELECT TNAME ,SAL,AGE
FROM Teacher
2.4查询所有的列:
SELECT *
FROM table_name
*是通配符,查询结果将列出所有列的元素,而不必指明各个列的列名,这在用户不清楚表中各列的列名时非常有用。
3.查询结果排序:
3.1单列排列:
SELECT column1,colum2,…
FROM table_name_name
ORDER BY column_N
(ORDER BY 一定要放在所有子句的最后。)
3.2多列排序:
SELECT col1,col2,…,coln
FROM table_name
ORDER BY col1,col2,…,colm
实际排序结果是根据ORDER BY 子句后面列明的顺序确定优先顺序的。
3.3采用序号进行多列排序:
SELECT col1,col2,…,coln
FROM table_name
ORDER BY I,j,…
3.4反向排序:
SELECT col1,col2,…,coln
FROM table_name
ORDER BY col1 DESC ,col2
4.使用WHERE子句定义搜索条件查询:
4.1WHERE 子句单条件查询:
SELECT column
FROM table_name
WHERE column condition_value
如:
SELECT TNAME,DNAME,AGE,TSEX
FROM Teacher
WHERE DNAME=‘计算机’
ORDER BY AGE
4.2但只比较运算符:
(1)“>=”运算符
SELECT TNAME,DNAME,AGE,TSEX
FROM Teacher
WHERE AGE>=40
(2)“<>”运算符
“<>”表示不等于,相当于“!=”运算符
4.3 BETWEEN 运算符范围筛选:
SELECT TNAME,DNAME,AGE,TSEX
FROM Teacher
WHERE AGE BETWEEN 30 AND 50
ORDER BY AGE
从表Teacher中筛选年龄30到50之间的信息
4.4 NULL值的判断
SELECT TNAME,SAL,AGE,TSEX
FROM Teacher
WHERE SAL IS NOT ALL
ORDER BY SAL