zoukankan      html  css  js  c++  java
  • 关系数据库标准语言 SQL (ch.3)

    3.1 SQL 概述#

    3.1.2 特点##

    1 综合统一

    非关系型语言 的数据语言都分为 DDL Scheme Data Definitin Language, 模式DDL
    SubScheme Data Definition Language 子模式DDL, DSDK DML
    2 高度非过程话

    3 面向集合的操作方式

    4 用同一种语法结构提供多种功能

    3.3 数据定义

    一个管理系统实例可以创建多个 数据库

    一个数据库可以有多个模式

    一个模式包括多个表和视图等对象

    3.3.1 定义模式

    模式定义
    CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
    模式删除
    drop schema <模式名> cascade|restrict

    3.3.2基本表的定义 删除 修改##

    1 定义基本表:
    create table <表名> (<列名> <数据类型> <列级完整性约束条件>
    。。。
    [表级完整性约束条件] )

    2 数据类型
    3 模式与表

    1 在表名中显式定义所属的模式名
    2 在创建模式的时候定义表
    3 设置所属的模式,这样在船舰的时候不必给出模式名

    show search_path 显示搜索的默认值 $user,PUBLIC 含义是首先搜索与用户同名的模式名,然后使用public模式
    管理员可以是设置搜索路径:
    set search_path TO "S-T" ,PUBLIC

    4 修改基本表

    alter table <表名>
    [ADD column <新列名> <数据类型>[完整性约束]]
    [add <表级完整性约束>]
    [drop column <列名> [cascade|restrict ]
    [drop consrtrainit <完整性约束名>[restrict|cascade ]]
    [alter column <列名> <数据类型>]

    5 删除基本表
    drop table <表名> [restrict|cascade]

    3.3.3 索引的建立与删除##

    1 建立索引
    create [unique][cluster] index<索引名>
    on <表名> (列名,次序[,列名 ,次序])
    unique 表名每一个索引值对应一个唯一的数据记录
    cluster 代表聚簇索引

    2 修改索引
    alter index <旧索引名> rename to <新锁引名>
    3 删除索引
    drop index< 索引名>

    3.4 数据查询

    select [all|distinct] <目标列表达式> [,<目标列表达式>] ...
    from <表名或视图名> [,<表名或视图名>]
    [where <条件表达式>]
    [GROUP BY <列名1>[ HAVING<条件表达式<]
    [GROUP BY <列名2>[ ASC|DESC]

    3.4.1 单表查询##

    1 选择表中的若干列
    2 选择元组中的若干元组
    (1) 使用distinct 消除重复的行
    (2)条件表达

    4 聚簇函数

    3.4.2# 连接查询##

    1 等值连接与非等值连接
    [<表名1>.]<列名1> <比较运算符> [·<表·名2>]

    [<表名1>.]<列名1> between [·<表·名2>] and [<表名3>. 列明> ]

    2 自身连接
    3 外连接
    要以学生为主题进行查询(即使该学生没有选课,仍要有该学生的null 信息 (而不是舍弃)

    from student Left outer join sc on (Student.Sn=Sc.Sno)
    左外连接列出左边元组的所有信息。

    4 多表连接
    5 嵌套查询

    3.4.3 嵌套查询##

    需要指出 子查询不可以用select 语句进行查询

    相关子查询和不相关子查询

    如果子查询的查询条件依赖于 父查询 就成为 相关子查询
    否则就是不相关子查询。(相关嵌套查询)

    3 any 和some 谓词
    4 exists 谓词的使用
    5
    选择选修了 全部课程的学生

    对于任意的XX 都满足

    非( 存在一个XX 不满足)

    查询至少选修了 学生X 选修了全部课程的学生号码
    蕴含逻辑
    若果 X 选修了a 那么Y 也选修了a

    对于任意课程y 满足(如果A选了 -> B选了)
    等价于
    不存在课程y (Ax选了-> B 没选)

    3.4.4 集合查询##

    包括并 交 差
    union 会自动去掉重复元素 使用alll 关键字保留重复元素

    3.4.5 基于派生表的查询##

    子查询出现在from 中称为派生表

    3.4.6 select 的一般格式##

    3.5 数据更新#

    1插入元组
    insert into <表名> [ <属性列1>,<属性列2>...)]
    2 插入子查询结过
    insert into table <表名>[<属性列1>,<属性列2>...] 子查询;

    3.5.2 修改数据##

    update <表名> set <列明>=<表达式>
    where

    3.5.3删除数据##

    drop from table < 表名>
    where

    3.7 视图#

    3.7.1 定义视图##

    1 建立试图
    create view <视图名> [(列名) ...]
    as <子查询>
    [with check option]
    选择了with check option 会再更新插入删除的时候 自动加上限制条件

    必须指定组成视图的所有列名
    (1) 某一个目标列不是单纯的属性名 ,是局促函数或者是列表达式
    (2)选择了同名的字段
    (3)要启动更加适合的名字
    如果一个视图仅仅是去掉了表中的某些行或者列 就成为 行列子集视图

    不存在的列 - 》 带表达式的视图
    有groupby字句的视图-》 分组视图
    2 删除视图

    删除基本表后 ,视图不会清楚,
    需要显示的调用drop view 来清除视图

    3.7.2 查询视图##

    视图消解 view resolution

    都属关系对行列子集视图的查询都可以正确转换,但是非行列子集视图就不一定可以正确转换了,

    视图一旦定义,就永久保存在数据字典中
    派生表再语句执行中临时定义,执行后删除

    3.7.4 视图的作用##

    简化用户操作
    使用户以多角度看同意数据
    对重构提供了一定程度的逻辑独立性
    对机密数据提供安全保护
    更清晰的表达查询

  • 相关阅读:
    软件测试基础5 ——系统测试之软件质量
    软件测试基础4 ——系统测试之测试方法
    软件测试基础3 ——系统测试之系统测试类型
    软件测试基础2 ——系统测试之测试对象与测试级别
    软件测试基础1 ——系统测试之测试基础
    《软件测试方法和技术》-读书笔记(三)
    《软件测试方法和技术》-读书笔记(二)软件缺陷的产生
    《软件测试方法和技术》-读书笔记(一)
    bug的一些事
    开发版速达-提供在线帐套配置功能
  • 原文地址:https://www.cnblogs.com/sfzyk/p/9175679.html
Copyright © 2011-2022 走看看