public class DataBase {
    public static void main() {

    }
}

/*
    4.5 SQL的数据类型与模式

    4.5.1 SQL的日期与时间类型

    SQL标准支持的时间类型:
        date:日历日期,年月日

        time:一天中的时间,小时分钟秒,time(p)表示秒的小数点后的数字位
        通过指定time with timezone,还可以吧时区信息连同时间时间一起存储

        timestamp:date和time的组合。

        date:'2010-04-05'
        time:'09:30:00'
        timestamp '2010-04-05 09:30:00'

    我们可以利用case e as t形式的表达式,将一个字符串e转换成类型t,
    其中t是date、time、timestamp中的一种。

    我们可以利用extract(field from d),从date或time值d中提取出单独的域,
    这里的域可以是year、month、day、hour、minute、或者second中的一种

    SQL定义了一些函数用来获取当前日期和时间。例如:
        current_date返回当前日期
        current_time返回当前时间(带时区)
        localtime返回当前的本地时间(不带时区)
        current_timestamp返回当前时间戳(带时区)
        localtimestamp返回当前本地时间戳(不带时区)

    SQL允许在上面列出的所有类型上进行比较运算,也允许在各种数据类型上进行算术
    运算和比较运算。SQL还支持interval数据类型,它允许在日期、时间、和时间间
    隔上进行计算。例如,x,y都是date类型,则x-y就是时间间隔类型。
 */

/*
    4.5.2 默认值

    4.5.3 创建索引

    创建索引语法:
        create index studentID_index on student(ID)

    4.5.4 大对象类型

    SQL中的大对象类型:
        clob:字符数据的大对象数据类型
        blob:二进制数据的大对象类型

    案例:
        book_review clob(10KB)
        image blob(10MB)
        movie blob(2GB)

    对于包含大对象的结果元组而言,把整个大对象放入内存中是非常低效和不现实的。
    相反,一个应用通常用一个SQL查询来检索出一个大对象的定位器,然后在宿主语言
    中用这个定位器来操纵对象。应用本身也是用宿主语言书写的。
 */

/*
    4.5.5 用户定义的对象

    SQL支持两种形式的用户定义数据类型:独特类型、结构化数据类型。

    独特类型:主要利用类型检测机制,类似于C++中的typedef

    语法:
        create type Dollars as numeric(12,2) final;
        create type Pounds as numeric(12,2) final;

        create table department
            (dept_name varchar(20),
            building varchar(15),
            budget Dollars);
    允许使用:
        cast (department.budget to numeric(12,2))
    我们可以在转后后的数值上进行各种运算,但是完成后,我们需要另一个类型转换
    表达式来吧数值类型转换会Dollars类型。

    SQL提供drop type和alter type子句来删除或修改以前创建过的类型。
 */

/*
    4.5.6 create table的扩展

    应用常常要求创建与某个表的模式相同的表。SQL提供了此语法:
        create table temp_instructor like instructor

    当书写一个复杂查询时,把查询结果存储成一个新表通常是很有用的;这个表通常是临时的
    这里需要两条语句,一条用于创建表,另一条用于把查询结果插入到表中。但是SQL提供了
    更简单的方式实现:
        create table ts as
            (select *
            from instructor
            where dept_name = 'Music’)
        with data;
    如果省略with data子句,表会被创建,但是不会被载入数据。

    总结:
        create table xxx like ooo
        create table xxx as () with data
 */

/*
    4.5.7 模式、目录与环境

    当代数据库系统提供了三层结构的关系命名机制。最顶层由目录构成,每个目录都可以包含
    模式。诸如关系和视图那样的SQL对象都包含在模式中。一些数据库实现用术语数据库代替
    术语目录。
        ——我之前创建了mybatis和book其实只对应于一个模式

    要在数据上做任何操作,用户需要先连接到数据库。每个用户都有一个默认的目录和模式,
    这个组合对用户来说是唯一的。当一个用户连接到数据库系统时,将为该连接设置好默认的
    目录和模式。这对应与当用户登进一个操作系统时,把当前目录设置为用户的主目录。

    为了唯一的标识一个关系,必须用一个名字,其包括三部分
        catalog5.univ_shema.course
    当名字的目录部分被认为是连接的默认目录时,可以省略目录部分。

    默认目录和模式是为每个连接建立的SQL环境的一部分。环境还包括用户标识(也称为授权
    标识符)。所有通常的SQL语句,包括DDL和DML,都在一个模式的环境中运行。

    我感觉这儿说的模式,就是MySQL中的database
 */

/*
    4.6 授权

    我们可以在数据库的某个特定部分(如一个关系或视图)上授权给用户所有这些类型的权限,
    或者完全不授权,或者这些授权的一个组合。

    除了在数据上的授权外,用户还可可以被授予在数据库模式上的权限,如:允许用户创建、
    修改或者删除关系。拥有某些形式的权限的用户还可以把这样的权限转授给其他用户,或者
    撤销收回之前授出的权限。
 */

/*
    4.6.1 授权的授予与收回

    SQL标准包括select、insert、update、delete权限。权限所有权限可以用作所有允许
    权限的简写形式。一个创建了新关系的用户,将自动被授予该关系上的所有权限。

    授予权限:
        grant <权限列表>
        on <关系名或视图名>
        to <用户/角色列表>;

        grant select on department to Amit, Satoshi;
        grant update(budget) on department to Amit, Satoshi;

    回收权限:
        revoke <权限列表>
        on <关系名或视图名>
        from <用户/角色列表>

        revoke select on department from Amit,Satoshi;
        revoke update(budget) on department from Amit,Satoshi;
 */

/*
    4.6.2 角色

    SQL中创建角色:
        create role instructor:

    然后角色可以像用户那样被授权:
        grant select on takes
        to instructor;

    角色可以授予给用户,也可以授予给其他角色
        create role dean;

        grant dean to Amit; //授予给其他用户
        grant instructor to dean //授予给其他角色

    一个用户或者一个角色的权限包括:
        1.所有直接授予用户或者角色的权限
        2.所有授予给用户或者角色所拥有的角色的权限

    可能存在着一个角色链~~~

    当一个用户登录到数据库系统时,在此会话中用户执行的动作拥有所有这届授权该用户的权限
    以及所有通过其他角色间接地授予该用户所拥有角色的权限。
 */

/*
    4.6.3 视图的授权

    创建视图的用户不需要得到该视图上的所有权限。他得到的哪些权限不会为他提供超越他
    已有权限的额外权限。
 */

/*
    4.6.4 模式的授权

    SQL提供了一种references权限,允许用户在创建关系时声明外码。SQL的references权限
    可以与update权限类似的方式授予到特定的属性上。
        grant reference(dept_name) on department to Mariano;
 */

/*
    4.6.5 权限的转移

    默认情况下,我们是不允许用户再将得到的权限授予给另外的用户/角色。如果我们在授权时
    允许接受者把自己得到的权限再传递给其他用户,我们在相应的grant命令后面附加with
    grant option子句。
        grant select on department to Amit with grant option;
    一个对象的(关系/视图/角色)的创建者,拥有该对像上的所有权限,包括给其他用户授权的权限。
 */

/*
    4.6.7 权限的回收

    revoke语句可以申明restrict来防止级联回收:
        revoke grant on department from Amit restrict;

    如果存在一个级联回收,就会报一个错误。

    下面revoke语句仅仅回收grant option,并不是真正回收select权限:
        revoke grant option for select on department from Amit;

    SQL允许权限由一个角色授予,而不是由用户授予。SQL有一个与会话所关联的当前角色
    的概念。默认情况下,一个会话所关联的当前角色是空的。一个会话所关联的当前角色可
    以通过set role role_name来设置。指定的角色必须必须已经授予给用户,否则失效
        ——当前会话环境中没有保存角色信息么???

    如果要在授予权限时将权限人设置为一个会话所关联的当前角色,并且当前角色不为空的话,
    我们可以在授权语句后面加上:
        granted by current_role
 */

数据库系统概念:SQL的数据类型与模式、授权的更多相关文章

  1. 数据库系统概论——SQL

    [toc] 一.SQL查询语言概览 视图 从一个或几个基本表导出的表 数据库中只存放视图的定义而不存放视图对应的数据 视图是一个虚表 用户可以在视图上再定义视图 基本表 本身独立存在的表 SQL中一个 ...

  2. SQL Server游标 C# DataTable.Select() 筛选数据 什么是SQL游标? SQL Server数据类型转换方法 LinQ是什么? SQL Server 分页方法汇总

    SQL Server游标   转载自:http://www.cnblogs.com/knowledgesea/p/3699851.html. 什么是游标 结果集,结果集就是select查询之后返回的所 ...

  3. oracle之SQL的数据类型

    SQL的数据类型 3.1 四种基本的常用数据类型(表的字段类型) 1.字符型, 2.数值型,3.日期型,4.大对象型 3.1.1 字符型:    char         固定字符,最长2000个   ...

  4. 为更好地设计数据库,重新整理sql server数据类型

    我们在平常开发过程中,在设计数据的时候,经常碰到数据类型选择的问题,为了更快,更合适地选择正确的数据类型,所以在这里做个总结. 分类 sql server 数据类型 c# 数据类型 描述 应用场景 字 ...

  5. SQL Server 数据类型映射

    SQL Server 和 .NET Framework 基于不同的类型系统. 例如,.NET Framework Decimal 结构的最大小数位数为 28,而 SQL Server 的 decima ...

  6. MySql和SQL Server数据类型 对比

    My Sql 数据类型 SQL Server 数据类型 Yes/No bit Smallint(字节型) tinyint Integer(长整型) int Real(单精度浮点型)    real F ...

  7. SQL Server数据类型与SDE库表sde_type对照表

    SDE_column_registry 表管理所有注册列. 警告:如果使用 SQL 界面更改列定义,SDE_column_registry 表中的记录将不会更新.这可能导致之后的任何数据导出失败. S ...

  8. SQL Server 数据类型映射 (ADO.NET)

    SQL Server 数据类型映射 (ADO.NET) .NET Framework 3.5 更新:November 2007 SQL Server 和 .NET Framework 基于不同的类型系 ...

  9. SQL Server数据类型

    转载:http://www.ezloo.com/2008/10/sql_server_data_type.html    数据类型是数据的一种属性,是数据所表示信息的类型.任何一种语言都有它自己所固有 ...

随机推荐

  1. HTML5离线缓存攻击测试

    本实验采用局域网模拟,通过修改本地HOSTS文件来模拟域名以及DNS欺骗.合法网站使用Linux CentOS7的apache服务器搭建,IP为192.168.1.113,HOSTS文件中加入192. ...

  2. PHP命名空间和自动加载初探

    参考资料: PHP手册-语言参考:http://php.net/manual/zh/language.namespaces.php   概要: 1. 声明了命名空间之后,下面的const, funct ...

  3. [解决方案]sql server复制需要有实际的服务器名称才能连接到服务器

    原文:[解决方案]sql server复制需要有实际的服务器名称才能连接到服务器 在配置数据同步的时候,要求相互同步的两台机器的数据库必须通过默认实例名称进行连接.如果你的默认实例已经删掉了,在当前实 ...

  4. 在asp.net 中web.config配置错误页

    每当用户访问错误页面时,会出现不友好的错误页面,所以为了防止这种不友好,我们在web.config中的<system.web>节点下配置 <customErrors>,在出现比 ...

  5. 跨进程访问VCL的一个用例(Delphi6、TurboDelphi测试通过)

    Controls.pas单元中有一个FindControl函数,通过句柄获得对应的TWinControl对象. function FindControl(Handle: HWnd): TWinCont ...

  6. SpringCloud-分布式配置中心【加密-非对称加密】

    案例代码:https://github.com/q279583842q/springcloud-e-book 非对称加密 一.什么是非对称加密(Asymmetric encryption) 二.Jav ...

  7. nice-validator表单验证插件的简单使用

    前言 前端表单校验是过滤无效数据.假数据.有毒数据的第一步,是数据安全的第一道关卡,虽然我们不能100%相信客户端提交的数据(真正的校验还得在服务端进行),但设置前端表单校验也是至关重要的,自己写逻辑 ...

  8. 我所理解的Vue——学习心得体会1(Vue对象)

    初学Vue,总结如下: 1.首先要区分html的dom和js的dom 2.html的dom是View的范畴,js的dom是Model的范畴. 3.vue这库就是创建了伟大的new Vue()对象,把h ...

  9. MCtalk对话学吧课堂:真正的K12在线教育才刚刚开始

    课堂之外的在线教育已经被大部分家庭所熟知,既涌现出了VIPKID等行业独角兽,也有大量致力于科技改变教育的新兴机构获得了快速成长.成立于2014年的学吧课堂就是专注在K12在线教育领域的创新机构,他们 ...

  10. hdoj1009 FatMouse' Trade——贪心算法

    贪心思路:按单位猫粮能兑换到的javaBean从大到小将组合进行排序,总是在当前兑换尽可能多的javabeans 问题描述:点击打开链接 hdoj1009 FatMouse's Trade 源代码: ...