找到一个可以快速学习SQL语法的网站W3school SQL教程,从这上面学习一些基本语法,再来看考试书。
WHERE子句
WHERE子句用来指定选择的条件。
...WHERE 表达式
| 表达式内可以使用的操作符 | 意义 |
|---|---|
| = | 等于 |
| <> | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| BETWEEN | 在某个范围内 |
| LIKE | 搜索某种模式 |
select SName,SAddress,SGrade from students where SGrade>2
-24100718/08、SQLServer基础-T-SQL部分基本语法-1710302045317.png)
**补充:**实际上,前面学的UPDATE和DELETE本身是不带WHERE的,应当是:
UPDATE 表名称 SET 列名称=新值,列名称=新值,...
DELETE FROM 表名称
AND & OR运算符
表示与和或,用来连接表达式:
表达式 AND/OR 表达式
如:
select SName,SAddress,SGrade from students where (SGrade>2 and SAddress='China')
-24100718/08、SQLServer基础-T-SQL部分基本语法-1710302045712.png)
SQL通配符
| 通配符 | 含义 |
|---|---|
| % | 匹配任意多个字符 |
| _ | 匹配一个字符 |
| [字符列] | 匹配字符列中的某个字符 |
| [^字符列]或[!字符列] | 匹配字符列外的某个字符 |
select SName,SAddress,SGrade from students where SAddress like '%[cC]%i%'
-24100718/08、SQLServer基础-T-SQL部分基本语法-1710302046079.png)
IN操作符
...IN (值列表)
指匹配处于这些值之中的任意一个。
如:
select SName,SAddress,SGrade from students where SAddress in ('China','bCity')
-24100718/08、SQLServer基础-T-SQL部分基本语法-1710302046457.png)
BETWEEN操作符
匹配位于两值之间的值。
...BETWEEN 值1 AND 值2
如:
select SName,SAddress,SGrade from students where SGrade between 3 and 6
-24100718/08、SQLServer基础-T-SQL部分基本语法-1710302046811.png)
别名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
-24100718/08、SQLServer基础-T-SQL部分基本语法-1710302047175.png)
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
-24100718/08、SQLServer基础-T-SQL部分基本语法-1710302047504.png)
用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
-24100718/08、SQLServer基础-T-SQL部分基本语法-1710302047942.png)
-24100718/08、SQLServer基础-T-SQL部分基本语法-1710302048358.png)
测试一下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
-24100718/08、SQLServer基础-T-SQL部分基本语法-1710302048684.png)
UNION合并行集合
需要行的每列格式一致才能作合并,对于不一致的表,只要SELECT出的列格式一致就可以作合并:
select SName from students
union
select SEmail from newTab
-24100718/08、SQLServer基础-T-SQL部分基本语法-1710302049127.png)
而UNION ALL则会选取所有的值,即便有重复:
select SName from students
union all
select SEmail from newTab
-24100718/08、SQLServer基础-T-SQL部分基本语法-1710302049454.png)