运行SQL
下载廖雪峰老师的脚本,然后通过命令导入到自己的MySQL
。
$ mysql -u root -p <init-test-data.sql
在输入端输入
show databases;
use test;
现在就可以开始进行练习啦
查询
查询基本用的是SELECT
语句。注意在SQL
语言中是不区分大小写的。
基本查询
格式:select 列1,列2 from 选择的表
显示所有的列:select * from students;
显示name
姓名,gender
性别这两列的信息:select name,gender from students;
命令行敲习惯了老是忘记加上分号
条件查询
加上where
语句
找出表中score
大于80分的记录,显示名字跟分数:select name,score from students where score>80;
找出分数大于80的男生:select name,gender,score from students where score>80 AND gender='M';
找出分数小于70或者大于90的男生:
select name,score from students where (score<70 or score>90) AND gender='M';
(怎么感觉这个查询出来的结果有种莫名其妙的喜感):sweat_smile:
注意:判断不相等是 where score <>80
投影查询
-
返回指定的列(其实在前面就已经写过了)
-
为列起个别名,便于显示,比如将上面的那位同学的
name
字段改为person
字段显示select name person,score from students where (score<70 or score>90) AND gender='M';
排序查询
排序查询主要用到的是order by
语句,默认升序。排序采用字典排序的方法,有点像Linux
的sort
命令。
-
按照升序将成绩进行排名,显示名字跟分数:
select name,score from students order by score;
-
按照降序来显示,在末尾加上
desc
select name,score from students order by score desc;
-
如果结合
where
使用的话,order
放在where
后面。(可以理解为where
放前面可以先过滤掉一些不要的记录,效率更快,当然这只是个人理解)
分页查询
如果记录太多想分页显示的话,利用这个limit
与select
结合,有点像linux
的more
命令。
SELECT * FROM 表名 LIMIT 3 OFFSET 0;
这里的LIMIT 3
表示屏幕上每次最多显示3条记录
OFFSET x
表示我要从距离第1条记录有x
条记录的那一行开始查看
所以上面这条命令显示的是第1条跟第3条的记录
如果显示要显示第2条到第4条的记录则应该是select * from students limit 3 offset 1;