目录
了解基本的数据库查询语句,是学习sql的基础,我们这里利用本地搭建的phpMyAdmin来进行学习和演示。
一、基本查询语句
基本格式:select + 列名(*代表所有列)from+表名where+条件语句
查询表中的列,如要查询users表中的所有列(一定要记得加分号,分号表示命令的结束)
select * from users;
如果要筛选特定的值,可以加上where,在id列中找寻id=1的,可以用如下命令:
select * from users where id=1;
或者:
select * from users where id in ('1');
子查询,优先查询()内的语句
select * from users where id=(select id from users where username=('Dumb'));
先执行括号内的语句select id from users where username=('Dumb'),在user中找到username=“Dumb”的id,将id返还给外面的id,再利用查到的id在表user中查询,就能拿到Dumb的所有信息。
二、查询参数指令
联合查询:
同时查询users和emails表中的信息:
select id from users union select email_id from emails;
注意:union查询需要满足的条件是两个表的列数相等,如果不相等,则会报错
如,尝试查询两表中id值为6,则会出现报错:
select * from users where id=6 union select * from emails where email_id=6;
这是因为users表中的列数为3,emails表中的列数为2
改为:
select * from users where id=6 union select *,10 from emails where id=6;
10为填充列,
三、group by查询
group by用于对数据分组
不使用group by得到的结果
SELECT username FROM users;
使用group by会对数据进行分组:
SELECT username FROM `users`group by username;
gruop by常用于对列数判断:
select * from users where id=1 group by 3;
group by 1到3都能返回id等于1的信息,但是,超过3就不行了,可以理解为,users在这个表只有3列,没有更多列,超过了三列就会报错,就此可以判断到底有多少列
四、order by(默认升序)
order by是用来排序的
select * from users order by 1;
表示按照第一列的值,来对users列表进行排序,这里的1表示的是第一列,也可以替换为2和3.
order by 的排序默认为是升序,如果要降序排列,加上desc:
select * from users order by 1desc;
五、limit
限制输出内容数量
SELECT * FROM `users` LIMIT 1,3;
限制从第1行开始显示3行
但是发现是从id=2开始显示的三行,原来是因为order by是从第0行开始计数的,于是改成0试试:
SELECT * FROM `users` LIMIT 0,3;
六、and和or
and表示与关系
select * from users where id=1 and username='Dumb';
找到id=1且username=‘Dump',如果找不到返回值为空
or表示或关系
select * from users where id=2 or username='Dumb';
找到id=1 或 username='Dumb',返回值有两行:
七、常用函数
1、group_concat()
用于将所有的数据变成一行来输出,在实际运用中,有些注入环境回显只有一行,如果多行输出就会导致很多数据输出不了
select group_contact(id,username,password) from users;
括号内的表示要输出的内容:
2、select database()
查询当前数据库名
3、select version()
查询数据库的版本
喜欢的话点个赞吧,我们一起成长!
(好久没写博客了,之前感觉懒得写,但是现在来看,不写学的东西都快忘了,写博客印象更深刻一些,我要努力做一个日更博主!!!!!)