首页 > 数据库 >【数据库】浅析DDL的基础操作

【数据库】浅析DDL的基础操作

时间:2024-01-02 10:38:41浏览次数:63  
标签:数据库 浅析 数据表 字段 student DDL 约束 主键

本文的主要围绕着下面这些问题展开的,在阅读之前可以先自己思考一下问题的答案是什么

  1. 定义数据库和数据表的语法是什么?
  2. 定义数据表时,都有哪些约束?
  3. 设计数据库时,有哪些需要注意的点?

定义数据库的结构和数据表的结构主要使用数据库的DDL语言,DDL的全称是Data Definition Language,中文是数据定义语言。

在DDL中,最常用的就是对数据表的增删改,分别对应的命令是CREATE、DROP和ALTER。

执行DDL的时候,不需要手动COMMIT,就可以完成执行任务

一、操作数据库和数据表

1、对数据库进行定义

CREATE DATABASE dba; // 创建一个名为dba的数据库
DROP DATABASE bda; // 删除一个名为dba的数据库

2、对数据表进行定义

CREATE TABLE [table_name](字段名 数据类型,......)
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
	`id` INT ( 10 ) NOT NULL AUTO_INCREMENT,
	`class_id` INT ( 11 ) NOT NULL,
	`student_name` VARCHAR ( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	`height` FLOAT ( 3, 2 ) NULL DEFAULT 0.00,
	PRIMARY KEY ( `id` ) USING BTREE,
	UNIQUE INDEX `student_name` ( `student_name` ) USING BTREE 
) ENGINE = INNODB CHARACTER 
SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
  • 字段的定义结尾使用英文逗号(,),但是最后一个字段的结束后没有逗号
  • 语句最后以分号(;)作为结束符
  • NOT NULL表明整个字段不能是空值
  • AUTO_INCREMENT代表主键自动增长
  • 数据类型中int(10)代表整数类型,显示长度为11位,括号中的参数11代表的是最大有效显示长度,与类型包含的数值范围大小无关
  • varchar(255)代表的是最大长度为255的可变字符串类型
  • student_name字段的字符编码是utf8,排序规则是utf8_general_ci,代表对大小写不敏感,如果设置为utf8_bin,代表对大小写敏感
  • FLOAT ( 3, 2 )表示值一共显示3位整数,其中2位位于小数点后面,当插入大于1位整数时会报错,小数位数过多时,会四舍五入保留两位小数

3、修改表结构

1.添加字段,比如我在数据表中添加一个age字段,类型为int(11)

ALTER TABLE student ADD (age int(11));

2.修改字段名,将age字段改成student_age

ALTER TABLE student RENAME COLUMN age to student_age

3.修改字段的数据类型,将student_age的数据类型设置为float(3,1)

ALTER TABLE student MODIFY (student_age float(3,1));

4.删除字段, 删除刚才添加的student_age字段

ALTER TABLE student DROP COLUMN student_age;

二、定义数据表的约束

为了保证RDBMS里面数据的准确性和一致性,有时候我们需要对字段添加约束。

主键约束

主键起的作用是唯一标识一条记录,不能重复,不能为空,即UNIQUE+NOT NULL。一个数据表的主键只能有一个。主键可以是一个字段,也可以由多个字段复合组成。

外键约束

外键确保了表与表之间引用的完整性。

一个表中的外键对应另一张表的主键。

外键可以是重复的,也可以为空。

唯一性约束

唯一性约束表明了字段在表中的数值是唯一的,即使我们已经有了主键,还可以对其他字段进行唯一性约束。

唯一性约束和普通索引(NORMAL INDEX)之间是有区别的。唯一性约束相当于创建了一个约束和普通索引,目的是保证字段的正确性,而普通索引只是提升数据检索的速度,并不对字段的唯一性进行约束。

NOT NULL约束

非空约束,该字段不应为空,必须有取值

DEFAULT

表明了字段的默认值。

CHECK约束

用来检查特定字段取值范围的有效性,CHECK约束的结果不能为FALSE,比如我们可以对身高height的数值进行CHECK约束,必须≥0,且<3,即CHECK(height>=0 AND height<3)

三、设计数据库时,有哪些需要注意的点

核心就是简单可复用。简单指的是用更少的表、更少的字段、更少的联合主键字段来完成数据表的设计。可复用则是通过主键、外键的使用来增强数据表之间的复用率。因为一个主键可以理解是一张表的代表。键设计得越多,证明它们之间的利用率越高。

数据表的个数越少越好

数据表越少,证明实体和联系设计得越简洁,既方便理解又方便操作。

数据表中的字段个数越少越好

字段个数越多,数据冗余的可能性越大。设置字段个数少的前提是各个字段相互独立,而不是某个字段的取值可以由其他字段计算出来。当然字段个数少是相对的,我们通常会在数据冗余和检索效率中进行平衡。

数据表中联合主键的字段个数越少越好

设置主键是为了确定唯一性,当一个字段无法确定唯一性的时候,就需要采用联合主键的方式(也就是用多个字段来定义一个主键)。联合主键中的字段越多,占用的索引空间越大,不仅会加大理解难度,还会增加运行时间和索引空间,因此联合主键的字段个数越少越好。

使用主键和外键越多越好

数据库的设计实际上就是定义各种表,以及各种字段之间的关系。这些关系越多,证明这些实体之间的冗余度越低,利用度越高。这样做的好处在于不仅保证了数据表之间的独立性,还能提升相互之间的关联使用率。

标签:数据库,浅析,数据表,字段,student,DDL,约束,主键
From: https://blog.51cto.com/u_15812995/9063833

相关文章

  • 【数据库】基础概念以及主流的DBMS介绍
    最近看了一些数据库的基础知识,这里主要涉及三个问题:DB、DBS和DBMS都是什么意思?主流的DBMS都有哪些,各自都有哪些特点?SQL语言都有哪些分类DB、DBS和DBMSDB(DataBase):就是数据库。数据库表示存储数据的集合,可以理解为多个数据表DBMS(DataBaseManagementSystem):数据库管理系统,可以对......
  • 超级详细的数据库中的事务机制学习笔记
    事务的英文是transaction,从英文中你也能看出来它是进行一次处理的基本单元,要么完全执行,要么都不执行。事务的特性:ACIDA,也就是原子性(Atomicity)。组成物质的基本单位,也是我们进行数据处理操作的基本单位。C,就是一致性(Consistency)。一致性指的就是数据库在进行事务操作后,会由原来的一......
  • TiDB是如何在国有大银行实现数据库业务“一换三”的
    作者:TiDBer_小黑羊最近,看到一个国有大银行的数据库案例,狠狠刷新了我的认知↓三个“国外顶流数据库”没搞定的系统,竟然被一家国产数据库厂商拿下了。可以说,这一次,国产数据库不仅打了翻身仗,还攀上了一个前所未有的高峰。这事儿有多“离谱”?听我给你捋捋↓一、500TB数据,让三大顶流......
  • openGauss学习笔记-181 openGauss 数据库运维-升级-升级流程
    openGauss学习笔记-181openGauss数据库运维-升级-升级流程本章介绍升级到该版本的主要升级过程。图1升级流程图说明:本文档中描述的时间仅供参考,实际操作时间以现场情况为准。表1升级流程执行效率估计步骤建议起始时间耗时(天/小时/分钟)业务中断时长备注......
  • openGauss学习笔记-182 openGauss 数据库运维-升级-升级前准备与检查
    openGauss学习笔记-182openGauss数据库运维-升级-升级前准备与检查本章描述升级前的一些准备操作。182.1升级前准备与检查清单表1升级前准备清单序号升级准备项目准备内容建议起始时间耗时(天/小时/分钟)1收集节点信息收集到数据库涉及节点的名称、IP地址和节......
  • 07.DDL 数据库操作 - 查看
    目录 选择数据库语法查看数据库语法查看数据库的定义信息语法实例查看数据库语法 DATABASES:必选项,用于列出当前用户权限范围内所能查看到的所有数据库名称--查看所有数据库SHOWDATABASES;选择数据库语法 --选择数据库为当前数据库USE数据......
  • Python 安装达梦数据库的问题怎么弄 DPI ?
    如果您想在Python中安装并使用达梦数据库,请按照以下步骤进行:安装DPI(达梦Python接口):您需要首先安装DPI,它是Python与达梦数据库之间的驱动程序。您可以从达梦官方网站下载并安装适用于您的操作系统的DPI。安装Python的数据库接口模块:在Python中使用达梦数据库,您需要安装相应的数据......
  • 《Android期末大作业:使用AndroidStudio开发图书管理系统APP(使用sqlite数据库)》
    AndroidStudio开发项目图书管理系统项目视频展示:引言现在是一个信息高度发达的时代,伴随着科技的进步,文化的汲取,人们对于图书信息的了解与掌握也达到了一定的高度。尤其是学生对于知识的渴求更是与日俱增。图书馆作为学生学习知识的重要场所,作为信息资源的集散地,图书和用户借阅资......
  • druid实现数据库密码加密功能
    数据库密码直接写在配置中,对运维安全来说,是一个很大的挑战。可以使用Druid为此提供一种数据库密码加密的手段ConfigFilter。如果项目已经集成druid,只需按要求配置即可。1、执行命令加密数据库密码找到druid-1.2.20.jar所在的文件夹目录,执行cmd命令,然后执行下面的命令生成数据库......
  • 数据库超线程效果的一个验证
    数据库超线程效果的一个验证背景元旦加班期间,一直跟着同事再查一个项目的卡顿问题.自己想到了一个提高测试环境性能的方法.然后趁着元旦用的人少进行了一下验证.在业务空闲期间,批量进行Oracle数据库的统计信息更新动作.自己一开始担心的是如果数据量很大,执行时......