数据库(四)数据查询

4.1基本查询语句
select基本语法如下:

select selection_list                 //要查询的内容,选择哪些列
from 数据表名                          //指定数据表
where primary_constraint              //查询时需要满足的条件,行必须满足的条件
group by grouping_columns             //如何对结果进行分组
order by sorting_columns              //如何对结果进行排序
having secondary_constraint           //查询时满足的第二条件
limit count                           //限定输出的查询结果
select id,password from tb_user;//查询表中的一列或多列
select tb_admin.id,tb_admin.password,tb_user.id,tb_user.password from tb_admin,tb_user;//从一个或多个表中获取数据

4.2单表查询

select * from tb_admin where user='mr';--查询指定数据
select * from tb_admin where user in('mr','mingri');--带关键字in的查询
select * from tb_admin where id between 5 and 7;--指定范围查询
select * from tb_admin where id not between 5 and 7;--不在某指定范围内查询
select * from tb_admin where user like '%mr%';--比较运算符,实现模糊查询
select user,createtime from tb_admin where createtime is null;--用关键字is null查询空值;
select * from tb_admin where user='mingri' and password='111';--用关键字and的多条件查询;
select * from tb_admin where user='mingri' or password='111';--用关键字or的多条件查询;
select distinct password from tb_admin;--使用关键字distinct去除结果中的重复行
select * from tb_admin order by id desc;--order by 字段名 [asc|desc](1)asc升序(2)desc降序
select id,user,password from tb_admin group by user,password,id;--分组查询
select id,user,group_concat(password) from tb_admin group by password,id,user;
select * from tb_admin order by id desc limit 3;--限制前3条记录
select * from tb_admin where id order by id asc limit 1,3;--限制从编号1开始,查询3条记录

4.3聚合函数查询

select count(*) from tb_admin;--统计记录数
select sum(id) from tb_admin;--求和
select avg(id) from tb_admin;--求平均
select max(id) from tb_admin;--求最大值
select min(id) from tb_admin;--求最小值

4.4连接查询

内连接:内连接是最普遍的连接类型,而且是最匀称的,因为它们要求构成连接的每一部分的每个表的匹配,不匹配的行将被排除。

select name,password from tb_admin,tb_book where tb_admin.id=tb_book.id;

外连接查询:与内连接不同,外连接是指用outer join关键字将两个表连接起来。外连接生成的结果集不仅包含符合连接条件的行数据,而且还包括左表(左外连接时的表)、油表(右外连接时的表)或两边连接表(全外连接)

select name,indexword,tb_book.id,user,password 
from tb_book left join tb_admin on tb_book.id=tb_admin.id;
//左外连接,是将左表的所有数据分别与右表中的每条数据进行连接组合,返回的结果除内连接的数据外,还包括
//左表中不符合条件的数据,并在右表的相应列中添加NULL值。
select name,indexword,tb_book,id,user,password from tb_book 
right join tb_admin on tb_book.id=tb_admin.id;
//右外连接是指将右表中的所有数据分别与左表中的每条数据进行连接组合,返回的结果除
//内连接的数据外,还包括右表中不符合条件的数据,并在左表的相应列添加NULL
select name,indexword,tb_book.createtime,tb_admin.id 
from tb_book,tb_admin where tb_book.id=tb_admin.id and tb_admin.id>1;

4.5子查询

select * from tb_admin where id in(select id from tb_book);--带关键字IN的内子查询
select id,user,password from tb_admin 
where id>=(select id from tb_book where indexword=124);--带比较运算符的子查询
select * from tb_book where exists(select * from tb_admin where id=9);
//使用关键字exists时,内层查询语句不返回查询的记录。而是返回一个真假值。如果内层查询语句查询到满足条件
//的记录,就返回一个真值,否则返回一个假值。当返回的值为true时,外层查询语句将进行查询;当返回的值为false时,
//外层查询语句不进行查询或者查询不出任何记录
select id,user,password from tb_admin 
where id>5 and exists(select * from tb_book where name='matlab');
//当关键字exists与其他查询条件一起使用时,需要使用and或者or来连接表达式与exists关键字
select id,user,password from tb_admin where id<any(select id from tb_book);
//关键字any表示满足其中任意一个条件,使用关键字any时,只要满足内层查询语句返回的结果中的
//任意一个,就可以通过该条件来执行外层查询语句。
select id,user,password from tb_admin where id>=all(select id from tb_book);
//带关键字all的查询,只有满足内层查询语句返回的所有结果
select id from tb_admin union select id from tb_book;
//union是将所有的查询结果合并到一起,然后去除相同记录
select id from tb_admin union all select id from tb_book;
//union all 只是简单地将结果合并到一起
select * from tb_book book where book.id-1;
//为表取别名为book
select name as book_name,indexword as book_indexword from tb_book;
//为字段取别名
select * from tb_book where name regexp '[a]';
//正则表达式
select * from tb_book where name regexp 'a*a';
//*可以表示0个或者多个a出现。
select * from tb_book where name regexp 'a+a';
//+表示前面至少有一个字母a

猜你喜欢

转载自blog.csdn.net/heloiselt/article/details/80261043