数据库系统 -- 3 关系数据库标准语言SQL

来源:互联网 发布:怎么淘宝手机直播 编辑:程序博客网 时间:2024/06/10 19:01

SQL(Structured Query Language)结构化查询语言,标准、通用、功能强;

特点:集数据查询Data Query;数据操纵Data Manipulation ;数据定义Data Definition;数据控制Data Control功能于一体

综合统一:DDL;DML;DCL三种语言于一体

高度非过程化:只要提出做什么就好

面向集合的操作方式:操作的对象都是元组的集合

同种语法结构提供多种使用方式:内嵌到c++,java中

简洁、易学易用:


几个动词:

数据查询:SELECT

数据定义:CREATE;  DROP;  ALTER

数据操纵:INSERT; DELETE; UPDATE

数据控制:GRANT;  REVOKE


基本概念:

外模式对应:视图View和部分基本表Base Table

模式:基本表

内模式:存储文件Stored File

视图:一个或者几个基本表导出的表;数据库中只存放图的定义不存放视图对应的数据;虚表

SQL中一个关系对应一个基本表;一个基本表对应一个存储文件;一个表可以带若干索引;索引存放在存储文件中

数据定义:

模式定义:CREATE SCHEMA <模式名>  AUTHORIZATION  <用户名>

eg:CREATE SCHMA "S-T" AUTHORIZATION WANG

tt:如果没有知道模式名,则隐含为用户名

模式的删除:DROP SCHMA <模式名>  <CASCADE | RESTRICT>

eg:DROP SCHEMA ZHANG CASCADE;

tt:CASCADE是级联,表示删除模式同时把该模式中所有数据库对象全部一起删除了

RESTRICT限制,只有当该模式下没有任何下属的对象时候才能执行该删除成功;否则拒绝操作


基本表定义:

CREATE TABLE Student

(

Sno char(9) primary key,   /*列级完整性约束条件,Sno是主码*/

Sname char(20) unique,    /*Sname取唯一值*/

Ssex char(2),

Sage smallint,

Sdept char(20)

);


CREATE TABLE Course

(

Cno char(4) primary key,

Cname char(4),

Cpno char(4),    /*先修课*/

Ccredit smallint,

FOREIGN KEY Cpno REFERENCE Course(Cno)  /*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/

);


CREATE TABLE SC

(

Sno char(9),

Cno char(4),

Grade smallint,

PRIMARY KEY(Sno,Cno),      /*主码由两个属性组成,必须作为表级完整性进行定义*/

FOREIGN KEY(Sno) REFERENCE Student(Sno),

FOREIGN KEY(Sno) REFERENCE Course(Cno)

);


数据类型:

CHAR(N)   长度为n的定长字符串

VARCHAR(n)   最大长度为n的变长字符串

INT  长整数

SMALLINT   短整数

NUMBER(p,d)   定点树,p位数字组成(不包括符号、小数点),小数后面d位数字

REAL  取决于机器的精度的浮点数

Double Precision 双精度取决于机器

FLOAT(n)    浮点数  精度至少为n为数字

DATE  日期 YYYY-MM-DD

TIME  时间  HH:MM:SS


每个基本表都属于一个模式,一个模式包括多个基本表

CREATE TABLE "S-T".Student();


修改基本表:

ALTER TABLE <表名>

[ADD <新列名> <数据类型> <完整性约束>]

[ DROP <完整性约束>]

[ALTER COLUMN<列名> <数据类型>]


删除表:

DROP TABLE Student CASCADE;   //删除表有关的视图触发器索引表数据等。 Restrict


索引建立:加快查询速度

CREATE [UNIQUE] [CLUSTER] INDEX  <索引名>

ON <表名>  (<列名>[  ASC | DESC  ])

eg: create unique index Studentsnindex  on Student(Sno DESC); 

删除索引:DROP INDEX <索引名>


数据查询:

单表查询:select Sno from Student;

DISTANCT  取消重复元组  :select distinct Sno from SC;

别名:select Sname NAME from Student;

满足条件:

比较:=  >  <  >=  <=   !=  <>  NOT   

确定范围: between  and、not between and

确定集合:IN,NOT IN

字符串匹配:LIKE,NOT LIKE (%任意长度的字符串;_任意单个字符)

空值:IS NULL ,IS NOT NULL

多重条件:AND、OR、NOT

ORDER BY子句:ASC and  DESC排序结果  置于where 子句后面,多个列逗号隔开

GROUP BY子句:查询结果按照某一列或者多列分组,细化聚集函数,HAVING短句指定筛选条件

select Cno, COUNT(Sno)

from SC

GROUP BY Cno;




原创粉丝点击