SQL学习二 FROM WHERE
mySql 中存储数据按照表格存储,存在行和列,行用于存储某个实体的数据,列用于存储所有实体某个属性的值,简单的表如下
Student 表
ID | class | Teacher |
---|---|---|
1 | 1 | wang |
2 | 1 | wang |
3 | 2 | zhang |
表可以看作二维数据,行和列可以看成是两个不同的维度
FROM
以下表Student为例:
ID | Name | classId |
---|---|---|
1 | xiaoming | 1 |
2 | xiaowang | 1 |
3 | xiaotian | 2 |
4 | xiaoming | 2 |
5 | xiaowang | 3 |
6 | xiaotian | 4 |
SELECT Name / classId / * FROM Student;
如果SELECT后面是具体的属性名,那么将会把该属性对应的所以行数据输出出来,例如如果是查询的classId,那么查询结果如下:
-- 建表语句:
CREATE TABLE IF NOT EXISTS Student (
ID INT PRIMARY KEY,
NAME VARCHAR(20) NOT NULL,
CLASSID INT NOT NULL
);
-- 插入语句
INSERT INTO Student
VALUES (1, 'xiaoming', 1),
(2, 'xiaowang', 1),
(3, 'xiaotian', 2),
(4, 'xiaoming', 2),
(5, 'xiaowang', 3),
(6, 'xiaotian', 4);
-- 查询语句
SELECT CLASSID FROM Student;
查询结果如下:
如果SELECT后面查询的是 * ,会将表中所有的数据都查询出来
WHERE
WHERE处在执行顺序的第二位,是在FROM执行之后执行的语句,用于过滤,主要过滤从FROM中获取到的数据,例如,WHERE ID=1 或者WHERE CLASSID = 1 AND NAME = ‘xiaoming’;
SELECT * FROM Student WHERE CLASSID = 1 AND NAME='xiaoming';
结果如下:
再用更加复杂一些的查询条件
SELECT *
FROM Student
WHERE
CLASSID BETWEEN 1 AND 3
AND
NAME IN ('xiaoming', 'xiaowang')
;
除了AND表示且之外,还有OR表示或者,二者或者多者满足其一即可
SELECT *
FROM Student
WHERE
CLASSID BETWEEN 1 AND 3
OR
NAME IN ('xiaoming', 'xiaowang')
;
SELECT *
FROM Student
WHERE CLASSID = 1
OR NAME='xiaoming'
OR ID=3;