当前位置: 首页 > news >正文

数据定义语言CREATE的应用

新书速览|SQL Server 2022从入门到精通:视频教学超值版_sql server 2022 出版社-CSDN博客

《SQL Server 2022从入门到精通(视频教学超值版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com)

SQL Server数据库技术_夏天又到了的博客-CSDN博客

数据定义语言(Data Definition Language,DDL)是用于描述数据库中要存储的现实世界实体的语言。作为数据库管理系统的一部分,DDL用于定义数据库的所有特性和属性,例如行布局、字段定义、文件位置,常见的数据定义语句有CREATE DATABASE、CREATE TABLE、CREATE VIEW、DROP VIEW、ALTER TABLE等。本节将分别介绍各种数据定义语句。

5.1.1  CREATE的应用

作为数据库操作语言中非常重要的部分,CREATE用于创建数据库、数据表以及约束等。下面将详细介绍CREATE的具体应用。

1. 创建数据库

创建数据库是在系统磁盘上划分一块区域用于数据的存储和管理,创建数据库时需要指定数据库的名称、文件名称、数据文件大小、初始大小、是否自动增长等内容。SQL Server中可以使用CREATE DATABASE语句,或者通过对象资源管理器创建数据库。这里主要介绍CREATE DATABASE的用法。CREAETE DATABASE语句的基本语法格式如下:

CREATE DATABASE database_name 
[ ON [ PRIMARY ]
NAME = logical_file_name  [ , NEWNAME = new_logical_name ] [ , FILENAME = {'os_file_name' | 'filestream_path' } ] [ , SIZE = size [ KB | MB | GB | TB ] ] [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ] [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB| % ] ] 
]   [ ,...n ]
  1. database_name:数据库名称,不能与SQL Server中现有的数据库实例名称相冲突,最多可以包含128个字符。
  2. ON:指定显式定义用来存储数据库中数据的磁盘文件。
  3. PRIMARY:指定关联的<filespec>列表定义的主文件,在主文件组的<filespec>项中指定的第一个文件将生成主文件,一个数据库只能有一个主文件。如果没有指定PRIMARY,那么CREATE DATABASE语句中列出的第一个文件将成为主文件。
  4. LOG ON:指定用来存储数据库日志的日志文件。LOG ON后跟以逗号分隔的用以定义日志文件的<filespec>项列表。如果没有指定LOG ON,将自动创建一个日志文件,其大小为该数据库的所有数据文件大小总和的25%或512KB,取两者之中的较大者。
  5. NAME:指定文件的逻辑名称,引用文件时在SQL Server中使用的逻辑名称。
  6. FILENAME:指定创建文件时由操作系统使用的路径和文件名,执行CREATE DATABASE 语句前,指定路径必须存在。
  7. SIZE:指定数据库文件的初始大小,如果没有为主文件提供size,数据库引擎将使用model 数据库中的主文件的大小。
  8. MAXSIZE:指定文件可增大到的最大大小,可以使用KB、MB、GB和TB做后缀,默认值为MB。max_size是整数值。如果不指定max_size,则文件将不断增长直至磁盘被占满。UNLIMITED 表示文件一直增长到磁盘充满。
  9. FILEGROWTH:指定文件的自动增量。文件的FILEGROWTH设置不能超过MAXSIZE设置。该值可以MB、KB、GB、TB或百分比(%)为单位指定。默认单位为MB。如果指定%,则增量大小为发生增长时文件大小的指定百分比。值为0时表明自动增长被设置为关闭,不允许增加空间。

【例5.1】创建名称为test_db数据库,输入语句如下:

CREATE DATABASE test_db ON  PRIMARY 
(
NAME = test_db_data1,        							--数据库逻辑文件名称
FILENAME ='C:\SQL Server 2022\test_db_data.mdf',		--主数据文件的存储位置
SIZE = 5120KB ,      									--主数据文件大小
MAXSIZE =20,      									--主数据文件最大增长空间为20MB
FILEGROWTH =1     									--文件增长大小设置为1MB
)

这段代码创建了一个名称为test_db的数据库,设定数据库的主数据文件名称为test_db_data1,主数据文件大小为5MB,增长大小为1MB。注意,这段代码没有指定创建事务日志文件,但是系统默认会创建一个数据库名称加上_log的日志文件,该日志文件的大小为系统默认值2MB,增量为10%,因为没有设置增长限制,所以事务日志文件的最大增长空间将是指定磁盘上的所有剩余可用空间。

2. 创建数据表

在创建完数据库之后,接下来的工作是创建数据表。所谓创建数据表,指的是在已经创建好的数据库中建立新表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性约束的过程。创建数据表使用CREATE TABLE语句,CREATE TABLE语句的基本语法格式如下:

CREATE TABLE  [database_name.[ schema_name ].] table_name
{column_name  <data_type>
[ NULL | NOT NULL ] | [ DEFAULT constant_expression ] | [ ROWGUIDCOL ]
{ PRIMARY KEY | UNIQUE } [CLUSTERED | NONCLUSTERED][ ASC | DESC ] 
}[ ,...n ]
  1. database_name:要在其中创建表的数据库名称,若不指定数据库名称,则默认使用当前数据库。
  2. schema_name:新表所属架构的名称,若此项为空,则默认新表的创建者在当前架构。
  3. table_name:创建的数据表的名称。
  4. column_name:数据表中的各个列的名称,列名称必须唯一。
  5. data_type:指定字段列的数据类型,可以是系统数据类型,也可以是用户定义数据类型。
  6. NULL | NOT NULL:确定列中是否允许使用空值。
  7. DEFAULT:用于指定列的默认值。
  8. ROWGUIDCOL:指示新列是行GUID列。对于每个表,只能将其中的一个uniqueidentifier 列指定为ROWGUIDCOL列。
  9. PRIMARY KEY:主键约束,通过唯一索引对给定的一列或多列强制创建实体完整性约束。每个表只能创建一个 PRIMARY KEY 约束。PRIMARY KEY 约束中定义的所有列都必须定义为 NOT NULL。
  10. UNIQUE:唯一性约束,该约束通过唯一索引为一个或多个指定列提供实体完整性。一个表可以有多个 UNIQUE 约束。
  11. CLUSTERED | NONCLUSTERED:指示为 PRIMARY KEY 或 UNIQUE 约束创建聚集索引还是非聚集索引。PRIMARY KEY 约束默认为 CLUSTERED,UNIQUE 约束默认为 NONCLUSTERED。在CREATE TABLE语句中,可只为一个约束指定CLUSTERED。如果在为UNIQUE约束指定CLUSTERED的同时又指定了RIMARY KEY 约束,则PRIMARY KEY将默认为NONCLUSTERED。
  12. [ ASC | DESC ]:指定加入表约束中的一列或多列的排序顺序,ASC为升序排列,DESC为降序排列,默认值为ASC。

【例5.2】在test_db数据库中创建员工表tb_emp1,结构如表5-1所示。

表5-1  tb_emp1表结构

字段名称

数据类型

   

id

INT(11)

员工编号

name

VARCHAR(25)

员工名称

deptId

CHAR(2)

所在部门编号

salary

SMALLMONEY

工资

输入语句如下:

USE test_db
CREATE TABLE tb_emp1
(id       INT PRIMARY KEY,name   VARCHAR(25) NOT NULL,deptId  CHAR(2) NOT NULL,salary  SMALLMONEY NULL
);

这段代码将在test_db数据库中添加一个名称为tb_emp1的数据表。读者可以打开表的设计窗口,看到该表的结构,如图5-1所示。

相关文章:

  • python数据分析与可视化
  • 脸爱云管理系统存在任意文件上传漏洞
  • UI设计师面试整理-设计过程和方法论
  • 基于SSM的宠物领养管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)
  • JavaScript网页设计案例深度解析:从理论到实践
  • P10250 [GESP样题 六级] 下楼梯 题解
  • JS网页设计案例
  • 深入解析Excel文件格式:.xls与.xlsx的差异与应用指南
  • [Uninstall] 软件彻底卸载工具的下载及详细安装使用过程(附有下载文件)
  • 前端——js补充
  • 大数据毕业设计选题推荐-国潮男装微博评论数据分析系统-Hive-Hadoop-Spark
  • 大厂面试真题-介绍以下Docker的Overlay网络
  • 【AAOS】CarService -- Android汽车服务
  • 机器学习:opencv--摄像头OCR
  • ireport 5.1 中文生辟字显示不出来,生成PDF报字体找不到
  • 【知识碎片】第三方登录弹窗效果
  • Asm.js的简单介绍
  • CSS 三角实现
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • react 代码优化(一) ——事件处理
  • Web Storage相关
  • webpack+react项目初体验——记录我的webpack环境配置
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 手机端车牌号码键盘的vue组件
  • 详解NodeJs流之一
  •  一套莫尔斯电报听写、翻译系统
  • 原生 js 实现移动端 Touch 滑动反弹
  • k8s使用glusterfs实现动态持久化存储
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • # linux从入门到精通(三)
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #LLM入门|Prompt#3.3_存储_Memory
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (1)Nginx简介和安装教程
  • (23)mysql中mysqldump备份数据库
  • (4)logging(日志模块)
  • (CPU/GPU)粒子继承贴图颜色发射
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Matlab)使用竞争神经网络实现数据聚类
  • (Qt) 默认QtWidget应用包含什么?
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (一)kafka实战——kafka源码编译启动
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)Oracle存储过程编写经验和优化措施
  • (转)菜鸟学数据库(三)——存储过程
  • (转)大型网站架构演变和知识体系
  • (转)机器学习的数学基础(1)--Dirichlet分布