SQL学习
前言
SQL
, 全称为Structured Query Language(结构化查询语言)
数据库,一般就是指的 Relational database(关系型数据库),是用来存储大量数据的一种软件
SQL是用来操作数据库里的数据,具体来说SQL可以做数据查询,数据更新,写入数据等等。
关系型数据库
数据库由若干张表
(Table)组成,这里说的数据Table很像Excel里的表; 正如Excel里的表格,Table也是由 行(rows)
和列(columns)
组成
一个Table存储一个类别的数据,每一行是一条数据,每一列是这种数据的一个属性; Table就像一个二维的表格,列(columns)
是有限固定的,行(rows)
是无限不固定的,如:
试水
1、movies为表名,选取某列全部内容
SELECT title FROM movies
2、按Id(某列的值选取行)
SELECT title, director FROM movies WHERE Id < 5
3、计算行数
SELECT count(*) FROM movies
语法指令
1、查询语句-SELECT
Select 查询所有列,这条语句经常用来在不清楚table(表)中有什么数据时,能取出所有的数据瞜一眼。 SELECT * FROM mytable(表名);
Select 查询某些属性列(specific columns)的语法 SELECT column(列名), another_column, … FROM mytable(表名)
2、条件查询-SELECT WHERE
2.1 适用于数字类型的属性
为了更精确的查询出特定数据:SELECT
查询的 WHERE
子句. 一个查询的 WHERE
子句用来描述哪些行应该进入结果,具体就是通过 condition条件 限定这些行的属性满足某些具体条件
条件查询语法 SELECT column, another_column, … FROM mytable WHERE condition AND/OR another_condition AND/OR …; 注:这里的 condition 都是描述属性列的,具体会在下面的表格体现。
Operator(关键字) | Condition(意思) | SQL Example(例子) |
=, !=, < <=, >, >= | Standard numerical operators 基础的 大于,等于等比较 | col_name != 4 |
BETWEEN … AND … | Number is within range of two values (inclusive) 在两个数之间 | col_name BETWEEN 1.5 AND 10.5 |
NOT BETWEEN … AND … | Number is not within range of two values (inclusive) 不在两个数之间 | col_name NOT BETWEEN 1 AND 10 |
IN (…) | Number exists in a list 在一个列表 | col_name IN (2, 4, 6) |
NOT IN (…) | Number does not exist in a list 不在一个列表 | col_name NOT IN (1, 3, 5) |
练习:
2.1 适用于字符串类型的属性
会用到字符串相关的一些操作符号,其中 LIKE(模糊查询) 和 %(通配符) 是新增的两个
Operator(操作符) | Condition(解释) | Example(例子) |
= | Case sensitive exact string comparison (notice the single equals)完全等于 | col_name = "abc" |
!= or <> | Case sensitive exact string inequality comparison 不等于 | col_name != "abcd" |
LIKE | Case insensitive exact string comparison 没有用通配符等价于 = | col_name LIKE "ABC" |
NOT LIKE | Case insensitive exact string inequality comparison 没有用通配符等价于 != | col_name NOT LIKE "ABCD" |
% | Used anywhere in a string to match a sequence of zero or more characters (only with LIKE or NOT LIKE) 通配符,代表匹配0个以上的字符 | col_name LIKE "%AT%" (matches "AT", "ATTIC", "CAT" or even "BATS") "%AT%" 代表AT 前后可以有任意字符 |
_ | Used anywhere in a string to match a single character (only with LIKE or NOT LIKE) 和% 相似,代表1个字符 | col_name LIKE "AN_" (matches "AND", but not "AN") |
IN (…) | String exists in a list 在列表 | col_name IN ("A", "B", "C") |
NOT IN (…) | String does not exist in a list 不在列表 | col_name NOT IN ("D", "E", "F") |