搜索
您的当前位置:首页正文

SQL语言学习(一)

来源:二三娱乐
  • SQL,指结构化查询语言,全称是 Structured Query Language。

RDBMS

RDBMS 指关系型数据库管理系统,全称 Relational Database Management System。

RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 Microsoft Access。

RDBMS 中的数据存储在被称为表的数据库对象中。

表是相关的数据项的集合,它由列和行组成。

您需要在数据库上执行的大部分工作都由 SQL 语句完成。

下面的 SQL 语句从 "Customers" 表中选取所有记录:

SELECT * FROM Customers;

  • SQL 对大小写不敏感:SELECT 与 select 是相同的。

一些最重要的 SQL 命令

  • SELECT - 从数据库中提取数据
  • UPDATE - 更新数据库中的数据
  • DELETE - 从数据库中删除数据
  • INSERT INTO - 向数据库中插入新数据
  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引
数据类型 描述
CHARACTER(n) 字符/字符串。固定长度 n。
VARCHAR(n) 或CHARACTER VARYING(n) 字符/字符串。可变长度。最大长度 n。
BINARY(n) 二进制串。固定长度 n。
BOOLEAN 存储 TRUE 或 FALSE 值
VARBINARY(n) 或BINARY VARYING(n) 二进制串。可变长度。最大长度 n。
INTEGER(p) 整数值(没有小数点)。精度 p。
SMALLINT 整数值(没有小数点)。精度 5。
INTEGER 整数值(没有小数点)。精度 10。
BIGINT 整数值(没有小数点)。精度 19。
DECIMAL(p,s) 精确数值,精度 p,小数点后位数 s。例如:decimal(5,2) 是一个小数点前有 3 位数小数点后有 2 位数的数字。
NUMERIC(p,s) 精确数值,精度 p,小数点后位数 s。(与 DECIMAL 相同)
FLOAT(p) 近似数值,尾数精度 p。一个采用以 10 为基数的指数计数法的浮点数。该类型的 size 参数由一个指定最小精度的单一数字组成。
REAL 近似数值,尾数精度 7。
FLOAT 近似数值,尾数精度 16。
DOUBLE PRECISION 近似数值,尾数精度 16。
DATE 存储年、月、日的值。
TIME 存储小时、分、秒的值。
TIMESTAMP 存储年、月、日、小时、分、秒的值。
INTERVAL 由一些整数字段组成,代表一段时间,取决于区间的类型。
ARRAY 元素的固定长度的有序集合
MULTISET 元素的可变长度的无序集合
XML 存储 XML 数据

SQL 数据类型快速参考手册

然而,不同的数据库对数据类型定义提供不同的选择。

下面的表格显示了各种不同的数据库平台上一些数据类型的通用名称:

数据类型 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
Top