SQL(Structure Query Language
)又称结构化设计语言。是一门数据库语言,其作用包括数据定义Statistic Define
、数据操纵Maniplation
、数据控制Control
三个主要部分。其运行基于数据库管理系统(DBMS)
对数据库的外模式进行操作控制,为外置的数据库用户或程序提供对数据库数据进行操作提供一种方式,并集成常用的操作和功能。
其语句结构包括一下方面:
此篇文章主要介绍SQL语句结构的前三种
Data Define Language
SQL的数据定义有特定的谓词CREATE
,DROP
,ALTER
CREATE
谓词CREATE
用于创建数据类型 、表、模式。数据库等同时定义完整性约束。
使用方法:
CREATR {DATABASE | SCHEMA} db_name [create_spcification[,create_specification]...]
[create_specification]: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name
CREATE [sc_name] TABLE table_name [(create_definition, create_definition, ...)] [table_options] [select_statement]
[create_definition]
包括数据列名称col_name
,数据类型data type
,数据完整性约束[[NOT] NULL]
,数据索引[INDEX]
,数据主键[PRIMARY KEY]
CREATE SCHEMA sc_name AUTHORIZATION <user_name [<CREATE DOMAIN 子句>|<CREATE TABLE 子句 >|<CREATE VIEW 子句>|...]
CREATE [UNIQUE] [CLUSTER] INDEX <index_name> ON <table_name> [<col_name> [<(ASC|DESC)>]],...]);
UNIQUE
表示索引值唯一对应
CLUSTER
表示要建立的索引为聚族索引,与表中记录顺序一致的索引组织关于[create_definition]
的定义,其中包括三个部分
[<列名> <数据类型> [列级完整性约束]],其中不同层级的[CREATE_DEFINITION]
用半角逗号,
分隔
数据库的数据类型分为:
INT
整数类型, SMALLINT
短整数类型REAL
浮点数类型, DOUBLE PRECISION
双精度浮点数类型, FLOAT(n)
浮点数类型, 精度至少为n位数字NUMERIC(p,d)
定点数类型,共有p位数字,其中小数点后d位CHAR(n)
长度为n的字符串, VARCHAR(n)
最大长度为n的字符串BIT
(n)长度为n的二进制位串, BIT
和VARYING(n)
最大长度为n的二进制位串DATE
日期类型: YYYY-MM-DD
, 时间类型: HH:MM:SS
, TIMESTAMP
时间戳(DATE
加TIME
)BOOLEAN
布尔型,有三个值TRUE
、FALSE
和UNKNOWN
REF
、ROW
和ARRAY
等1Gbyts
的串。称为LOB
: BLIB
二进制大对象,储存音频、图像、视频等。CLOB
DROP
谓词DROP
用于删除数据类型:
DROP SCHEMA sc_name (CASCADE | RESTRICT)
DROP col_name (CASCADE | RESTRICT) [DROP 完整性约束]
DROP INDEX [ON table_name] index_name
MODIFY
谓词MODIFY
用于修改数据类型:
MODIFY [TABLE table_name] col_name create_spcification
DATA Query Language
SQL的数据查询有特定的谓词SELECT
也是SQL用的最多的谓词
简单查询仅涉及数据库中的一个表,也称为单表查询
SELECT col_name1[, col_name2]... FROM table_name
//投影部分列SELECT * FROM table_name
//投影所有列SELECT {[col_names]} FROM table_name WHERE {Expression}
SELECT {[col_names]} FROM table_name WHERE [col_name] BETWEEN [left_limit] AND [right_linit]
SELECT {[col_names]} FROM table_name WHERE [col_name] [NOT] LIKE [Expression]
[Expression]
中使用’’包裹条件SELECT {[col_names]} FROM table_name WHERE [col_name] IN ('MA', 'CS', 'EE');
SELECT * FROM table_name ORGER BY {[col_names]} DESC;
数组中的第一列优先级最高COUNT ([DISTINCT | ALL] *)
统计元组个数COUNT ([DISTINCT | ALL] col_name)
统计一列元组个数SUM ([DISTINCT | ALL] col_name)
对数值列求和AVG ([DISTINCT | ALL] col_name)
对数值求平均MAX ([DISTINCT | ALL] col_name)
求最大值MIN ([DISTINCT | ALL] col_name)
求最小值SELECT COUNT(*) FROM table_name
查询元组数量查询通过多个表取得数据,称为连接查询
SELECT table_name1 {[col_names]} FROM table_name2 WHERE table1.att1 = table2.att2
当两个表有相同的某列的值时,将其连接起来SELECT {[col_names]} FROM table_name WHERE [Express] [AND] [table1.att1 = table2.att2]
SELECT {[col_names]} FROM table_name FROM {[table_names]} WHERE {[Expression]}
IN
的子查询SELECT {[col_names]} FROM table_name WHERE [col_name] < ANY(select_array)
SELECT {[col_names]} FROM table_name WHERE [col_name] < ALL(select_array)
SELECT {[col_names]} FROM table_name WHERE EXISTS(select_array)
(UNION)
SELECT {[col_names]} FROM table_name WHERE [Expression1] UNION SELECT {[col_names]} FROM table_name WHERE [Expression2]
(Intersect)
SELECT {[col_names]} FROM table_name WHERE [Expression1] INTERSECT SELECT {[col_names]} FROM table_name WHERE [Expression2]
(EXCEPT)
SELECT {[col_names]} FROM table_name WHERE [Expression1] EXCEPT SELECT {[col_names]} FROM table_name WHERE [Expression1]
连接表允许用户在一个`SELECT`语句的`FROM`子句中指定连接操作,这种连接操作所得到的表称为连接表。
Connect_Type
includes JOIN, OUTER, JOIN, NATURAL JOIN and CROSS JOINConnect_Condition
includes ON, USING({col_names})SELECT {col_names} FROM (<table_name1> JOIN {col_names} ON <table_name2.col_names> [Judge_condition]) Where {Judge_condition}
SQL
的插入操作通过INSERT
语句实现,该语句将数据插入到一个表中.其一般格式有两种:
INSERT INFO table_name [{col_names}] VALUES({col_values})
INSERT INTO table_name[{col_names}] {child_query}
SQL
的数据删除由DELETE
实现
DELETE FROM table_name [WHERE {expressions}]
SQL
数据更新操作由UPDATE
语句实现
UPDATE table_name SET {col_names=col_values} WHERE {expressions}
更新操作一次只能更新一个表,若更新多个表,需要执行多个更新语句
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。