加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 经验 > 正文

MySQL 设计和命令行模式下建立详解

发布时间:2020-12-31 18:36:27 所属栏目:经验 来源:网络整理
导读:MySQL 设计和命令行模式下建立详解 系列文章: MySQL 设计和命令行模式下建立详解 C++利用MySQL API连接和操作数据库实例详解 1.数据表的设计 MySQL数据库管理系统(DBMS)中,包含的MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种

选课表设计:


对于上面三张数据表的设计,你会发现:

(1)MySQL在为数据定义字符串(字符)类型时,需要在类型名称的后面的小括号内指明最长字符数,即TypeName(M),这里的M指的是字符数,而不是数据占用的字节数。例如varchar(12),则表述存储的字符数不能超过12 ,超过12则截断,小于12个字符则以实际占用的存储空间来存储,这样就节省了存储空间。

(2)在对选课表的设计时,我们添加外键约束,可以使得两张表关联,保证数据的一致性和实现一些级联操作。

(3)MySQL中有三种Key和一个Index: Primary Key(主键),Unique Key(唯一键),Foreign Key(外键)和 Index(索引)。

四者的区别如下:

定义:

主键(Primary Key):唯一标识一条记录,不能有重复,不允许为空。
外键(Foreign Key):表的外键是另一表的主键,外键可以有重复,可以是空值。
唯一键( Unique Key):唯一标识一条记录,不能有重复,可以为空。
索引(Index):该字段可以有重复值记录,可以有空值,如果是唯一索引,那么就不可以有重复的记录,可以有空值。

作用:

主键:用来保证数据完整性。
外键:用来和其他表建立联系,以保证数据的一致性和级联操作。
唯一键:用来用防止数据插入的时候重复。
索引:是提高查询排序的速度。

个数:

主键:一个表只能有一个列是主键。
外键:一个表可以有多个列是外键。
唯一键:一个表可以有多个列是唯一键。
索引:一个表可以有多个列是索引。

从中可以看出,索引和唯一键很相似,二者的区别在于作用不同,索引用于提高查询速度,唯一键用于唯一约束。当然如果建立的索引是唯一索引的话,也可以起到唯一约束的作用。在MySQL具体实现上,索引需要建立数据结构,需要额外的磁盘空间来存储索引,而键(主键,外键和唯一键)都是逻辑层面的实现和约束,二者还是有着本质的区别。

还有就是MySQL的索引包括:普通索引(Index)、唯一索引(UNIQUE INDEX)、全文索引(FULLTEXT INDEX)、组合索引。这里就不要把唯一键和唯一索引弄混淆了!也不要把索引和其它的三种键弄混淆了。

还有一点需要注意的是,虽然键(key)和索引(index)有着本质的区别,但是当我们在建立主键或者唯一键的时候,也就建立了索引,MySQL和Oracle都是这么做的,要是不明白这一点,很容易把索引和主键和唯一键弄混淆。

唯一键可以起到唯一约束的作用,当然主键也可以起到唯一约束的作用。当然我们可以不建立唯一键和主键,直接为指定的数据表的列添加唯一约束。唯一约束保证指定列的值不能重复。

所以,关于上面的概念,大家不要咬文嚼字,而是根据功能去理解每一种KEY的作用,在什么场合需要去使用它。

比如需要主键约束的时候,我们就可以对某一列建立主键;

需要对某一列或者多个列进行唯一约束的时候,我们就建立唯一键或者唯一约束;
需要加快查询速度的时候,我们就建立相应类型的索引。

关于四者的理解,上未参考到权威的资料,请读者保持怀疑的态度接受。

2.数据库的建立

在安装完mysql之后,我们要建立自己的数据库。下面将详细地一步一步演示如何创建上面设计好的数据库。
在MySQL模式下,使用status命令可以查看MySQL版本,本人使用的MySQL版本:5.6.30 MySQL Community Server (GPL)。

关于mysql大小写问题,mysql命令是不区分大小写的。数据表的表名在windows下不分,linux下分。数据表的字段名在windows和linux下都不分。

(1)登录mysql DBMS

Linux命令行中输入如下命令:

mysql -hlocalhost -uroot -p123456

说明:依次指明登录mysql的主机地址,用户和用户密码。

(2)使用show查看当前mysql服务器上存在什么数据库

show databases;

MySQL 设计和命令行模式下建立详解

说明:在进入mysql模式下,使用mysql命令时,每条语句要以分号结束。但是use [DatabaseName]却不用,可能是mysql的一个小bug。类似于quit和exit退出mysql的命令,不需要一个分号。(如果你喜欢,你可以用一个分号终止这样的语句)。

(3)创建数据库

mysql> CREATE DATABASE StudentCourse;

(4)使用use语句访问数据库

mysql>use StudentCourse;

(5)创建数据表student

mysql> create table student(
 studentNo varchar(12) not null,name varchar(12) not null,school varchar(12) not null,grade varchar(12) not null,major varchar(12) not null,gender boolean not null,primary key(studentNo)
)engine=MyISAM default charset=utf8;

观察上面的建表语句,需注意以下几点:

(a)其中,布尔类型boolean在MySQL是以类型tinyint(1)来实现,这里的1指代的是数据显示时最短长度。
实际上tinyint(1)是可以插入-128到127之间的其它数值。因为mysql数据库中以 :数据类型(m)来定义数据类型,其中 数字m在不同的数据类型中表示含义是不同的。 整型数系统已经限制了取值范围,tinyint占一个字节、int占4个字节。所以整型数后面的m不是表示的数据长度,而是表示数据在显示时显示的最小长度(长度为字符数)。

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

副标题[/!--empirenews.page--]

MySQL 设计和命令行模式下建立详解

系列文章:

MySQL 设计和命令行模式下建立详解

C++利用MySQL API连接和操作数据库实例详解

1.数据表的设计

MySQL数据库管理系统(DBMS)中,包含的MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

下面以大学熟悉的学生选课管理系统中用到的数据库为例,来设计相应的数据表。主要有三张表:学生表,课程表和选课表。

学生表设计:


课程表设计:

热点阅读