码迷,mamicode.com
首页 > 数据库 > 详细

数据库系统概念:基础的SQL

时间:2019-03-19 21:46:15      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:步骤   color   esc   key   lint   编程语言   操作符   arc   main   

public class DataBase {
    public static void main() {

    }
}

/*
    3.1 SQL查询语言概览
    
    SQL语言有一下几个部分:
        数据定义语言:提供定义关系模式,删除关系以及修改关系模式的命令
        数据操纵语言:提供从数据库中查询信息,以及在数据库中插入元组,删除元组,修改元组的能力
        完整性:定义完整性约束的命令
        视图定义:
        事务控制:定义事务的开始和结束的命令
        嵌入式SQL和动态SQL:嵌入式和和动态SQL定义SQL语如何嵌入到通用编程语言
        授权:定义了包括对关系和视图的访问权限命令
 */

/*
    3.2.1 基本类型
    
    SQL标准支持多种固有类型:
        char(n)
        varchar(n)
        int
        smallint
        numeric(p,d):定点数,精度由用户指定。
        float(n):精度至少为n位的浮点数
        read,double precision:浮点数与双精度浮点数,精度与机器相关
        
    将一个char类型与varchar类型进行比较的时候,由数据库系统决定要不要在varchar后加
    上空格,以使长度一致。作者建议,我们始终使用varchar类型来避免这种情况。
 */

/*
    3.2.3 基本模式定义
    
    create table department
        (dept_name varchar(20),
        building varchar(15),
        budget numeric(12.2),
        primary key(dept_name));
 */

/*
    3.3.2 多关系查询
    
    select name, instructor, dept_name, building
    from instructor, department
    where instructor.dept_name = department.dept_name
    
    通过from字句定义了一个在该字句中所列出关系的笛卡尔积。笛卡尔积运算从两个关系中
    合并元组,但不同于连接运算的是,其结果也包含两个关系的所有对,无论它们的属性是
    否匹配。
    
    通常说来,一个SQL查询的含义可以理解如下:
        1.为from字句中列出的关系产生笛卡尔积。
        2.在步骤1的结果上应用where字句中指定的谓词。
        3.对于步骤2结果中的每个元组,输出select子句中指定的属性(或表达式的结果)
 */

/*
    3.3.3 自然连接
    
    自然连接运算作用与两个关系,并产生一个关系作为结果。不同于两个关系的笛卡尔积,自然连接
    只考虑那些在两个挂你模式中都出现的属性上取值相同的元组对。
    
    原代码:
        select name, course_id
        from instructor, teaches
        where instructor.Id = teaches.ID
    改进为:
        select name,course_id
        from instructor natural join teachers
        
    代码分析:
        select name, title
        from instructor natural join teachers, course
        where teachers.course_id = course_course_id;
        先计算出instructor和teachers的自然连接,然后计算该结果和course的笛卡尔积
        
    为了发扬自然连接的优点,同时避免不必要的相等属性带来的危险,SQL提供了一种自然连接
    的构造形式,允许用户来指定需要哪些列相等。
        select name, title
        from (instructor natural join teaches)join course using(course_id)
        
 */

/*
    3.4 附加的基本运算
    
    3.4.1 更名运算
    
    3.4.2 字符串运算
    
    SQL允许在字符串上有多种函数,如串联、提取字串、计算字符串长度、大小写转换、去掉字符串后面的空格等
    
    在字符串上可以使用立刻操作符来实现模式匹配,我们使用两个特殊的字符来
    描述模式:
        %:匹配任意字串
        _:匹配任意字符
        
    为了使模式中能够包含特殊模式的字符(%与_),SQL允许定义转义字符。转义字符直接放在特殊
    字符的前面。我们在like运算中使用escape关键词来定义转义字符。
        like ‘ab\%cd%‘ escape ‘\‘ //匹配以ab%cd开头的字符串
        
    SQL 允许使用not like比较运算符搜寻不匹配项。
 */

/*
    3.4.3 select子句中的属性说明
    
    3.4.4 排列元素的显式次序
    
    排序可以在多个属性上进行。
        select *
        from instructor
        order by salary desc, name asc
        
    3.4.5 where子句谓词
        select name
        from instructor
        where salary between 90000 and 100000
    还可以使用not between
    
    SQL允许我们使用记号(v1,v2,v3)来表示一个分量值分别为v1,v2,v3的n维元组。
    在元组上应用比较运算符,按字典顺序进行比较运算。
        select name, course_id
        from instructor, teaches
        where (instructor.ID,dept_name) = (teaches.ID,"Biology‘);
 */

 

数据库系统概念:基础的SQL

标签:步骤   color   esc   key   lint   编程语言   操作符   arc   main   

原文地址:https://www.cnblogs.com/junjie2019/p/10561422.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!