MySQL数据库基本命令学习(4)
数据查询
基本查询语句
>select selection_list #要查询的内容,选择哪些列
>from 数据表名 #指定数据表
>where primary_constraint #查询时需要满足的条件,行必须满足的条件
>group by grouping_columns #如何对结果进行分组
>order by sorting_cloumns #如何对结果进行排序
>having secondary_constraint #查询是满足的第二条件
>limit count #限定输出的查询结果
实例化操作
>select *from user;
>#使用select语句查询一个数据表,输出表中的所有数据
>
> select id,lxdh from user;
> #查询表中的一列或者多列
>
> select tb_admin.id tb_admin.tb_user,tb_students.id tb_students.name
> from tb_admin,tb_students;
> #从一个或者多个表中获取数据
>select jtsr from user,jtsr
> where user.user=jtsr.user and user.id=1;
单表查询
>select *from 数据表名
>#查询所有字段
>
>select 字段名 from 数据表名
>#查询指定字段
查询指定数据
查询指定的数据需要用一些比较运算符来确定查询的条件,具体比较运算符和其他语言相似,不做过多描述.
>select *from tb_login where user='mr';
>查询user等于mr的数据
带关键词IN的查询
>select *from 表名 WHERE 条件 [NOT]IN(元素1,元素2...);
实例化操作
>select *from tb_login where user in('MR','lx');
>#查询user为MR和lx的数据
>select *from tb_login where user not in('MR','lx');
>#查询user不为MR何lx的数据
带关键词BETWEEN AND的范围查询
>SELECT *FROM 表名 WHERE 条件 [NOT] BETWEEN 取值1 AND 取值2;
实例化操作
>select *from tb_login where id between 5 and 7;
>#查询id在5和7之间的数据,结果为id为6和id为7的数据
>select *from tb_login where id not between 5 and 7;
带LIKE的字符匹配查询
LIKE属于比较常用的比较运算符,通过它可以实现模糊查询,他有两种通配符:“%”和下划线“_”。
“%”可以匹配零个或者多个字符。
“_”只能匹配一个字符。
>select *from tb_login where user like '%mr%';
>#查询user字段包含mr字符的数据
用关键字IS NULL查询控制
>select books,row from tb_book where row is null;
>查询tb_book中row为空的字段
关键词AND 、OR 的多条件查询符合逻辑运算条件,和其他语言效果相同
>select *from tb_login where user='mr' and section='php';
>#查询表中user为mr 同时 section为php的数据
>
>select *from tb_login where user='mr' or section='php';
>#查询表中user为mr 或者 section为php的数据
关键词DISTINCT可以去除结果中的重复行
关键词ORDER BY 可以对查询结果进行排序
关键词GROUP BY 可以进行分组查询
关键词LIMIT可以限制查询结果的数量
>select distinct name from tb_login;
>#查询结果会剔除name中重复的字段
>select *from tb_login order by id desc;
>#降序排序查询
>select *from tb_login order by id asc;
>#升序排序查询
>select id,books,talk from tb_book group by talk;
>#通过talk字段进行分组查询,这种形式只会显示对应分组的一条数据
>selcet id,books,group_concat(talk) from tb_book group by talk;
>#这种组合形式可以将每个分组的所有字段都显示出来。
>select id,books,talk,user from tb_book group by user,talk;
>#按照多个字段进行分组
>select *from tb_login order by id asc limit 3;
>#按照ID进行升序排列并显示前三条内容
>select *from tb_login order by id asc limit 1,2;
>#按照ID进行升序排列并从编号1开始查询两条记录
聚合查询
COUNT()函数:返回所选择集合中非NULL值得行的数目
SUM()函数:可以求出表中某个字段取值的总和
AVG()函数:可以求出表中某个字段取值的平均值
MAX()函数:求出表中某个字段取值的最大值
MIN()函数:求出表中某个字段取值的最小值
连接查询
内连接查询
最普遍的连接类型,而且是最匀称的,因为它要求构成连接的每一部分的每个表的匹配,不匹配的行将被排除
>select name,books from tb_login,tb_book where tb_login.user=tb_book.user;
外连接查询
外连接查询可以查询到符合条件的数据同时获得两个表的所有数据或者是其中一个表中的数据
外连接查询有左连接,右连接和全连接三种模式。
>SELECT 字段名称 FROM 表名1 LEFT|RIGHT JOIN 表名2 ON 表名1.字段名1=表名2.字段名2;
子查询
带关键词IN的子查询
>select *from tb_login where user in(select user from tb_book);
带比较运算符的子查询
>select id,books,row from tb_book where row>=(select row from tb_row where id=1);
带关键字EXISTS的子查询
>select *from tb_row where exists(select *from tb_book where id=27);
合并查询结果
UNION 和UNION ALL关键字:他会将两个表中的查询结果合并到一个表中,前者会进行集合操作,去除多余重复的数据,后者会展示左右的数据,包括重复的数据
>select user from tb_book
>union
>select user from tb_login;
>#会去除多余重复的数据
>select user from tb_book
>union all
>select user from tb_login;
#保留所有数据
使用正则表达式查询
这里的正则表达式和java,php语言等编程语言中的正则表达式基本一致
>字段名 REGEXP '匹配模式'
匹配指定字符中的任意一个
>select *from info where name regexp'[ceo]';
使用“*”和“+”来匹配多个字符
>select *from info where name regexp'a*c';
>#字符c前面出现过a的记录,可以出现零次或者多次
>
>select *from info where name regexp'a+c';
>#字符c前面出现过a的记录,可以出现一次或者多次
匹配以指定的字符开头和结束的记录
>select *from info where name regexp'^L..y$';
>匹配以L开头,以y结尾的数据
MYSQL基本命令基本上已经结束了。