MySQL --- 图形化工具&DDL表结构操作

目录

一. 图形化工具

1. 介绍

2.3.2 安装

2.3.3 MySQL图形化管理工具使用

二. 表操作

2.1 MySQL-DDL-表结构操作-创建

2.3.1 创建表结构

2.3.1.2 约束

2.2 MySQL-DDL-表结构操作-数据类型

数值类型

字符串类型

日期时间类型

2.3.1 MySQL-DDL-表结构操作-查询&修改&删除

2.3.2 表结构的查询

 2.3.3 修改

2.3.4 删除

 小结:


一. 图形化工具

1. 介绍

前面学习了DDL中关于数据库操作的SQL语句,在编写这些SQL时,都是在命令行当中完成的。在命令行当中来敲这些SQL语句很不方便,主要的原因有以下 3 点:

  1. 没有任何代码提示。(全靠记忆,容易敲错字母造成执行报错)
  2. 操作繁琐,影响开发效率。(所有的功能操作都是通过SQL语句来完成的)
  3. 编写过的SQL代码无法保存。

在项目开发当中,通常为了提高开发效率,都会借助于现成的图形化管理工具来操作数据库。

目前MySQL主流的图形化界面工具有以下几种:MySQL客户端工具-图形化工具

我们只需要熟悉这众多工具当中的一个就可以了,因为其它工具的使用都大同小异。

DataGrip是JetBrains旗下的一款数据库管理工具,是管理和开发MySQL、Oracle、PostgreSQL                   的理想解决方案。

2.3.2 安装

说明:DataGrip这款工具可以不用安装,因为Jetbrains公司已经将DataGrip这款工具的功能已经               集成到了 IDEA当中,所以我们就可以使用IDEA来作为一款图形化界面工具来操作Mysql数             据库。

2.3.3 MySQL图形化管理工具使用

2.2.3.1 连接数据库

1、打开IDEA自带的Database

2、配置MySQL 

3、输入相关信息

输入 comment 备注信息 ; 输入连接的 Host 主机地址 , 默认 localhost; 输入用户名 , 默认 root ;输入密码 , 安装 mysql 的时候 , 设置的 mysql 的访问密码 。 然后点击 Download 下载数据库连接驱动。

4. 驱动下载完成之后, 点击 Test Connection。 如果显示 Successed 就说明连接成功了。 然后点      击 OK 按钮,连接数据库。

5、测试数据库连接

 6、保存配置

4.3 展示所有数据库 

默认情况下,连接上了MySQL数据库之后, 数据库并没有全部展示出来。 需要选择要展示哪些数据库。具体操作如下: 

2.2.3.2 操作数据库

创建数据库:

 

  • 有了图形化界面工具后,就可以方便的使用图形化工具:创建数据库,创建表、修改表等DDL操作。
  • 其实工具底层也是通过DDL语句操作的数据库,只不过这些SQL语句是图形化界面工具帮我们自动完成的。

查看所有数据库:

 

 切换数据库:

 删除数据库:

如果我们使用了图形化界面工具,我在这个console控制台当中所编写的sql语句,我将这个标签页一关,下一次怎么找到之前所编写的SQL呢?

  • 点击这个连接,右键Jump to Query Console

  • 点击Console

  • 然后就可以看到之前所编写的SQL语句了:

 总结:通过图形化工具来简化数据库的操作,从而来提高开发效率。

二. 表操作

2.1 MySQL-DDL-表结构操作-创建

学习完了DDL语句当中关于数据库的操作之后,接下来我们继续学习DDL语句当中关于表结构的操作。

关于表结构的操作也是包含四个部分:创建表、查询表、修改表、删除表。

2.3.1 创建表结构

重点掌握创建表结构的基本语法,以及在建表的时候如何位字段来添加对应的约束。

2.3.1.1 语法

create table  表名(
	字段1  字段1类型 [约束]  [comment  字段1注释 ],
	字段2  字段2类型 [约束]  [comment  字段2注释 ],
	......
	字段n  字段n类型 [约束]  [comment  字段n注释 ] 
) [ comment  表注释 ] ;

注意: [ ] 中的内容为可选参数; 最后一个字段后面没有逗号

  • comment 表注释:就是给这个表来添加一个注释信息,就相当于是一个备注,来标识一下这                                张表它是用来存放什么数据的。
  • 括号当中定义表结构当中一个一个的字段,comment来描述这个字段是用来做什么的。
  • 一个字段描述完毕之后,通过逗号来进行分隔,然后再来描述第二个字段,最后一个字段描述完毕之后就不用再加逗号了。
    在字段的基本信息描述完毕之后来指定约束,如果有多个约束,用空格隔开。

案例:创建tb_user表

  • 对应的结构如下:

  • 建表语句: 
-- DDL:表结构
-- 创建:基本语法
create table tb_user(
    id int comment 'ID,唯一标识', # id是一行数据的唯一标识,不能重复
    username varchar(20) comment '用户名',
    name varchar(10) comment '姓名',
    age int comment '年龄',
    gender char(1) comment '性别'
) comment '用户表';
  • 进行字段描述时要指定各个字段的字段类型。
  • 在MySQL当中字符串类型用varchar(),不用String,括号里面指定这个字符串最长可以存储多少位,比如我就指定20,就代表这个字段最长只能存储20个字符,超出这个范围就会报错。
  • 另外一个字符串类型char(),如果括号里面指定1就代表它里面只能存储1位。

数据表创建完成,接下来我们还需要测试一下是否可以往这张表结构当中来存储数据。

双击打开tb_user表结构,大家会发现里面没有数据:

添加数据:

此时我们再插入一条数据:

 我们之前提到过:id字段是一行数据的唯一标识,不能有重复值。但是现在数据表中有两个相同的id值,这是为什么呢?

  • 其实我们现在创建表结构的时候, id这个字段我们只加了一个备注信息说明它是一个唯一标识,但是在数据库层面呢,并没有去限制字段存储的数据。所以id这个字段没有起到唯一标识的作用。

想要限制字段所存储的数据,就需要用到数据库中的约束。

2.3.1.2 约束

导学:掌握各种约束以及约束的具体作用

概念:所谓约束就是作用在表中字段上的规则,用于限制存储在表中的数据,用来限制这个字段               当中所存储的数据的。

作用:就是来保证数据库当中数据的正确性、有效性和完整性。

在MySQL数据库当中,提供了以下5种约束:

约束描述关键字
非空约束限制该字段值不能为nullnot null
唯一约束保证字段的所有数据都是唯一、不重复的unique
主键约束主键是一行数据的唯一标识自带非空且唯一(索引)primary key(auto_increment自增)
默认约束保存数据时,如果未指定该字段值,则采用默认约束当中所指定的默认值default
外键约束让两张表的数据建立连接,从而保证数据的一致性和完整性foreign key
  • 每个表只能定义一个主键!
  • 通过auto_increment关键字就可以让主键自动往上增长,默认它会从1自动往上增长。 
  • 主键自增:auto_increment,在图形化界面工具当中叫做:Auto inc

  •  每次插入新的行记录时,数据库自动生成id字段(主键)下的值
     具有auto_increment的数据列是一个正数序列开始增长(从1开始自增)

  • 对于外键约束我们要想操作,至少得有两张表。

案例:创建tb_user表

  • 对应的结构如下:

要求在上述的表结构中:

  • id 是一行数据的唯一标识
  • username 用户名字段是非空且唯一的
  • name 姓名字段是不允许存储空值的
  • gender 性别字段是有默认值,默认为男
-- 创建:基本语法(约束)
create table tb_user(
    id int primary key auto_increment comment 'ID,唯一标识', # id是一行数据的唯一标识,不能重复
    username varchar(20) not null unique comment '用户名',
    name varchar(10) comment '姓名',
    age int comment '年龄',
    gender char(1) default '男' comment '性别'
) comment '用户表';

在运行之前删除刚才所创建的表结构,然后再来执行新创建的表。

 generated:自动增长的意思。

2.2 MySQL-DDL-表结构操作-数据类型

导学:创建表结构的时候所需要指定的字段的数据类型以及各种数据类型之间的区别是什么,以               及如何来选择合适的数据类型。

char()和varchar()都是用来描述字符串的,这两种数据类型之间又有什么区别呢?

掌握MySQL当中常见的数据类型以及它们的区别:

在上面建表语句中,我们在指定字段的数据类型时,用到了int 、varchar、char,那么在MySQL中除了以上的数据类型,还有哪些常见的数据类型呢? 接下来,我们就来详细介绍一下MySQL的数据类型。

MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

在SQL语句当中,字符串以及日期时间类型都需要引号引起来,单引号双引号都可以。

数值类型
类型大小有符号(SIGNED)范围无符号(UNSIGNED)范围描述
TINYINT / tinyint1byte(-128,127)(0,255)小整数值
SMALLINT / smallint2bytes(-32768,32767)(0,65535)大整数值

MEDIUMINT /

mediumint

3bytes(-8388608,8388607)(0,16777215)大整数值

INT/INTEGER

int / integer

4bytes(-2147483648,2147483647)(0,4294967295)大整数值
BIGINT / bigint8bytes(-2^63,2^63-1)(0,2^64-1)极大整数值
FLOAT / float4bytes(-3.402823466 E+38,3.402823466351 E+38)0 和 (1.175494351 E-38,3.402823466 E+38)单精度浮点数值
DOUBLE / double8bytes(-1.7976931348623157 E+308,1.7976931348623157 E+308)0 和 (2.2250738585072014 E-308,1.7976931348623157 E+308)双精度浮点数值
DECIMAL / decimal依赖于M(精度)和D(标度)的值依赖于M(精度)和D(标度)的值小数值(精确定点数)

 

  • 在整形中我们默认使用的都是[有符号]的,当然我们也可以加上unsigned关键字,定义成无符号的类型,那么对应的取值范围就会发生改变。 比如:tinyint unsigned的取值范围为0~255。
  • 所谓有符号取值范围指的是允许出现负数的话,它的取值范围是多少。
  • 而无符号取值范围指的就是如果不允许出现负数,它的取值范围又是多少。
  • 无论是有符号取值范围还是无符号取值范围,它们的取值范围的宽度都是一样的,只不过就是在无符号取值范围当中就是将有符号取值范围负数的这一部分宽度是扩充到了正数这一部分而已。
  • 随便写一个数值类型默认是有符号的,如果想指定的是无符号的,需要在数值类型后面加unsigned,这就代表这个数值类型它是一个无符号的。
  • unsigned:无符号的,无符号整数

  • 在进行浮点数运算的时候是很容易出现精度损失问题的,所以在JDK当中给我们提供了一个类叫做BigDecimal,而在MySQL当中也给我们提供了一种数据类型,叫做Decimal,这种数据类型它在底层是以字符串的形式来处理小数的,这样就可以避免精度损失。

  • 在指定float,double,decimal这三种数据类型的时候,需要指定两个参数,分别是整个数字的长度(整数位 + 小数位)以及小数位个数。

  • 所谓整个数字长度指的是整数位+小数位,小数位也就是说最多只能保留x位小数

示例: 
    年龄字段 ---不会出现负数, 而且人的年龄不会太大
	age tinyint unsigned
	
	分数 ---总分100分, 最多出现一位小数
	score double(4,1)
  • 我们要尽可能在业务允许的情况下选择占用磁盘小的数据类型,这样就可以节省磁盘空间。

字符串类型
类型大小描述
char0-255 bytes定长字符串(需要指定长度)
varchar0-65535 bytes变长字符串(需要指定长度)

TINYBLOB /  tinyblob

0-255 bytes不超过255个字符的二进制数据
TINYTEXT / tinytext0-255 bytes短文本字符串
BLOB / blob0-65 535 bytes二进制形式的长文本数据
TEXT / text0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

char(10) --- 定长字符串: 最多只能存10个字符,如果超出十个字符它直接报错如果不足10个字符,它也会占用10个字符空间,其它空位它会使用空字符来占位。举例,如果你存储的是AB,它依然占用十个空间,其它的八位它也会使用空字符来占位,也就是说,只要你存储的字符数是小于等于10的,全部占十个空间,而如果你存储超过了十个字符,它就直接报错了。

varchar(10) --- 变长字符串:最多只能存10个字符,如果超出十个字符它直接报错如果不足10个字符, 它需要判断字符的长度,按照实际长度存储。举例:假如说我就存储一个A,它就只会占用一个字符空间;如果存储的是AB,它就会占用两个字符空间;如果存储的是ABC,它就只会占用三个字符空间。varchar()最大容量为65535个字节!

  • 单表最大行限制65535个字节!

char()与varchar()区别:

  • 对于char()这种数据类型来说,相对于varchar()它不需要判断字符的长度,所以它的性能相对来说会高一点而对于varchar()来说,它的性能相对来说会低一点,因为它需要去判断字符的长度,根据实际长度进行存储。
  • 但是,对于varchar()来说,由于它是按照实际长度存储的,所以它会更节省空间一些。而对于char(10)来说,我即使存储一个字符,它也占用十个空间,我存储两个字符,它也占用十个空间,所以相对来说会浪费空间一些。
  • char()就是所谓的使用空间来换时间,而varchar()就是使用时间来换空间。
  • char 是固定长度的,而 varchar 是可变长度的
     
  • 长度固定选择char(),长度不固定选择varchar()。
  • char 最多可以存放 255 个字符,varchar 的最大长度为 65535 个字节

char 与 varchar 都可以描述字符串:

  • char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。
  • 而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性能会更高些。

对于下面这些数据类型,主要是分为两类:一个是blob后缀,一个是text后缀。

如果是blob后缀,存储的是二进制的数据,比如我们要存储一些视频,音频这些文件,我们就可以使用blob后缀的这种数据类型。而在真实的企业开发当中,像图片,音频,视频这些文件,其实并不会直接存储在数据库当中,而是存储在专业的文件服务器当中,所以blob后缀的这些数据类型其实也是非常少用的。

而text后缀它是存储的是文本字符串。比如我们要存储一篇长篇小说,那我们就可以使用带text后缀的这些数据类型。

不同的数据类型它能够支持的存储范围也是不一样的。

示例: 
    用户名 username ---长度不定, 最长不会超过20
	username varchar(20)
	
	手机号 phone ---固定长度为11
	phone char(11)
日期时间类型
类型大小范围格式描述
DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值
TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
YEAR11901 至 2155YYYY年份值
DATETIME81000-01-01 00:00:00 至 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳
示例: 
    生日字段  birthday ---生日只需要年月日  
    birthday date
    
    创建时间 createtime --- 需要精确到时分秒
    createtime  datetime    /    update_time  datetime

2.3.1.4 案例 

导学:怎么样基于图形化界面的方式去创建表结构 ?我们怎么样去设计一张表,设计一张表的基               本依据和流程是什么?

表结构创建的语法、约束以及数据类型都已经学习完了,接下来就来完成一个案例,通过这个案例要能够掌握图形化工具的方式来创建表结构,并清楚表结构的设计依据以及基本流程。

需求:根据产品原型/需求创建表(设计合理的数据类型、长度、约束)

案例需求:根据页面原型以及需求来创建表,为这张表结构要设计合理的数据类型,合理的字段                      长度以及约束。

  • 资料中提供的《黑马-tlias智能学习辅助系统》页面原型,设计员工管理模块的表结构(暂不考虑所属部门字段)

产品的页面原型及需求文档如下: 

在新增员工这个对话框当中承载了这么一个form表单:

需求文档

我们要设计的这张表是用来存储员工信息的,也就是员工表。那我们要设计这张表,我们就得清楚这张表当中包括哪些字段,各个字段的类型,字段的长度限制,字段的约束。

所以,我们在设计表结构的时候只需要根据页面原型以及需求文档当中的这些描述来定义表结构当中的字段以及约束就可以。

步骤:

  1. 阅读(参照)产品原型及需求文档,看看里面涉及到哪些字段。
  2. 查看需求文档说明,确认各个字段的类型以及字段存储数据的长度限制。
  3. 在页面原型中描述的基础字段的基础上,再增加额外的基础字段。

我们创建一张表上来之后,我们先加一个字段就是id,id就是这一行数据的唯一标识,comment:主键ID。

使用SQL创建表:

create table emp (
  id int unsigned primary key auto_increment comment 'ID',
  username varchar(20) not null unique comment '用户名',
  password varchar(32) default '123456' comment '密码',
  name varchar(10) not null comment '姓名',
  gender tinyint unsigned not null comment '性别, 说明: 1 男, 2 女',
  image varchar(300) comment '图像',
  job tinyint unsigned comment '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管',
  entrydate date comment '入职时间',
  create_time datetime not null comment '创建时间',
  update_time datetime not null comment '修改时间'
) comment '员工表';

直接基于图形化界面方式来操作这也是现在企业项目开发当中创建表结构的主要方式。
除了使用SQL语句创建表外,我们还可以借助于图形化界面来创建表结构,这种创建方式会更加直观、更加方便。

操作步骤如下:

 1. 在指定操作的数据库上,右键New ==> Table

 2. 编辑表结构的相关信息

我们创建一张表上来之后,我们先加一个字段就是id,id就是这一行数据的唯一标识,comment:主键ID。

为该字段添加注释信息
为该字段添加注释信息​

  • 在性别当中,它要存储的就是男或者女,马上想到字符串char(1),但是在项目开发阶段,我们一般并不会直接这么去存,因为我们在界面展示的时候,有时候这个性别我们要展示的是男性女性,有时候要展示的是男士女士,有时候可能展示的还是英文的很灵活,所以在数据库当中我们并不会直接存储男或者是女,我可以存储一个数字,使用编号来存储,比如我就约定用1来代表男,来代表女,那也就意味着这个字段要么存1,要么存2,那我就可以使用范围最小的整型 --- tinyint,而由于gender性别里面它存储的就是1或者是2,而且不需要存储负数,所以在后面可以加上关键字 --- unsigned,代表着是一个无符号的tinyint。
  • 图像就是图片,它的字段类型我们需要做一个说明:这里并不是直接存图片,而是存储图片的访问路径,我们打开浏览器可以看到每一张图片它都有对应的访问路径,我们存储的其实这个图片的访问路径,就是一个字符串,而且这个字符串是比较长的而且也不是固定长度的,所以我们可以设置一个varchar()类型,存储的就是图片的访问路径。
  • 对于我们这一类后台管理系统的表结构来说,我们一般都会在表结构当中先加两个通用字段,一个是创建时间,一个是修改时间。
  • 创建时间它是用来记录这条数据产生的时间,也就是插入的时间。
  • 而修改时间,代表的是每一次修改我都需要更新一下这个时间,将其更新为当前时间。 

2.3.1.5 设计表流程

  • 直接基于页面原型所分析出来的这些字段我们叫原型字段。那我们就可以分析出这些字段它的类型,我们要给这些字段建立什么样的约束,这些基于我们所提供的页面原型以及需求文档都可以分析出来。
  • 分析出来之后,我们还需要再加上一部分基础字段:比如像id这样的主键字段,create_time、update_time这样的基础字段。
  • 原型字段再加上这一部分基础字段之后,就组成了这样一个表结构,这就是我们表结构设计的基本流程。

说明:

  • create_time --- 创建 / 插入时间:记录的是当前这条数据插入的时间。 
  • update_time --- 修改 / 更新时间:记录当前这条数据最后更新的时间。

  • 我们每一次更新这条数据,都需要将update_time更新为当前时间。

通过上面的案例,我们明白了,设计一张表,基本的流程如下:

  1. 阅读页面原型及需求文档
  2. 基于页面原则和需求文档,确定原型字段(类型、长度限制、约束)
  3. 分析出这些原型字段之后再增加表设计所需要的业务基础字段(id主键、插入时间、修改时间 / 更新时间)就组成了一张完整的表结构。
设计表结构的基本流程

2.3.1 MySQL-DDL-表结构操作-查询&修改&删除

表结构的查询,修改和删除操作:对于这一部分的DDL语句,可以不做重点掌握,但是需要掌握的是图形化界面的操作方式。

2.3.2 表结构的查询

表结构的查询这里涉及到三条SQL语句:

  • 关于表结构的查询操作,工作中一般都是直接基于图形化界面操作。  

-- DDL:查看表结构
-- 查看:查询当前数据库下所有的表
show tables;

-- 查看:查看指定表的表结构
desc tb_emp;

-- 查看:数据库的建表语句
show create table tb_emp;

 查询当前数据库所有表:show tables;

查看指定表结构:desc 表名 ;

desc 表名 ;   查看指定的表结构

可以查看指定表的字段、每个字段的类型以及这个字段是否可以为NULL / 存null值,以及这个字段是否存在 / 有默认值等信息。

查询指定表的建表语句:show create table 表名 ;

 

 

 2.3.3 修改表结构

  • 关于表结构的修改操作,工作中一般都是直接基于图形化界面操作。 
  • 修改表结构,主要涉及到两个部分,一个部分就是关于表中字段的操作,另外一个方面就是表名的操作。
  • 我们要修改某一张表当中的字段,前面都需要加上一个关键字:alter  table后面指定我们要操作哪一个表名。
  • 如果是添加字段,后面跟上关键字add,后面指定字段的信息
  • 如果是修改字段类型,需要用到的关键字是modify,后面跟上字段的描述信息。
  • 如果需要修改字段名,我们需要加上关键字change,后面跟上字段的描述信息。
  • 如果是删除字段,后面跟上关键字drop column,后面跟上字段名。
  • 这是关于表中字段的操作。
  • 如果是修改表名,我们只需要通过关键字rename  table   指定要操作的表名   to之后跟上新的表名。
  • alter:修改

-- DDL:修改表结构
-- 修改:为表 tb_emp 添加字段 qq varchar(11)
alter table tb_emp add qq varchar(11) comment 'QQ';

-- 修改:修改 tb_emp 字段类型 qq varchar(13)
alter table tb_emp modify qq varchar(13) comment 'QQ';

-- 修改:修改 tb_emp 字段名 qq 为 qq_num varchar(13)
alter table tb_emp change qq qq_num varchar(13) comment 'QQ';

-- 修改:删除 tb_emp 的 qq_num字段
alter table tb_emp drop column qq_num;

-- 修改:将tb_emp 表名修改为emp
rename table tb_emp to emp;

 添加字段

alter table 表名 add  字段名  类型(长度)  [comment 注释]  [约束];

 案例: 为tb_emp表添加字段qq,字段类型为 varchar(11)

alter table tb_emp add  qq  varchar(11) comment 'QQ号码';

 图形化操作:添加字段

 修改数据类型

alter table 表名 modify  字段名  新数据类型(长度);
alter table 表名 change  旧字段名  新字段名  类型(长度)  [comment 注释]  [约束];

案例:修改qq字段的字段类型,将其长度由11修改为13

alter table tb_emp modify qq varchar(13) comment 'QQ号码';

 案例:修改qq字段名为 qq_num,字段类型varchar(13)

alter table tb_emp change qq qq_num varchar(13) comment 'QQ号码';

图形化操作:修改数据类型和字段名

 删除字段

alter table 表名 drop 字段名;

案例:删除tb_emp表中的qq_num字段

alter table tb_emp drop qq_num;

图形化操作:删除字段

修改表名 

rename table 表名 to  新表名;

案例:将当前的tb_emp表的表名修改为emp

rename table tb_emp to emp;

图形化操作:修改表名

2.3.4 删除

关于表结构的删除操作,工作中一般都是直接基于图形化界面操作。 

 删除表语法:
drop  table [ if exists ]  表名;
  • if exists :只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不加该参数项,删除一张不存在的表,执行将会报错)。
  • 注意:当我们在删除表结构的时候,表中的全部数据也都会被删除。

案例:如果tb_emp表存在,则删除tb_emp表

drop table if exists tb_emp;  -- 在删除表时,表中的全部数据也会被删除。

图形化操作:删除表

 小结:

  • 通过DDL语句来操作数据库以及操作表结构,也就是数据库设计部分的内容。
  • 在实际的项目开发当中,DDL语句的操作已经被图形化界面工具替代了,而且使用图形化界面工具很方便的就可以来操作数据库以及表结构,
查看表结构:desc 表名;

至此数据库设计部分的基础内容学习完毕!

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SQL Server 数据库设计 一、数据库设计的必要性 在实际的软件项目中,如果系统中需要存储的数据量比较大,需要设计的比较多,之间的关系比较复杂,那我们就需要进行规范的数据库设置。如果不经过数据库的 设计,我们构建的数据库不合理、不恰当,那么数据库的维护、运行效率会有很大的问 题。这将直接影响到项目的运行性和可靠性。 二、什么是数据库设计 数据库设计实际上就是规划和结构数据库中的数据对象以及这些数据对象之间的关系 过程。 三、数据库设计的重要性 Ø 不经过设计的数据库或是设计糟糕的数据库很可能导致 1、 数据库运行效率地下 2、 更新、删除、添加数据出现问题 Ø 良好设计的数据库 1、 执行效率高 2、 使应用程序更便于开发 3、 扩展性好 4、 维护性好 四、数据模型 数据模型就像是数据间联系的一个轮廓图,整个模型就像一个框架。 如果按照记录间联系的示方式,对数据模型进行分类,可以分为:层次模型、网状模 型、关系模型。前两种又称为格式化数据模型。数据模型的好坏直接影响到数据库的性 能,所以数据模型的选择是数据库设计的首要任务。 Ø 实体-关系(E-R)数据模型 E-R数据模型(Entity-Relationship data model),即实体- 关系数据模型。E- R数据模型不同于传统的关系数据模型,它不是面向实现,而是面向现实物体的。 Ø 实体(Entity) 数据是用来描述现实中的物体的,而描述的对象都是形形色色的,有具体的、也有抽象 的;有物理上存在的、也有概念性的。凡是可以互相区别而且可以被人们认识的事、物 、概念等统统抽象为实体。多个相同的类型的实体可以称为实体集(Entity set)。因此,在E- R数据模型中,也有型与值之分;实体可以作为型来定义,每个实体可以是它的实例和值 。 Ø 属性(Attribute) 实体一般具体若干特征,这些特征称为实体的属性。而每个属性都有自己的取值范围, 在E-R数据模型中称为值集(value set)。在同一实体集中,每个实体的属性及其值集都是相同的,但可能取不同的值。属 性对应数据库的列。 Ø 关系(Relationship) 实体之间会有各种关系,这些关系抽象为联系。不但实体可以有属性,关系也可以有属 性。 五、数据库设计步骤 Ø 数据库设计可以分为以下几个阶段 1、 需求分析阶段:分析客户的业务需求,特别是数据方面的需求 2、 概要设计阶段:绘制数据库的E- R图,并确认需求文档的正确性和完整性,E- R图是项目的设计人员、开发人员、测试人员,以及和客户进行沟通的重要凭据 3、 详细设计阶段:将概要设计阶段的E- R图转换为数据库,进行逻辑设计,确定各个之间的主外键关系,运用数据库的三范 式进行审核,并进行技术评审。最后决定选哪种数据库(Oracle、SQLServer、MySQL) 来建库、建。 Ø 需求分析阶段:数据库系统分析 秀气分析阶段的重点是调查、收集、分析客户的业务数据需求以及数据的安全性、完整 性需求等。 需求分析步骤: 1、 确认业务需求 2、 标识关系实体 3、 标识每个实体的具有的属性 4、 确认实体之间的关系 Ø 概要设计阶段:绘制E-R图 作为数据库设计者,你需要和项目组内其他成员分享你的设计思路,共同研讨数据库设 计的合理性、安全性、完整性,并确认是否符合客户的业务需求。那么使用E- R图,这种图形化示方式最为直观。 * E-R图中的实体、属性和关系 上面的简单E- R图可以看出用户和收支之间的关系。在上图中可以看出:用矩形示实体,实体是一般 名词;椭圆示属性,一般也是名词;菱形示关系,一般是动词。 * 映射基数 映射基数示可以通过关系与该实体的个数。对于实体集A和B之间的二元关系,可能的 映射基数有: 1、 一对一:也就是A实体中最多只有一个B实体的关联,而B实体的最多只有一个A实体的关 联。用E-R图示: 2、 一对多:A实体可以与B实体任意数量的进行关联,B中的实体最多与A中的一个实体关联 。E-R图示: 3、 多对一:A实体最多与一个B实体进行关联,而B实体可以和任意多个A实体进行关联。E- R图示: 4、 多对多:A实体可以有多个B实体,而B实体也可以有任意多个A实体。E-R图示: * E-R图 E- R图可以以图形化的方式将数据库的整个逻辑结构示出来,组成部分有: 1、 矩形示实体集 2、 椭圆示属性 3、 菱形示关系、 4、 直线用来连接实体集与属性、实体集和关系 5、 直线箭头示实体集之间映射基数 Ø 详细设计阶段:将E-R图转换为 步骤如下: 1、 将各个实体转换为对应的,将各属性转换为对应的列 2、 标识每张的主键 3、 将实体之间的关系转换为之间的主外

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Surpass余sheng军

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值