SQL语言学习(一)

本系列内容为http://www.w3cschool.cn/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 数据类型快速参考手册

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

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

数据类型AccessSQLServerOracleMySQLPostgreSQL
booleanYes/NoBitByteN/ABoolean
integerNumber (integer)IntNumberIntIntegerIntInteger
floatNumber (single)FloatRealNumberFloatNumeric
currencyCurrencyMoneyN/AN/AMoney
string (fixed)N/ACharCharCharChar
string (variable)Text (<256)Memo (65k+)VarcharVarcharVarchar2VarcharVarchar
binary objectOLE Object MemoBinary (fixed up to 8K)Varbinary (<8K)Image (<2GB)LongRawBlobTextBinaryVarbinary

来自 W3CSchool 的 SQL 快速参考

SQL 语句语法
AND / ORSELECT column_name(s)FROM table_nameWHERE conditionAND|OR condition
ALTER TABLEALTER 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
BETWEENSELECT column_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value2
CREATE DATABASECREATE DATABASE database_name
CREATE TABLECREATE TABLE table_name(column_name1 data_type,column_name2 data_type,column_name2 data_type,…)
CREATE INDEXCREATE INDEX index_nameON table_name (column_name)orCREATE UNIQUE INDEX index_nameON table_name (column_name)
CREATE VIEWCREATE VIEW view_name ASSELECT column_name(s)FROM table_nameWHERE condition
DELETEDELETE 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 DATABASEDROP DATABASE database_name
DROP INDEXDROP 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 TABLEDROP TABLE table_name
GROUP BYSELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_name
HAVINGSELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_nameHAVING aggregate_function(column_name) operator value
INSELECT column_name(s)FROM table_nameWHERE column_nameIN (value1,value2,..)
INSERT INTOINSERT INTO table_nameVALUES (value1, value2, value3,….)orINSERT INTO table_name(column1, column2, column3,…)VALUES (value1, value2, value3,….)
INNER JOINSELECT column_name(s)FROM table_name1INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name
LEFT JOINSELECT column_name(s)FROM table_name1LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
RIGHT JOINSELECT column_name(s)FROM table_name1RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
FULL JOINSELECT column_name(s)FROM table_name1FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name
LIKESELECT column_name(s)FROM table_nameWHERE column_nameLIKE pattern
ORDER BYSELECT column_name(s)FROM table_nameORDER BY column_name [ASC|DESC]
SELECTSELECT column_name(s)FROM table_name
SELECT *SELECT *FROM table_name
SELECT DISTINCTSELECT DISTINCT column_name(s)FROM table_name
SELECT INTOSELECT 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 TOPSELECT TOP number|percent column_name(s)FROM table_name
TRUNCATE TABLETRUNCATE TABLE table_name
UNIONSELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2
UNION ALLSELECT column_name(s) FROM table_name1UNION ALLSELECT column_name(s) FROM table_name2
UPDATEUPDATE table_nameSET column1=value, column2=value,…WHERE some_column=some_value
WHERESELECT column_name(s)FROM table_nameWHERE column_name operator value
    原文作者:NelsonZheng
    原文地址: https://www.jianshu.com/p/340cdfafae1d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞