数据定义
模式schema
1.定义模式:creat schema<name> authorization <author> ;
2.删除模式:drop...<cascade | restrict>;
注:
cascade表示同时删除模式中所有的数据库对象。restrict表示若模式中已经定义了下属的数据库对象(表、视图等),则拒绝该语句的执行,没有定义则可以执行。
基本表table
1.定义基本表:creat table <name>(<col name><type>[...],<..><..>,...) ;
2.修改基本表:alter table <name> [ add ... ] [ drop... ] [ alter column...] ;
3.删除基本表:drop table <name> [cascade | restrict] ;
索引index
在RDBMS(基于关系模型的数据库系统)中索引一般采用B+树,HASH索引来实现。采用哪一种由具体的RDBMS来决定
1.建立索引:creat [unique] [cluster] index <name> on <table name>(<column name>[<asc |desc >]...,<name>...) ; //asc为升序,desc为降序,缺省为asc
2.删除索引:drop index <name> ;
关系
每一个基本表都属于某一个模式,一个模式包含多个基本表。
如何显示出二者的关系?
1.在表名中明显的给出模式名creat table “S-T”.Course(...); //course所属模式是“”S-T
2.创建模式时同时创建表
CREAT SCHEMA S-T AUTHORIZATION Joey
CREAT table Course
(no CHAR(4) PRIMARY KEY, /*列级完整性约束条件,no是主码*/
name CHAR(40) UNIQUE, /*name取唯一值*/
credit SMALLINT,
FOREIGN KEY no REFERENCES Student(Sno)
/*表级完整性约束条件,no是外码,被参照表是Student,被参照列是Sno*/
);
3.提前设置所属模式
数据查询select
单表查询
1、一般格式
/*一般格式*/
SELECT [ALL | DISTINCT] <目标列表达式> [,<目标列表达式>]...
FROM <表名或视图名>[,<表名或视图名>]...
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING<条件表达式>]]
[ORDER BY <列名2> [ASC | DESC]];
根据where的条件表达式,从from指定的表中找出满足条件的元组,再按select中的目标列表达式,选出元组中的属性值形成结果表。其中distinct关键词表示去掉结果表中的重复行。
若有group,则按列名1的值进行分组,该属性列值相等的元组为一组。通常会在每组中作用聚集函数(aggregate functions)。如带有having,则只有满足指定条件才予以输出。
如有order,则结果表还要按照列名2进行排序。
2、查询全部列
SELECT * /*选择全部列*/
FROM student;
3、查询经过计算的值
SELECT name NAME,2004-age BIRTHDAY
FROM student;
查询结果的第二列是一个算术表达式,可以尽量查询同时做计算。可以通过指定别名来改变查询结果的列标题,如上述中给name列定义了NAME别名。
4、常用的查询条件
查询条件 | 谓词 |
比较 | =,>,<,>=,<=,!=或<>,!>,!<;NOT+上述比较运算符 |
确定范围 | BETWEEN AND,NOT BETWEEN AND |
确定集合 | IN,NOT IN |
字符匹配 | LIKE,NOT LIKE |
空值 | IS NULL,IS NOT NULL |
多重条件(逻辑运算) | AND,OR,NOT |
字符匹配:[ not ] like '<匹配串>' [ escape '<换码字符>' ]
注:
匹配串可以是一个完整的字符串,也可以含有通配符%(代表任意长度0~
的字符串。例如a%b表示以a开头,以b结尾的任意长度字符串。如ab,addgb,acb等)和_(代表任意单个字符)。
当查询的字符串本身就含有%或者_时,使用escape'<换码字符>'短语,对通配符进行转义。例如where name like ' db\_%i_ _ ' escape' \ ' ,第一个_前有\为普通的字符,后几个具有通配符的含义。
5、聚集函数
为进一步增强检索功能,SQL提供了许多聚集函数,主要有:
count( [ distinct | all ] * ) | 统计元组个数 |
count( [ distinct | all ] <列名>) | 统计一列中值的个数 |
sum( [ distinct | all ] <列名>) | 计算一列中值的总和(此列必须是数值型) |
avg( [ distinct | all ] <列名>) | 计算一列中值的平均值(此列必须是数值型) |
max( [ distinct | all ] <列名>) | 求一列中的最大值 |
min( [ distinct | all ] <列名>) | 求一列中的最小值 |
连接查询
连接查询包括等值连接查询、自然连接查询、非等值连接查询、自身连接查询、外连接查询、符合条件连接查询。