找到一个可以快速学习SQL语法的网站W3school SQL教程,从这上面学习一些基本语法,再来看考试书。
WHERE子句
WHERE子句用来指定选择的条件。
...WHERE 表达式
表达式内可以使用的操作符 | 意义 |
---|---|
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
select SName,SAddress,SGrade from students where SGrade>2
**补充:**实际上,前面学的UPDATE和DELETE本身是不带WHERE的,应当是:
UPDATE 表名称 SET 列名称=新值,列名称=新值,...
DELETE FROM 表名称
AND & OR运算符
表示与和或,用来连接表达式:
表达式 AND/OR 表达式
如:
select SName,SAddress,SGrade from students where (SGrade>2 and SAddress='China')
SQL通配符
通配符 | 含义 |
---|---|
% | 匹配任意多个字符 |
_ | 匹配一个字符 |
[字符列] | 匹配字符列中的某个字符 |
[^字符列]或[!字符列] | 匹配字符列外的某个字符 |
select SName,SAddress,SGrade from students where SAddress like '%[cC]%i%'
IN操作符
...IN (值列表)
指匹配处于这些值之中的任意一个。
如:
select SName,SAddress,SGrade from students where SAddress in ('China','bCity')
BETWEEN操作符
匹配位于两值之间的值。
...BETWEEN 值1 AND 值2
如:
select SName,SAddress,SGrade from students where SGrade between 3 and 6
别名Alias
别名可以使程序看起来更简洁。可以为表或表中的列指定别名,语法都是
...表名/列名 AS 别名 ...
而不影响所在语句的任何结构。
如:
select STU.SName as SN,STU.SAddress as SA,STU.SGrade as SG from students as STU where STU.SGrade between 3 and 6
JOIN根据列间关系访问多表(内连接/左连接/右连接/全连接)
不使用JOIN时,可以用这种方式访问具有外键约束(或者仅仅是用某个列做关联)的两个表:
select S.StudentName,S.StudentNo,R.SubjectID,R.StudentResult,R.ExamDate
from Student as S,Result as R
where S.StudentNo=R.StudentNo
用INNER JOIN(即JOIN)建立内连接:
select S.StudentName,S.StudentNo,R.SubjectID,R.StudentResult,R.ExamDate
from Student as S
inner join Result as R
on S.StudentNo=R.StudentNo
测试一下LEFT JOIN:
select S.StudentName,S.StudentNo,R.SubjectID,R.StudentResult,R.ExamDate
from Student as S
left join Result as R
on S.StudentNo=R.StudentNo
UNION合并行集合
需要行的每列格式一致才能作合并,对于不一致的表,只要SELECT出的列格式一致就可以作合并:
select SName from students
union
select SEmail from newTab
而UNION ALL则会选取所有的值,即便有重复:
select SName from students
union all
select SEmail from newTab