SQL SELECT语句

SQL
SELECT语句返回用指定的条件在一个数据库中查询的结果,返回的结果被看作记录的集合。语法:SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2] [, ...]]} FROM tableexpression [, ...] [IN externaldatabase] [WHERE... ] [GROUP BY... ] [HAVING... ] [ORDER BY... ] [WITH OWNERACCESS OPTION]

SELECT语句返回用指定的条件在一个数据库中查询的结果,返回的结果被看作记录的集合。SELECT语法如下:

SELECT  [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2] [, ...]]}
FROM  tableexpression [, ...] [IN externaldatabase]
[WHERE criteria]
[GROUP BY fieldlist]
[HAVING ]
[ORDER BY [DESC|ASC]]
[WITH OWNERACCESS OPTION]

说明:

predicate 可选参数,该参数可取值为ALL(缺省值)、DISTINCT、DISTINCTROW 或TOP。

如果该参数为ALL,则返回SQL语句中符合条件的全部记录;

如果为DISTINCT,则省略选择字段中包含重复数据的记录;

如果为DISTINCTROW,则省略基于整个重复记录的数据,而不只是基于重复字段的数据;如果为TOP n(n为一个整数),则返回特定数目的记录,且这些记录将落在由ORDER BY 子句指定的前面或后面的范围中。

* 参数用于指定特定表中的全部字段。

Table 参数用于指定表的名称。

field1,field2 用于指定字段的名称,该字段包含了您要获取的数据。

alias1,alias2 用于指定字段的别名,以代替表中原有的字段名。 

FORM 子句用于指定表或查询,该表的查询包含SELECT语句中列举的字段。

tableexpression 参数是用于指定一个或多个表的表达式,并且从这些表中获取数据。

externaldatabase 参数用于指定外部数据库的完整路径,该数据库包含tableexpression中的所有的表。使用 IN 子句一次只能连接一个外部数据库。

WHERE 子句用于指定查询记录的条件,如果省略该子句,则查询将返回表中的所有行。

criteria 参数是一个表达式,用于指定查询的条件。WHERE子句最多可包含40个表达式,当输入的字段名包含空格或标点符号时,要使用括号[]将它括起来。

GROUP BY 将记录与指定字段中的相等值组合成单一记录。如果 SELECT 语句包含 SQL 合计函数,比如 Sum 或 Count,则每一笔记录都会给出一个总计值。

fieldlist 参数用于指定将记录分组的字段名,该参数中的字段名的顺序决定组的层次,它最多可以使用10 个字段。

HAVING 子句在 SELECT 语句中指定,显示哪些已用 GROUP BY 子句分组的记录。在 GROUP BY 组合这些记录后,HAVING 将显示那些经 GROUP BY 子句分组并满足 HAVING 子句中条件的记录。

groupcriteria 参数是一个表达式,用以决定应显示的已分组记录,该子句最多可包含40个表达式。

ORDER BY 子句指定按照递增或递减顺序在指定字段中对查询的结果记录进行排序。

SELECT语句实例:

select最简短写法

SELECT 列名称 FROM 表名称

以及:

SELECT * FROM 表名称

注意:SQL语句对大小写不敏感。SELECT 等效于 select。

创建Test表:

CREATE TABLE test (
  n_id int(11) NOT NULL AUTO_INCREMENT,
  c_alias varchar(100) DEFAULT NULL,
  c_constellation varchar(100) DEFAULT NULL,
  c_name varchar(200) DEFAULT 200,
  c_sex char(1) DEFAULT 1,
  n_age int(11) DEFAULT NULL,
  PRIMARY KEY (`n_id`)
)
// 部分数据
INSERT INTO test(c_constellation, c_alias, c_name, c_sex, n_age) VALUES('天魁星', '呼保义', '宋江', '1', 22);
INSERT INTO test(c_constellation, c_alias, c_name, c_sex, n_age) VALUES('天罡星', '玉麒麟', '卢俊义', '1', 22);
INSERT INTO test(c_constellation, c_alias, c_name, c_sex, n_age) VALUES('天机星', '智多星', '吴用', '1', 22);
INSERT INTO test(c_constellation, c_alias, c_name, c_sex, n_age) VALUES('天闲星', '入云龙', '公孙胜', '1', 22);
INSERT INTO test(c_constellation, c_alias, c_name, c_sex, n_age) VALUES('天勇星', '大 刀', '关胜', '1', 22);
INSERT INTO test(c_constellation, c_alias, c_name, c_sex, n_age) VALUES('天雄星', '豹子头', '林 冲', '1', 22);
INSERT INTO test(c_constellation, c_alias, c_name, c_sex, n_age) VALUES('天猛星', '霹雳火', '秦 明', '1', 22);
INSERT INTO test(c_constellation, c_alias, c_name, c_sex, n_age) VALUES('天威星', '双 鞭', '呼延灼', '1', 22);
INSERT INTO test(c_constellation, c_alias, c_name, c_sex, n_age) VALUES('天英星', '小李广', '花 荣', '1', 22);

1、查询test表中所有的n_id、c_name和c_sex列的数据

SELECT a.n_id, a.c_name, a.c_sex FROM test a;

结果:

select语句

2、在select中使用通配符

SELECT * FROM test;

结果:

select语句

3、在select中使用where条件,选择名字中有“明”字的人员信息。

SELECT * FROM test WHERE c_name LIKE '%明%';

结果:

select语句

4、在select中使用order by语句进行排序。按照n_id进行降序排序。

SELECT * FROM test WHERE c_name LIKE '%李%' ORDER BY n_id DESC;

结果:

select语句

5、在select中使用group by语句对c_sex列进行分组。

SELECT c_sex FROM test GROUP BY c_sex

SQL SELECT语句

6、使用select中的having对分组进行过滤。下面过滤掉c_sex!=1的数据行

SELECT c_sex FROM test GROUP BY c_sex HAVING c_sex=1;

SQL SELECT语句

沉浸于现实的忙碌之中,没有时间和精力思念过去,成功也就不会太远了。——雷音
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号