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的更多相关文章

  1. 【JAVA编码专题】JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础

    这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...

  2. Spring Security 概念基础 验证流程

    Spring Security 概念基础 验证流程 认证&授权 认证:确定是否为合法用户 授权:分配角色权限(分配角色,分配资源) 认证管理器(Authentication Manager) ...

  3. 基础篇 - SQL 的约束

    基础篇 - SQL 的约束       约束 一.实验简介 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性.本节实验将在实践操作中熟悉 MySQL 中的几种约束. 二 ...

  4. 第87节:Java中的Bootstrap基础与SQL入门

    第87节:Java中的Bootstrap基础与SQL入门 前言复习 什么是JQ? : write less do more 写更少的代码,做更多的事 找出所有兄弟: $("div" ...

  5. Unicode,GBK,GB2312,UTF-8概念基础(转载)

    第一篇:JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础本部分采用重用,转载一篇文章来完成这部分的目标.来源:holen'blog   对字符编码与Unicode,IS ...

  6. JAVA字符编码一:Unicode,GBK,GB2312,UTF-8概念基础

    第一篇:JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础 来源:holen'blog   对字符编码与Unicode,ISO 10646,UCS,UTF8,UTF16, ...

  7. C#-概念-基础类库:基础类库

    ylbtech-C#-概念-基础类库:基础类库 基础类库 (BCL) 是微软所提出的一组标准库可提供.NET Framework所有语言使用. 随着 Windows 以及 .NET Framework ...

  8. JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

  9. ​《数据库系统概念》1-数据抽象、模型及SQL

    ​DBMS(database-management system)包括数据库和用于存取数据的程序,DBMS的基本目标是为数据的存取提供方便.高效的方式,此外对大多数企业来说,数据是非常重要的,所以DB ...

随机推荐

  1. 基于EF6的快速开发Web框架——Swift.Net

    Swift.Net This Is A Light-Weight And Fast-Develop .Net Framework. Usage STEP 1 Create Your Entities ...

  2. 微信小程序把玩(三十九)navigation API

    原文:微信小程序把玩(三十九)navigation API 演示效果也看到了小程序也就提供这几个处理导航控制.值得注意的是只能同时导航五个页面 主要属性: 导航条一些方法 wx.setNavigati ...

  3. sqlite查询问题,由字母大小写敏感引起

    目前做的项目之前是用mysql,这是个错误的选择,因为本身并不是服务器-客户端模式的项目,而是一个CS架构项目,mysql这种需要较繁复配置的数据库并不合适.需要的应该是sqlite这类,内嵌的数据库 ...

  4. Anbox —— 在 Linux 系统中运行 Android 应用

    具有以下特性: 没有限制:由于 Anbox 运行着整个 Android 系统,所以理论上任何应用都可以在其中运行 安全:Anbox 将 Android APP 放进一个密封的盒子中,无需直接访问硬件或 ...

  5. 理解typedef(转)

    // 从别人那转的,调整下格式便于阅读. 首先请看看下面这两句: typedef ]; typedef void (*p)(void); 如果你能一眼就看出它们的意思,那请不要再往下看了.如果你不太理 ...

  6. GetParent、SetParent、MoveWindow - 获取、指定父窗口和移动窗口,IsChild - 判断两个窗口是不是父子关系

    提示: SetParent 应该 Windows.SetParent, 因为 TForm 的父类有同名方法. //声明: {获取父窗口句柄} GetParent(hWnd: HWND): HWND; ...

  7. Git 常用命令大全(转)

    Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ git clone g ...

  8. Qt学习虚拟机--基于MSYS2-MinGW环境并带有各种开源的软件库!

    Qt学习虚拟机--基于MSYS2-MinGW环境并带有各种开源的软件库!虚拟机地址,VM10和以上:http://pan.baidu.com/s/1slcTA49包含两个分卷压缩包,加起来5GB多. ...

  9. AppBoxFuture: 大数据表分区的3种策略

      之前的文章"分而治之"在介绍大表分区时,作者尚未实现不同的分区策略,即只能按指定的分区键进行分区.这次作者完善了一下分区策略,在规划大表分区时可以按Hash或者时间范围进行分区 ...

  10. python trojan development 2nd —— use python to send mail and listen to the key board then combine them

    请勿用于非法用途!!!!!本人概不负责!!!原创作品,转载说明出处!!!!! from pynput.keyboard import Key,Listener import logging impor ...