关于分号
一条SQL语句结束,结尾必须加分号 ( ; )
如果在结尾没有加分号的话,一般认为该语句没有结束。
正因如此,SQL语句可以换行增加可读性,不会产生语法错误。
本节的数据表
这里列出了本节的教程中出现的所有数据表。
表名:学生表
学号 | 名称 | 年龄 | 班级 |
---|---|---|---|
1 | 小明 | 20 | 一班 |
2 | 小张 | 21 | 一班 |
3 | 小红 | 21 | 二班 |
完整语法
1 |
|
基本查询
要查询数据库表的数据,我们使用如下的SQL语句:
1 |
|
在字段列表使用*
号匹配所有的字段。
此语句可以查询出数据表中的所有记录,例如以下数据表。
当我们执行以下语句时,表中的所有数据都会被查询出来:
1 |
|
查询结果:
学号 | 名称 | 年龄 | 班级 |
---|---|---|---|
1 | 小明 | 20 | 一班 |
2 | 小张 | 21 | 一班 |
3 | 小红 | 21 | 二班 |
投影查询
在某些时候,我们并不想要列出所有的字段列,我们可能只想要知道学生的名字和班级,我们就可以使用投影查询:
基本语法
1 |
|
例如,这节开头提到的例子,就可以使用以下SQL来实现。
1 |
|
查询结果如下:
名称 | 班级 |
---|---|
小明 | 一班 |
小张 | 一班 |
小红 | 二班 |
条件查询
如果想对查询添加一些条件,比如想要查询年龄为21岁或者名字叫小红的记录,就得使用条件查询。
语法:
1 |
|
例如查询班级是一班的学生姓名,可以构造以下的SQL语句:
1 |
|
注意:值如果是字符串类型,需要加上双引号( “ )。
执行结果:
名称 | 班级 |
---|---|
小明 | 一班 |
小张 | 一班 |
高级条件查询
这一节将介绍高级的条件查询来满足更多的需求。
AND操作符
可以用<条件1> AND <条件2>
表达满足条件1并且满足条件2。
例如筛选出年龄20岁的的一班学生,可以使用以下语句:
1 |
|
学号 | 名称 | 年龄 | 班级 |
---|---|---|---|
1 | 小明 | 20 | 一班 |
OR操作符
使用<条件1> OR <条件2>
来表达满足条件1或者条件2,两个条件仅需要满足一个,例如筛选出年龄为20岁或者是一班的学生,可以使用以下语句。
1 |
|
学号 | 名称 | 年龄 | 班级 |
---|---|---|---|
1 | 小明 | 20 | 一班 |
2 | 小张 | 21 | 一班 |
NOT操作符
使用NOT 表达式
来表示不符合该条件的记录。
例如筛选出不是20岁的学生:
1 |
|
学号 | 名称 | 年龄 | 班级 |
---|---|---|---|
2 | 小张 | 21 | 一班 |
3 | 小红 | 21 | 二班 |
BETWEEN操作符
使用BETWEEN 范围1 AND 范围2
来表示选取介于两个值之间的数据范围,这些值可以是数值、文本或者日期。
如果范围是文本型,会按照字母顺序判断范围。
例如查询出学号在1-3号的学生,可以使用以下SQL语句:
1 |
|
结果:
学号 | 名称 | 年龄 | 班级 |
---|---|---|---|
1 | 小明 | 20 | 一班 |
2 | 小张 | 21 | 一班 |
3 | 小红 | 21 | 二班 |
IN操作符
使用IN(条件列表)
来表示选定指条件范围,条件列表中的每一个项目都会进行匹配
例如选出姓名为小红和小明的记录,可以使用以下SQL语句:
1 |
|
结果:
学号 | 名称 | 年龄 | 班级 |
---|---|---|---|
1 | 小明 | 20 | 一班 |
3 | 小红 | 21 | 二班 |
你知道吗
其实in的功能和or一样,但是代码更短,上述的代码也可以等价成:
1 |
|