数据库简单查询

目录

二、简单查询

(1)基本查询

(2)使用WHERE子句

比较运算符的使用

范围运算符的使用

列表运算符的使用

模式匹配运算符的使用

空值判断运算符的使用

逻辑运算符的使用

(3)使用ORDER BY子句

(3)使用LIMIT子句


select语句的基本语法

SELECT [ALL|DISTINCT]要查询的内容

FROM表名列表

[WHERE条件表达式]

[GROUP BY字段名列表[HAVING逻辑表达式]]

[ORDER BY字段名[ASCIDESC]]

[LIMIT [OFFSET,] n];

注意:

all 全部输出,写为* 。distinct 只输出一次(不输出重复的)

在上述语法结构中,SELECT查询语句共有7个子句,其中SELECT和FROM子句为

必选子句而WHERE、GROUPBY(用于字段分组)、ORDER BY(用于排序,升序或者降序)和LIMIT子句为可选子句

HAVING子句与GROUP BY子句联合使用,不能单独使用

SELECT子句既可以实现数据的简单查询、结果集的统计查询,也可以实现多表查

二、简单查询

(1)基本查询

SELECT [ALLIDISTINCT]要查询的内容

FROM表名列表;

【例5-1】查询“学生选课”数据库的studentinfo表,输出所有学生的详细信息。

注:查询结果要输出表或视图的特定字段时,要明确指出字段名,多个字段名之间用

逗号分开。

对应的sql语句:SELECT sno,sname,sgender,sbirth,sclass

FROM studentinfo;

在SELECT子句的查询字段列表中,字段的顺序是可以改变的,无需按照表中定义的

顺序排列。例如,上述语句可以写为:

SELECT sname,sno,sgender,sbirth,sclass FROM studentinfo;

当要查询的内容是数据表中所有列的集合时,可以用符号“*”来代表所有字段名的集

合。例如,上述语句可以写为

SELECT * FROM studentinfo;

例:查询“学生选课”数据库的studentinfo表,输出所有学生的学号、姓名,以及此

查询的日期和时间。用now()

对应的SQL语句如下:SELECT sno,sname,now()FROM studentinfo;

执行结果如图:

例:查询“学生选课”数据库的studentinfo表、输出所有学生的学号、姓名、以及此次查询的日期和时间,并分别使用“学生学号”“学生姓名”“查询日期”作为别名原名as别名,(as可以省略)

对应的SQL语句如下:

SELECT sno学生学号,sname AS学生姓名,now()AS查询日期

FROM studentinfo;

执行结果如图:

为了清晰,此处把studentinfo表数据中sclass改了

例:查询“学生选课”数据库的studentinfo表,输出学生所在的班级,每个班级

只输出一次。

对应的SQL语句如下:

SELECT DISTINCT sclass

FROM studentinfo;

执行结果如图:

(2)使用WHERE子句

WHERE子句可以指定查询条件,用以从数据表中筛选出满足条件的数据行。

语法格式如下:

SELECT [ALL|DISTINCT]要查询的内容

FROM表名列表

WHERE条件表达式;

WHERE子句的条件表达式可以使用的运算符如表

比较运算符的使用

例:查询“学生选课”数据库的studentinfo表,输出“网络技术101”班学生的详

细信息。

对应的SQL语句如下:

SELECT*

FROM studentinfo

WHERE sclass='网络技术101';

执行结果如图:

范围运算符的使用

例:查询“学生选课”数据库的studentinfo表,输出1993年7月出生的学生的详细信

对应的SQL语句如下:

SELECT *

FROM studentinfo

WHERE sbirth BETWEEN ' 1993-7-1' AND '1993-7-31';

执行结果如图

列表运算符的使用

例:查询“学生选课”数据库的studentinfo表,输出学号为10101001、

1010100的学生的详细信息。

对应的SQL语句如下:

SELECT *

FROM studentinfo

WHERE sno IN (' 10101001',’10102001',’11101001');

执行结果如图

模式匹配运算符的使用

在指定的条件不是很明确的情况下,可以使用LIKE运算符与模式字符串进行匹配

运算。其语法格式如下:

字段名[NOT] LIKE'模式字符串’

通配符和字符串必须括在单引号中。

如果要查找的字符串本身就包括通配符,可以用符号“\”将通配符转义为普通字符

'a%'表示以a开头的字符串

'%101'表示以101结尾的字符串

'_学%'表示第一位不知道,第二位是学的字符串

如果字符串本身有_,则用\表示

例'a\_',第一位是a,第二为是_的字符串

例:查询“学生选课”数据库的studentinfo表,输出姓“张”的学生的详细信息。

对应的SQL语句如下:

SELECT *

FROM studentinfo

WHERE sname LIKE'张%';

执行结果如图

空值判断运算符的使用

IS [NOT] NULL运算符用于判断指定字段的值是否为空值。对于空值判断,不能

使用比较运算符或模式匹配运算符。

对应的SQL语句如下:

SELECT *

FROM elective

WHERE score IS NULL;

执行结果如图

逻辑运算符的使用

查询条件可以是一个条件表达式,也可以是多个条件表达式的组合。逻辑运算符能够连接多个条件表达式,构成一个复杂的查询条件。逻辑运算符包括:AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)。

例:查询“学生选课”数据库的studentinfo表,输出姓“王”且是“电子商务101"

班的学生的信息。

对应的SQL语句如下:

SELECT *

FROM studentinfo

WHERE sname

LIKE’王%' AND sclass ='电子商务101';

例:查询“学生选课”数据库的studentinfo表,输出姓“小”或者是

“电子商务101”班的学生的信息。

对应的SQL语句如下:

SELECT *

FROM studentinfo

WHERE sname LIKE'王%' OR sclass ='电子商务111';

例:查询“学生选课”数据库的studentinfo表,输出不是1993年出生的学生

的信息。

对应的SQL语句如下:

SELECT *

FROM studentinfo

WHERE NOT (YEAR(sbirth)=1993);

执行结果如图

(3)使用ORDER BY子句

在查询结果集中,数据行是按照它们在表中的顺序进行排列的。我们可以使用ORDERBY子句对查询结果集中的数据行依照指定字段的值重新排列。其语法格式如下:

SELECT

[ALL|DISTINCT]要查询的内容FROM表名列表

[WHERE条件表达式]

ORDER BY字段名[ASC|DESC];

例:查询“xxgc”数据库的studentinfo表,学生出生日期降序排列

对应的SQL语句如下:

SELECT * from studentinfo  ORDER BY sbirth DESC;

(3)使用LIMIT子句

使用LIMIT子句可以指定查询结果从哪一条记录开始,一共查询多少条记录。其语

法格式如下:

SELECT [ALL|DISTINCT]要查询的内容

FROM表名列表

[WHERE条件表达式]

[ORDER BY字段名[ASC|DESC]]

LIMIT [OFFSET, ] n;

LIMIT子句接受一个或两个整数参数。其中OFFSET代表从第几行记录开始检索,n代表检索多少行记录。需要注意的是,OFFSET可以省略不写,默认取值为0,代表从第一行记录开始检索。

例:查询“学生选课”数据库的studentinfo表,输出前三条学生记录的信息。

SELECT *

FROM studentinfo

LIMIT 3;

执行结果

例:查询“学生选课”数据库的studentinfo表,输出表中第五行学生记录的信息。

对应的SQL语句如下:

SELECT *

FROM studentinfo

LIMIT 4,1:

执行结果如图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值