• 数据库系统原理笔记(4)


    在SQL中定义关系模式

    SQL中的关系

    SQL区分三类关系:

    1.存储的关系,称为(table),类似于excel中的sheet,其在数据库中存储,用户可以依此对其元组进行查询和更新。

    2.视图(view),通过计算来定义的关系。这种关系并不在数据库中促成农户,而是在需要上的自定义构造。

    3.临时表,是在执行数据查询和更新时由SQL处理程序临时构造。这些临时表会在处理结束后被删除而不会存储在数据库里。

    数据类型

    关系中所有属性都必须具有数据类型,而这些数据类型也是SQL系统所支持的。

    1.可变长度或固定长度字符串,具体体现为CHAR(n)(最大为n个字符的固定长度字符串)VARCHAR(n)(最多只有n个字符的字符串)

    具体实现的时候,前者在占用不足的情况下会填充空格,而后者则是直接添加一个结束符号或者字符长度值。

    2.固定或可变长度的位串

    位串和字符串类似,但是它们的值是由比特而不是由字符组成,类型BIT(n)表示长度为n个比特的位串。BIT VARYING(n)表示最大长度为n的位串。

    3.BOOLEAN

    该类属性表示逻辑值,具体可能值是TURE、FALSE和UNKNOW

    4.类型INT和INTEGER(二者同义)

    这表示典型的整数值,类型SHORTINT也表示整数,但是表示的位数可能小写,具体取决于实现。

    5.浮点值

    类型FLOAT和REAL(二者同义),表示典型的浮点数值。高精度浮点值使用DOUBLE PRECISION。

    SQL还指定了小数点后位数的浮点类型,例如DECIMAL(n,d)表示n位有效数字的十进制数,而小数点位于右数第d位

    6.日期和时间

    这分别通过DATA和TIME数据类型表示

    简单的表定义

    保留字(关键字)CREATE TABLE

    CREATE TABLE Movies(
        title CHAR(100);
        year INT,
        length INT,
        genre CHAR(100),
        studioName CHAR(30),
        producerC# INT,
    );
    

    修改关系模式

    删除某个关系R

    DROP TABLE R;

    修改关系

    修改操作语句关键字ALTER TABLE,其后加上关系的名字,后还可以接选项,最重要的两种就是:

    ①ADD后面加上属性名字和数据类型
    ②DROP后面加上属性名字

    例如 修改关系MovierStar,为其添加属性phone

    语句为ALTER TABLE MovieStar ADD phone CHAR(16);

    另一个例子则是ALTER TABLE MovieStar DROP birthdate;

    默认值

    创建或者修改时,通常建议使用NULL值来代替该位置上的“真实值” 有的时候也可能是使用默认值

    声明的时候,可以加上保留字DEFAULT和一个合适的值。要么是NULL,要么是常量。

    例如使用默认值进行生命

    gender CHAR(1) DEFAULT '?',
    birthdate DATE DEFAULT DATE '0000-00-00'
    

    至于其他例子,例如在新增属性phone时,可以声明默认值为'unlisted'

    语句为ALTER TABLE MovieStar Add phone CHAR(16) DEFAULT 'unlisted';

    键的声明

    声明键的方法:

    ①属性被列入关系模式的时候,声明其是键(键仅由单个属性组成)
    ②在模式声明的项目表中增加表象,声明一个或一组属性是键(键由单个或者多个属性组成)

    有两种键的声明方式:

    ①PRIMARY KEY (不允许NULL值存在)
    ②UNIQUE (允许NULL值存在)

    以下是几个常见的例子;

    //使用方式①声明
    CREATE TABLE MovieStar(
      name CHAR(30) PRIMARY KEY,
      address VARCHAR(255),
      gender CHAR(1),
      birthdate DATE
    );
    
    //使用方式②声明
    CREATE TABLE MovieStar(
      name CHAR(30),
      address VARCHAR(255),
      gender CHAR(1),
      birthdate DATE,
      PRIMARY KEY(name)
    );
    
    //只使用方式②声明,因为涉及到了多个属性作为键
    CREATE TABLE MovieStar(
      name CHAR(30),
      address VARCHAR(255),
      gender CHAR(1),
      birthdate DATE,
      PRIMARY KEY(name,birthdate)
    );
    
  • 相关阅读:
    ssh密钥讲解
    Python之paramiko模块
    Python之socket编程进阶版
    linux内socket服务器无法连接windows
    Python之socket编程
    linux(centOS7,mini),python环境的搭建
    Python 之异常处理机制
    pytho常用模块2——random
    Hadoop基础(二):从Hadoop框架讨论大数据生态
    Hadoop基础(一):概论
  • 原文地址:https://www.cnblogs.com/tcswuzb/p/16037103.html
Copyright © 2020-2023  润新知