1.基本查询
查询数据库表的数据,我们使用如下的SQL语句:
SELECT * FROM <表名>
使用 SELECT * FROM students 时,SELECT是关键字,表示将要执行一个查询,*表示“所有列”,FROM表示将要从哪个表查询,本例中是students表。
该SQL将查询出students表的所有数据。注意:查询结果也是一个二维表,它包含列名和每一行的数据。
不带FROM子句的SELECT语句有一个有用的用途,就是用来判断当前到数据库的连接是否有效。许多检测工具会执行一条SELECT 1;来测试数据库连接。
2.条件查询
(1)SELECT语句可以通过WHERE条件来设定查询条件,查询结果是满足查询条件的记录。例如,要指定条件“分数在80分或以上的学生”,写成WHERE条件就是SELECT * FROM students WHERE score >= 80:
SELECT * FROM <表名> WHERE <条件表达式>
(2)条件表达式可以用<条件1> AND <条件2>表达满足条件1并且满足条件2。例如,符合条件“分数在80分或以上”,并且还符合条件“男生”,把这两个条件写出来:
- 条件1:根据score列的数据判断:score >= 80;
- 条件2:根据gender列的数据判断:gender = ‘M’,注意gender列存储的是字符串,需要用单引号括起来。
SELECT * FROM students WHERE score >= 80 AND gender = 'M';
(3)<条件1> OR <条件2>,表示满足条件1或者满足条件2。例如,把上述AND查询的两个条件改为OR,查询结果就是“分数在80分或以上”或者“男生”,满足任意之一的条件即选出该记录:
SELECT * FROM students WHERE score >= 80 OR gender = 'M';
(4)第三种条件是NOT <条件>,表示“不符合该条件”的记录。例如,写一个“不是2班的学生”这个条件,可以先写出“是2班的学生”:class_id = 2,再加上NOT:NOT class_id = 2:
SELECT * FROM students WHERE NOT class_id = 2;
上述NOT条件NOT class_id = 2其实等价于class_id <> 2,因此,NOT查询不是很常用。
(5)要组合三个或者更多的条件,就需要用小括号()表示如何进行条件运算。例如,编写一个复杂的条件:分数在80以下或者90以上,并且是男生:
SELECT * FROM students WHERE (score < 80 OR score > 90) AND gender = 'M';
如果不加括号,条件运算按照NOT、AND、OR的优先级进行,即NOT优先级最高,其次是AND,最后是OR。加上括号可以改变优先级。
(6)常用的条件表达式