本系列內(nèi)容為http://www.w3cschool.cn/sql 教程的自學(xué)筆記
- SQL,指結(jié)構(gòu)化查詢語言赦肋,全稱是 Structured Query Language。
RDBMS
RDBMS 指關(guān)系型數(shù)據(jù)庫管理系統(tǒng)励稳,全稱 Relational Database Management System佃乘。
RDBMS 是 SQL 的基礎(chǔ),同樣也是所有現(xiàn)代數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)驹尼,比如 MS SQL Server趣避、IBM DB2、Oracle扶欣、MySQL 以及 Microsoft Access鹅巍。
RDBMS 中的數(shù)據(jù)存儲在被稱為表的數(shù)據(jù)庫對象中千扶。
表是相關(guān)的數(shù)據(jù)項(xiàng)的集合,它由列和行組成骆捧。
您需要在數(shù)據(jù)庫上執(zhí)行的大部分工作都由 SQL 語句完成澎羞。
下面的 SQL 語句從 "Customers" 表中選取所有記錄:
SELECT * FROM Customers;
- SQL 對大小寫不敏感:SELECT 與 select 是相同的。
一些最重要的 SQL 命令
- SELECT - 從數(shù)據(jù)庫中提取數(shù)據(jù)
- UPDATE - 更新數(shù)據(jù)庫中的數(shù)據(jù)
- DELETE - 從數(shù)據(jù)庫中刪除數(shù)據(jù)
- INSERT INTO - 向數(shù)據(jù)庫中插入新數(shù)據(jù)
- CREATE DATABASE - 創(chuàng)建新數(shù)據(jù)庫
- ALTER DATABASE - 修改數(shù)據(jù)庫
- CREATE TABLE - 創(chuàng)建新表
- ALTER TABLE - 變更(改變)數(shù)據(jù)庫表
- DROP TABLE - 刪除表
- CREATE INDEX - 創(chuàng)建索引(搜索鍵)
- DROP INDEX - 刪除索引
數(shù)據(jù)類型 | 描述 |
---|---|
CHARACTER(n) | 字符/字符串敛苇。固定長度 n妆绞。 |
VARCHAR(n) 或CHARACTER VARYING(n) | 字符/字符串》闩剩可變長度括饶。最大長度 n。 |
BINARY(n) | 二進(jìn)制串来涨。固定長度 n图焰。 |
BOOLEAN | 存儲 TRUE 或 FALSE 值 |
VARBINARY(n) 或BINARY VARYING(n) | 二進(jìn)制串”钠可變長度技羔。最大長度 n。 |
INTEGER(p) | 整數(shù)值(沒有小數(shù)點(diǎn))卧抗。精度 p藤滥。 |
SMALLINT | 整數(shù)值(沒有小數(shù)點(diǎn))。精度 5社裆。 |
INTEGER | 整數(shù)值(沒有小數(shù)點(diǎn))拙绊。精度 10。 |
BIGINT | 整數(shù)值(沒有小數(shù)點(diǎn))泳秀。精度 19标沪。 |
DECIMAL(p,s) | 精確數(shù)值,精度 p晶默,小數(shù)點(diǎn)后位數(shù) s谨娜。例如:decimal(5,2) 是一個小數(shù)點(diǎn)前有 3 位數(shù)小數(shù)點(diǎn)后有 2 位數(shù)的數(shù)字。 |
NUMERIC(p,s) | 精確數(shù)值磺陡,精度 p,小數(shù)點(diǎn)后位數(shù) s漠畜。(與 DECIMAL 相同) |
FLOAT(p) | 近似數(shù)值币他,尾數(shù)精度 p。一個采用以 10 為基數(shù)的指數(shù)計(jì)數(shù)法的浮點(diǎn)數(shù)憔狞。該類型的 size 參數(shù)由一個指定最小精度的單一數(shù)字組成蝴悉。 |
REAL | 近似數(shù)值,尾數(shù)精度 7瘾敢。 |
FLOAT | 近似數(shù)值拍冠,尾數(shù)精度 16尿这。 |
DOUBLE PRECISION | 近似數(shù)值,尾數(shù)精度 16庆杜。 |
DATE | 存儲年射众、月、日的值晃财。 |
TIME | 存儲小時叨橱、分、秒的值断盛。 |
TIMESTAMP | 存儲年罗洗、月、日钢猛、小時伙菜、分、秒的值命迈。 |
INTERVAL | 由一些整數(shù)字段組成仇让,代表一段時間,取決于區(qū)間的類型躺翻。 |
ARRAY | 元素的固定長度的有序集合 |
MULTISET | 元素的可變長度的無序集合 |
XML | 存儲 XML 數(shù)據(jù) |
SQL 數(shù)據(jù)類型快速參考手冊
然而丧叽,不同的數(shù)據(jù)庫對數(shù)據(jù)類型定義提供不同的選擇。
下面的表格顯示了各種不同的數(shù)據(jù)庫平臺上一些數(shù)據(jù)類型的通用名稱:
數(shù)據(jù)類型 | Access | SQLServer | Oracle | MySQL | PostgreSQL |
---|---|---|---|---|---|
boolean | Yes/No | Bit | Byte | N/A | Boolean |
integer | Number (integer) | Int | Number | IntInteger | IntInteger |
float | Number (single) | FloatReal | Number | Float | Numeric |
currency | Currency | Money | N/A | N/A | Money |
string (fixed) | N/A | Char | Char | Char | Char |
string (variable) | Text (<256)Memo (65k+) | Varchar | VarcharVarchar2 | Varchar | Varchar |
binary object | OLE Object Memo | Binary (fixed up to 8K)Varbinary (<8K)Image (<2GB) | LongRaw | BlobText | BinaryVarbinary |
來自 W3CSchool 的 SQL 快速參考
SQL 語句 | 語法 |
---|---|
AND / OR | SELECT column_name(s)FROM table_nameWHERE conditionAND|OR condition |
ALTER TABLE | ALTER TABLE table_name ADD column_name datatypeorALTER TABLE table_name DROP COLUMN column_name |
AS (alias) | SELECT column_name AS column_aliasFROM table_nameorSELECT column_nameFROM table_name AS table_alias |
BETWEEN | SELECT column_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value2 |
CREATE DATABASE | CREATE DATABASE database_name |
CREATE TABLE | CREATE TABLE table_name(column_name1 data_type,column_name2 data_type,column_name2 data_type,...) |
CREATE INDEX | CREATE INDEX index_nameON table_name (column_name)orCREATE UNIQUE INDEX index_nameON table_name (column_name) |
CREATE VIEW | CREATE VIEW view_name ASSELECT column_name(s)FROM table_nameWHERE condition |
DELETE | DELETE FROM table_nameWHERE some_column=some_valueorDELETE FROM table_name (**Note: Deletes the entire table!!)DELETE * FROM table_name (Note: **Deletes the entire table!!) |
DROP DATABASE | DROP DATABASE database_name |
DROP INDEX | DROP INDEX table_name.index_name (SQL Server)DROP INDEX index_name ON table_name (MS Access)DROP INDEX index_name (DB2/Oracle)ALTER TABLE table_nameDROP INDEX index_name (MySQL) |
DROP TABLE | DROP TABLE table_name |
GROUP BY | SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_name |
HAVING | SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_nameHAVING aggregate_function(column_name) operator value |
IN | SELECT column_name(s)FROM table_nameWHERE column_nameIN (value1,value2,..) |
INSERT INTO | INSERT INTO table_nameVALUES (value1, value2, value3,....)orINSERT INTO table_name(column1, column2, column3,...)VALUES (value1, value2, value3,....) |
INNER JOIN | SELECT column_name(s)FROM table_name1INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
LEFT JOIN | SELECT column_name(s)FROM table_name1LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
RIGHT JOIN | SELECT column_name(s)FROM table_name1RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
FULL JOIN | SELECT column_name(s)FROM table_name1FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
LIKE | SELECT column_name(s)FROM table_nameWHERE column_nameLIKE pattern |
ORDER BY | SELECT column_name(s)FROM table_nameORDER BY column_name [ASC|DESC] |
SELECT | SELECT column_name(s)FROM table_name |
SELECT * | SELECT *FROM table_name |
SELECT DISTINCT | SELECT DISTINCT column_name(s)FROM table_name |
SELECT INTO | SELECT INTO new_table_name [IN externaldatabase]FROM old_table_nameor*SELECT column_name(s)INTO new_table_name [IN externaldatabase]FROM old_table_name |
SELECT TOP | SELECT TOP number|percent column_name(s)FROM table_name |
TRUNCATE TABLE | TRUNCATE TABLE table_name |
UNION | SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2 |
UNION ALL | SELECT column_name(s) FROM table_name1UNION ALLSELECT column_name(s) FROM table_name2 |
UPDATE | UPDATE table_nameSET column1=value, column2=value,...WHERE some_column=some_value |
WHERE | SELECT column_name(s)FROM table_nameWHERE column_name operator value |