SQL就一直是关系数据库管理系统(RDBMS)
SQL语言按其功能可分为:数据定义,数据查询,数据操作和数据控制,主要特点有:一体化,高度非过程化,面向集合的操作方式,提供多种方式使用,语言简洁。
NOT NULL:非空约束,限制列取值非空
PRIMARY KEY:主键约束,指定本列为主键
FOREIGN KEY:外键约束,定义本列为引用其他表的外键 foreign key (列名)references <外表名>(<外表列名>)
UNIQUE:唯一值约束,限制列取值不能重复
DEFAULT:默认值约束,指定列的默认值 default 常量表达式
CHECK:列取值范围约束,限制列的取值范围 check (逻辑表达式)
数据库创建:create database<数据库名>
数据库删除:drop database<数据库名>
表的创建:create table <表名> (完整性约束定义)
输入记录:insert into [字段名] values <记录>
修改列定义:alter table <表名> alter column<列名><新数据类型>
添加新列:alter table <表名> add <列名><数据类型><约束>
删除列:alter table <表名> drop column<列名>
添加约束:alter table <表名>add 约束定义
删除约束:alter table<表名> drop 约束名
单表查询:select <目标列名序列> from <表名>where <行选择条件>group by <分组依据>HAVING<组选择条件>order by <排序依据列>
like 运算符的一般语法格式为:
列名【NOT】like <匹配串>
_(下划线):匹配任意一个字符
%(百分号):匹配0到多个字符
[]:匹配[]中的任意一个字符,如[acdg]表示匹配a、c、d和g中的任何一个,若要比较的字符是连续的,则可用连字符-表示,例如,若匹配acde中的全部字符,则可以表示为[b-e],不匹配的话表示[^b-e]
[^]不匹配[]中的字符
元组更新:
update <表名> set 列名=表达式(子查询)【列名=表达式】【where 条件表达式】
排序可以是从小到大(升序)也可以是从大到小(降序)
order by 列名[ASC|DESC]
COUNT(*):统计表中元组的个数
COUNT([distinct]<列名>):统计本列的列值个数,distinct 选项表示去掉列的重复值后再统计
SUM(<列名>):求和,必须是数值
AVG(<列名>):求平均值,必须是数值
MAX(<列名>):求最大
MIN(<列名>):求最小
HAVING 子句用来对分组后的统计结果再进行筛选,必须与group by 连用
子查询:只能由外层向内层传递参数而不能内层向外层传递,这叫做变量的作用域原则
内连接:
(1) ANSI方式的内连接语法格式为:
FROM表1INNER JOIN 表2 ON <连接条件>
(2) Theta方式的内连接语法格式为:
FROM表1,表2 WHERE <连接条件>
带EXISTS谓词的子查询
EXISTS代表存在量词⺕。使用带EXISTS谓词的子查询可以进行存在性测试,其基本使用形式为:
WHERE [NOT] EXISTS (子查询)
带EXISTS谓词的子查询不返回查询的数据,只产生逻辑真值或假值。
EXISTS的含义是:当子查询中有满足条件的数据时,返回真值;否则返回假值。
. NOT EXISTS的含义是:当子查询中有满足条件的数据时,返回假值;否则返回
SQL同时也提供了与关系代数中集合运算并、交和关和差对应的谓词为:
UNION、INTERSECT和EXCEPT
定义视图的SQL语句为CREATE VIEW,其一般格式如下:
CREATE VIEW <视图名>[(列名[ ,..n]) ]
AS
SELECT语句
在定义视图时注意以下几点:
(1) SELECT 语句中通常不包含ORDER BY和DISTINCT子旬.
(2)在定义视图时要么指定视图的全部列名,要么全部省略
修改视图 修改视图定义的 SQL 语句为 ALTER VIEW,其语法格式如下:
ALTER VIEW <视图名>[(飞列名>[,…n])] AS SELECT 语句
例4.70修改上个例题创建的视图,使其包含学生的年龄信息。
ALTER VIEW V_Grade_CS AS SELECT S. Sno, Sname, YEAR(GETDATE())-YEAR(Sbirthday)Sage, C. Cno, Cname, Grade FROM Student S, SC, Course C WHERE S. Sno=SC. Sno AND SC. Cno=C. Cno AND Sdept='计算机系'
删除视图:
drop view <视图名>
例:drop view teach