sql最常用命令语句总结
我们以student表为例:
基本查询
- 表全部信息:
select * from 表名称; //*可以理解代表全部
eg:
我们查询整个student表:
select * from student;
结果如下:
- 检索查询
SELECT 列名称 FROM 表名称
eg:
我们检索全体学生的学号、姓名:
Select Sno,Sname from student;
结果如下:
查询时改变列标题的显示(取别名)
Select column1 as column1`,column2 as column2` from student;
eg:
我们检索全体学生的学号、姓名、性别信息,并分别加上“学号”、“姓名”、“性别”的别名信息:
Select Sno as 学号,Sname as 姓名,Ssex as 性别 from student;
结果如下:
条件查询
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值;
eg1:
我们查询成绩大于90分的学生的学号及课程号、成绩:
Select * from Student where Grade>90;
结果如下:
运算操作符:
eg2:
我们查询成绩介于85~90分的学生的学号及课程号、成绩:
Select * from Student where Grade between 85 and 90;
我们查询成绩不介于90~95分的学生的学号及课程号、成绩:
Select * from Student where Grade not between 90 and 95;
结果如下:
eg3:
我们查询选修了课程号为“2”,且成绩大于88的学生的学号:
Select * from Student where Cno = '2' and Grade > 88;
结果如下:
Select * from Student where Cno = '2' or Cno = '3';
结果如下:
基于IN子句的数据查询
SELECT 列名
FROM 表名
WHERE 列名 IN (value1,value2,...)
eg:
我们从student表中查询出刘晨,李勇的所有信息:
Select * from Student where Sname in ('李勇','刘晨');
结果如下:
基于Like子句的查询
- 使用%通配符
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
eg:
我们从学生表中分别检索出姓张的所有同学的资料:
Select * from Student where Sname like '刘%'; //%代表缺少的东西,可定义通配符
结果如下:
- 使用 _ 通配符
我们检索名字的第二个字是“勇”的所有同学的资料:
Select * from Student where Sname like '_勇%';
结果如下:
eg:
我们检索名字的包含字是“勇”的所有同学的资料:
Select * from Student where Sname like '%勇%';
结果如下:
特殊情况
eg:
如果用户查询的匹配字符串本身就含有%或_,比如乱写名字的,像:谢 _颖,李%峰,我们要通过姓名查询上面同学的学号:
用 escape
Select Sno from Student where Sname like '谢/_颖' escape'/';
Select Sno from Student where Sname like '李/%峰' escape'/';
- 使用 [charlist] 通配符
eg:
我们希望选出名字以“A",“L”开头的外国人人的所以资料:
Select * from Student where Sname like '[AL]%';
我们不希望选出名字以“A",“L”开头的外国人人的所以资料:
Select * from Student where Sname like '[!AL]%';
使用top关键字查询
SELECT TOP number|percent column_name(s)
FROM table_name;
eg:
我们从Student表中检索出前3个学生信息:
Select top 3 * from Student;
我们从Student表中检索出前50%学生信息:
Select top 50 percent * from Student;
消除重复行
用 distinct
eg:
Select distinct Sno from Student;
结果如下: