首页 > 数据库 >【数据库系统原理与设计】(六)SQL数据定义、更新及数据库编程

【数据库系统原理与设计】(六)SQL数据定义、更新及数据库编程

时间:2022-11-29 13:00:10浏览次数:41  
标签:文件 数据文件 -- 数据库 编程 SQL 逻辑设备 数据库系统 日志

六. SQL数据定义、更新及数据库编程

6.1 SQL数据定义语言

1. SQL数据定义语言DDL包括:

 

  • 数据库的定义:创建、修改和删除
  • 基本表的定义:创建、修改和删除视图的定义:创建和删除索引的定义:创建和删除

 

 

 

 

6.1.1 数据库的定义

1. 数据库的创建

  • 数据库作为一个整体存放在外存的物理文件中

  • 物理文件(即磁盘文件)有两种:
    • 数据文件,存放数据库中的对象数据
    • 日志文件,存放用于恢复数据库的企业冗余数据
  • 物理文件可以是多个,可以将一个或若干个物理文件设置为一个逻辑设备
  • 数据库可以有多个逻辑设备,必须在定义数据库时进行定义
  • 数据库的对象存放在逻辑设备上,由逻辑设备与物理文件进行联系,从而实现数据库的逻辑模式与存储模式的独立
  • 个数据库创建在物理介质的一个或多个文件上,它预先分配了将要被数据库和事务日志所使用的物理存储空间

  • 存储数据的文件叫做数据文件(data file)
  • 存储日志的文件叫做日志文件(log file)
  • 创建一个新的数据库时,仅创建了一个空壳,必须在这个空壳中创建对象(如表、索引、约束等),才能使用这个数据库
  • 当创建了一个数据库,与该数据库相关的描述信息会存入到数据字典(即数据库系统表)
  • 在创建数据库的时候,必须定义数据库的名字、磁盘文件(含数据文件、日志文件)的逻辑设备名(别名)和物理文件名

 

 2. 创建数据库:

CREATE DATABASE <被创建数据库名>
ON  -- 指定数据库中的数据文件:主数据文件、用户数据文件

    -- 定义主逻辑设备的数据文件
    [PRIMARY] { <filespec> [, ... n ] }  

    -- 定义用户逻辑设备组的数据文件 
    [, { FILEGROUP <filegroupName> {<filespec> [, ... n ]} [, ... n ]} ] ]  

    -- 定义数据库日志逻辑设备的日志文件
    [LOG ON { <filespec> [, ... n ] } ]  
-- <filespec>描述磁盘文件(含数据文件和日志文件)
<filespec> ::= 主要包含以下内容
( [ NAME = <logicalFileName>, ]  -- 逻辑文件名(即别名)
     FILENAME = '<osFileName>'  -- 物理文件名 
  [, SIZE = <size> ]  -- 磁盘文件初始大小
  [, MAXSIZE = { <maxSize> | UNLIMITED } ]  -- 最大可扩展大小
  [, FILEGROWTH = <growthIncrement> ] )  -- 每次扩展的步长

 

eg:创建一个复杂的数据库TempDB

CREATE DATABASE TempDB
ON  -- 定义数据文件
    PRIMARY  --定义主逻辑设备的数据文件(共一个)
        ( NAME = TempDev,  
          FILENAME = 'd:\TempData\TempDev.mdf' ,  --数据文件的物理文件名
          SIZE = 5,
          FILEGROWTH = 2),


     FILEGROUP TempHisDev   -- 定义第1个用户逻辑设备组1的数据文件(共一个)
        ( NAME = TempHisDev,
          FILENAME = 'd:\TempData\TempDev.mdf' ,  --用户逻辑设备(组1)的物理文件名
          SIZE = 10,
          FILEGROWTH = 5)
  

     FILEGROUP TempHisDev1   -- 定义第2个用户逻辑设备组2的数据文件(共两个)
        ( NAME = TempHisDev1,
          FILENAME = 'd:\TempData\TempDev1.mdf' ,  --用户逻辑设备(组2)的第1个物理文件名
          SIZE = 20,
          FILEGROWTH = 10),

        ( NAME = TempHisDev2,
          FILENAME = 'd:\TempData\TempDev2.mdf' ,  --用户逻辑设备(组2)的第2个物理文件名
          SIZE = 20,
          FILEGROWTH = 10)

                                
LOG ON  -- 定义数据库日志逻辑设备的日志文件(共两个)
        ( NAME = 'TempLogDev1',
          FILENAME = 'd:\TempData\TempLogDev1.ldf' ,  --第1个日志文件的物理文件名
          SIZE = 5MB,
          FILEGROWTH = 2MB),

        ( NAME = 'TempLogDev2',
          FILENAME = 'd:\TempData\TempLogDev2.ldf' ,  --第2个日志文件的物理文件名
          SIZE = 10MB,
          FILEGROWTH = 5MB)

 

3. 修改数据库:

(一次只能修改其中一个选项)

ALTER DATABASE <被修改的数据库名>

    -- 添加 数据文件/逻辑设备(组)/日志文件 到数据库
  {  ADD FILE {<filespec> [, ...n]} 
    | ADD FILEGROUP <filegroupName>
    | ADD LOG FILE {<filespec> [, ... n]}

    --  指定文件添加到<filegroupName>逻辑设备(组)中
      [TO FILEGROUP  <filegroupName>]

    -- 从数据库系统表中删除文件,并物理删除该文件
      | REMOVE FILE <logicalFileName>
    -- 从数据库系统表中删除该逻辑设备(组),并删除其中所有数据文件
      | REMOVE FILEGROUP <filegroupName>

    -- 指定要修改的 文件/逻辑设备(组)(包含文件名、大小、增长量、最大容量)
      | MODIFY FILE <filespec>
      | MODIFY FILEGROUP <filegroupName> <filegroupProperty>
  }

 

eg:修改TempDB数据库:将逻辑文件名(即别名)为TempHisDev1的磁盘文件的初始大小修改为20M

ALTER DATABASE TempDB 
MODIFY FILE ( NAME = TempHisDev1, 
              SIZE = 20MB ) 

 

 4. 删除数据库:

DROP DATABASE <被删除的数据库名>

 

 6.1.2 基本表的定义

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

未完待续...

标签:文件,数据文件,--,数据库,编程,SQL,逻辑设备,数据库系统,日志
From: https://www.cnblogs.com/ZWJ-zwj/p/16934686.html

相关文章

  • vue 路由中编程式导航
    在vue中,实现路由跳转有两种方式1.声明式导航:router-link(一般情况都使用这个)2.编程式导航:this.$router.push  和  this.$router.replace  在什么情况......
  • 学习编程入门最适合的五大网站
    众所周知,浅显易懂的教程对于一个初学者的重要性。一、在线教程首先列出一些在线教程网站,这些在线教程网站通常都比较适合入门,可以作为开发学习路上的第一个阶梯,也可以作......
  • sql server 生成自签名证书
    生成证书的步骤1,cd到C:\ProgramFiles(x86)\WindowsKits\8.0\bin\x64 2,执行命令:makecert-r-pe-svc:\test.pvk-n"CN=DESKTOP-0T8FP81"-b01/01/2000-e01/01/20......
  • mysql数据库管理
    mysql数据库管理过程分为:创建数据库、修改数据库、删除数据库和查看数据库四种类型。然后今天分享的事手动创建数据库:手动创建mysql首先第一步应该创建一个数据库mysql>cre......
  • oracle 使用sqlload导入外部数据
    使用SQLload大批量导入数据第一步:创建表CREATETABLE"TESTHT"."DEMO"( "ID"VARCHAR2(20BYTE)NOTNULLENABLE, "NAME"VARCHAR2(20BYTE), "AGE"VAR......
  • linux 下安装以及配置postgresql
    1、准备好资源 下载 PostgreSQL官网下载地址  ​​https://www.postgresql.org/ftp/source/v12.2/​​​  我这里下载的是 ​​postgresql-12.2.tar.gz​​ 压缩包......
  • SQLSERVER判断是否为数字ISNUMERIC
    从SQLSERVER2005新增isnumeric函数,返回1则字符串是数值,返回0则认为不是数值但里面有些其他的字符也返回1,不知道是怎么个思路,是不是花旗国的规则?SELECTISNUMERIC('123......
  • mysql索引是不是越多越好
    1.数据量小的表不需要建立索引,建立会增加额外的索引开销2.不经常引用的列不要建立索引,因为不常用,即使建立了索引也没有多大意义。对经常用于查询的字段应该创建索引。3.经......
  • Freesql ORM 多条件枚举Sum
    反射枚举desc建拉姆达查询sum///<summary>///创建lambda表达式:p=>p.propertyName///</summary>///<typeparamname="T"></ty......
  • Oracle、Mysql 专业技术服务(兼职)
    Oracle、MySQL专业服务(兼职):专家级服务:灾难恢复、紧急性能优化、重大事故处理、重大事件保障,重大项目迁移(EBS\SAP\TB级别数据\0停机迁移\AIXtox86)、改造、升级。 一......