常见的数据库有MySQL、SQL Server、Access、Oracle、Sybase、DB2等 ,SQL就是用来操作这些数据库的语言,这里我们用很短的时间对SQL 的最基础和常用部分做一下总结,帮助你快速入门,学会使用SQL.至于使用哪种数据库软件基于实际情况,如何进入SQL 视图可以参考百度结果。
在学习SQL过程中我的感觉是这是一门 “ 逻辑清晰 ” 的语言。其语言在使用中总体呈以下形式
我要干什么事 eg: SELECT *
在哪里干这件事 FROM Customers
对事情的要求是什么 WHERE customers_city = 'china'
希望结果是什么 ORDER BY customers_id
这里的例子 :
第一行表示打算检索出所有(*代表所有)的数据
第二行说明了打算从 Customers 表中检索这些数据
第三行表示 我希望检索出来的用户都是中国的
第四行代表希望满足要求的数据按照 id 排列
这是最简单的例子 实际中的要求会更复杂一些,接下来我们具体学习这门语言。
这里虽然不区分大小写,但是在使用过程中为了代码的易读性,对于关键字我们一般大写,对于列名和表名一般使用小写。
用法
SELECT column1, column2, column3.....
FROM Table_name
这里column1,column2等代表需要检索的列,多行时候用逗号隔开,如果需要检索出所有的列,可以使用 星号(*)
SELECT ContactName, Address
FROM Customers; 将返回名字和地址两列所有数据
这里如果我们想得到每一列中的unique 值,比如其 中有两个墨西哥的但是我们只是想知道有多少种不同的国家,这里可以在列明前加上关键字 DISTINCT
SELECT DISTINCT Country
FROM Customers; 这样就只会返回4个不同的国家
如果我们需要某一列数据中满足特定条件的行 ,那么就需要用到WHERE 语句对结果进行过滤。
SELECT column1, column2....
FROM table_name
WHERE condition;
那上面的数据为例 ,如果要检索出所有来自墨西哥的用户
SELECT * FROM Customers
WHERE Country='Mexico';
要是需要满足的条件不止一个这么简单 ,那么还可以在各个条件之间使用AND 、OR 以及NOT 这样的逻辑语句 ,在使用多个OR 时候可以用IN 代替,选择范围时候可以使用 BETWEEN AND 。
注意注意注意: (a OR b) 表示满足a,或者b 或者同时满足a,b
如果 我们不希望出现同时满足ab 的情况 可以使用 XOR !!
为了比较友好的顺序展现结果,需要在最后用ORDER BY 进行排序,这里注意因为SQL本身不会对结果进行排序,所以应该**在最后总是编写**ORDER BY 语句,以保证每次打开数据排序相同。
SELECT column1, column2, ....
FROM table_name
ORDER BY column1, column2,.....;
ORDER BY 默认是按照升序(ASC)排列的,如果需要按降序排列,在对应的列名后面加上关键字 (DESC)
示例:
SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;
INSERT INTO 用于插入数据
INSERT INTO table_name (column1, column2, column3,.....)
VALUES (value1, value2, value3,....);
注意column 要和 value 一一对应 ,如果没有传入column 值 ,默认对所有列进行插入,这里就要确保value的值和表中的顺序是一样的 ,如果只插入了某些列的值,那么其他列会自动传入默认值(NULL)代表值缺失。
缺失值(NULL)表示没有数据,并不是指0或者空白(space)在之前的查询过程中默认是跳过NULL值的,要查询NULL值,需要使用IS NULL 或者 IS NOT NULL.
SELECT column_names
FROM table_name
WHERE column_name IS NULL;
更新数据,也就是修改已经存在的数据,用UPDATE 语句
UPDATE table_name
SET column1 = value1, column2 = value2,....
WHERE condition;
这里需要注意,每一次都要传入WHERE 选定特定的行尽心更新,否则会修改所有行的数据。
删除原来数据库中已经有的行用到DELETE 语句
DELETE FROM table_name
WHERE condition;
WHERE 限定了要删除的行,如果省略WHERE 在DELETE 后面出入* 代表删除所有行,但是索引还在。如果我们只需要删除表中的数据,而不删除表本身,使用TRUNCATE TABLE语句:
TRUNCATE TABLE table_name
这篇文章将SQL 中使用率最高的几组语句:增(INSERT INTO)、删(DELETE FROM)、改(UPDATE)、查(SELETE)做了简单的介绍,算是对SQL有了基础的认识,对于更加深入的用法会在后续文章中补充。