数据库(二)— SQL语言

SQL语言

结构化查询语言,非过程化,面向集合操作

1、DDL (数据定义语言) — 数据表的建立

1)CREATE DATABASE 建立数据库

CREATE DATABASE database_name

2)CREATE TABLE 建立数据表

CREATE TABLE table_name
(属性名1  数据类型和长度 [字段级完整性约束],
  属性名2  数据类型和长度 [字段级完整性约束],
  ……
  属性名n  数据类型和长度 [字段级完整性约束],
  [表级完整性约束]
 )[其他参数]
  • 数据类型和长度
    属性定义按“,”管理,一个属性占据一个逗号空间
    数值型自动分配宽度,字符型要同时定义长度 char(6)/varchar(6)
名称类型
精确数字bigint,numeric,bit,smallint<2>,decimal,smallmoney,int,tinyint,money
近似数字float,real
日期和时间date,datetimeoffset,datetime2,smalldatetime,datetime,time
字符串char,varchar(根据数据自动调整长度),text
二进制字符串binary,varbinary,image
其它数据类型cursor,timestamp,hierarchyid
Unicode字符串nchar,nvarcha,ntext
  • 完整性约束
字段级完整性约束含义
NULL / NOT NULL是否允许字段取空值
PRIMARY KEY主键(字段级完整性约束的主键只能有一个)
UNIQUE唯一性约束
FOREIGN KEY() REFERENCES table[(field)]外键约束,引用其他表中的字段
DEFAULT()说明字段的默认值
CHECK()约束字段的取值
表级完整性约束含义
PRIMARY KEY()说明由多个字段构成的复合主键
FOREIGN KEY()外键是复合主键
CHECK()不同字段同时需要约束或有某种函数关系
  • CHECK子句的条件控制
其他: isnumeric(), left(xxx,n), right(xxx,n)

3)ALTER TABLE 修改基本表的结构

ALTER TABLE table1
	ADD 新字段名 数据类型 完整性约束
	DROP 完整性约束
	DROP COLUMN 字段名
	ALTER COLUMN 字段名 数据类型 完整性约束

4)DROP TABLE 删除基本表

DROP TABLE table1

5)CREATE INDEX 建立索引

CREATE [UNIQUE][CLUSTER] INDEX <索引名> ON <表名> <列名1><次序1>...<列名n><次序n>

6)DROP INDEX 删除索引

DROP INDEX <索引名>

2、DML (数据操纵语言) — 数据查询SELECT

可以通过WHERE条件中IN | NOT IN | NOT EXISTS等语句嵌套使用
(WHERE语句的条件控制与CHECK类似)

SELECT[ALL/DISTINCT] select_list(,) [<as> label]  /*可以用属性名/表达式/聚合函数,查询的结果也是表*/ /*相当于关系代数π*/
 /*ALL表示查询结果中可以包含重复的记录(默认值),DISTINCT表示结果中不出现重复记录*/
[INTO new_table]
FROM table_source [LEFT/INNER/RIGHT/FULL JOIN table_source2  /*左匹配/全部匹配/右匹配/全外连接*/
      ON join_condition]
[WHERE search_condition]  /*对分组前的表或视图进行过滤,或用来建立多表之间的联系;不允许出现聚合函数*/ /*相当于关系代数σ*/
[GROUP BY group_by_expression] /*SELECT语句中的分组属性一定要出现在GROUP BY语句中*/
[HAVING search_condition]  /*对分组后的汇总结果进行过滤*//*允许出现聚合函数*/
[ORDER BY order_expression [ASC|DESC]] /*可以用属性名或表达式,默认为ASC升序*/ /*用多个字段表示嵌套分组*/
[LIMIT n,m]  /*展示从第(n+1)条记录开始的m条记录(n从0开始取)*/
[examples]
/*分组汇总*/
SELECT num,count(*)
FROM table_source
GROUP BY num

/*建立多表关联*/
SELECT *
FROM table1,table2
WHERE table1.field = table2.field and ...

/*常用的聚合函数*/
avg(field), count(*), count(field), sum(field), max(field), min(field)
/* 符号*代表所有字段/所有记录 */

/*交、并、差*/
union, intersect, except

3、DCL (数据控制语言)
  • INSERT
/*把记录插入指定的表中*/
INSERT INTO table1 [(field1,field2,...,fieldn)]
	VALUES  (value11,value12,...value1n),
			(value21,value22,...value2n)
			
/*把记录插入指定的表中*/
INSERT INTO table1 [(field1,field2,...,fieldn)]
SELECT * FROM table2
  • UPDATE
UPDATE table1
SET field1=expression1,field2=expression2
[WHERE condition]
  • DELETE
DELETE
FROM table1
[WHERE condition]

4、视图(虚拟表)的操作
CREATE VIEW <视图名>  /*ALTER 和 DROP也一样*/
AS
	SELECT字句
/*不能包含INTO或ORDER BY字句*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值