首页 百科知识 创建数据库和数据库中的表

创建数据库和数据库中的表

时间:2022-10-19 百科知识 版权反馈
【摘要】:在首页“创建一个新的数据库”下方填入数据库名称。整理,是指创建数据库使用的字符集,由于安装数据库时已经设置好字符集,这里就按照默认的方式即可。表示范围是ˊ1970-01-01 00: 00: 00ˊ到2037年的某时。对TIMESTAMP的字段有效,设置了该项则无论插入还是更新该字段都会自动取当前时间值作为插入或更新值。一旦MySQL服务器关闭,存储在内存中的任何信息都将丢失,不过单个表的格式将保留。InnoDb用来处理大量数据时能提供最好的性能。

8.1.1 创建数据库和数据库中的表

进入MySQLAdmin。在首页“创建一个新的数据库”下方填入数据库名称。整理,是指创建数据库使用的字符集,由于安装数据库时已经设置好字符集,这里就按照默认的方式即可。

img318

img319

点击创建后,左边将自动选择数据库abc,右侧出现了创建表的表单,我们只需要在名字一栏中填入创建表的名称,在字段数量中(Number of fields)填入需要的数量,按下执行即可。

img320

按下执行后,会出现字段设置选项,包括名称、类型、长度、字符集、属性、允许为空否、默认、额外,以及设置主键、设置唯一等。其中关于字段类型,我们可以看到有很多选择项。MySQLAdmin是按照常用程度来排列这些选项的。下面我们详细讲解一下各种字段类型。

VARCHAR

一个变长字符串。注意:当值被存储时,尾部的空格被删除(这不同于ANSI SQL规范)。存储空间为1个byte。因此,它的范围是1~255个字符。

TINYINT

一个很小的整数。存储空间为1个byte。有符号的范围是-128到127,无符号的范围是0到255。

TEXT

忽略字母大小写,最大长度为65 535(2∧16-1)个字符。

DATE

一个日期。支持的范围是ˊ1000-01-01ˊ到ˊ9999-12-31ˊ。允许把字符串或数字类型的值赋给DATE的列。

SMALLINT

一个小整数。存储空间为16个byte。因此,有符号的范围是-32768到32767,无符号的范围是0到65535。

MEDIUM INT

一个中等大小整数。存储空间为24个byte。因此,有符号的范围是-8388608到8388607,无符号的范围是0到16777215。

INT

一个正常大小整数。存储空间为32个byte。因此,有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。

BIGINT

一个大整数。存储空间为64个byte。因此,有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到18446744073709551615。

img321

FLOAT

一个小(单精密)浮点数字。不能无符号。允许的值是-3.402823466E+ 38到-1.175494351E-38,0和1.175494351E-38到3.402823466E+38。

DOUBLE

一个正常大小(双精密)浮点数字。不能无符号。允许的值是-1.7976931348623157E+ 308到-2.2250738585072014E-308,0和2.2250738585072014E-308到1.7976931348623157E+ 308。

DECIMAL

一个未压缩(unpack)的浮点数字。不能无符号。“未压缩”意味着数字作为一个字符串被存储,值的每一位使用一个字符。一般用于记录货币等对精度要求较高的数据(不会出现精度的损失)。

DATETIME

一个日期和时间组合。支持的范围是ˊ1000-01-01 00: 00: 00ˊ到ˊ9999-12-31 23: 59: 59ˊ。允许把字符串或数字类型的值赋给DATETIME的列。

TIMESTAMP

一个时间戳记,表示1970-01-01 00: 00: 00距离现在有多少秒。表示范围是ˊ1970-01-01 00: 00: 00ˊ到2037年的某时。MySQL以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式来显示TIMESTAMP值。

TIME

一个时间。范围是ˊ-838: 59: 59ˊ到ˊ838: 59: 59ˊ。MySQL以ˊHH:MM: SSˊ格式来显示TIME值,允许把字符串或数字类型的值赋给TIME列。

YEAR

一个4位数字格式的年。允许的值是1901到2155,和0000。MySQL以YYYY格式来显示YEAR值,但是允许把字符串或数字类型的值赋给YEAR列。

CHAR

一个定长字符串,当存储时,总是用空格填满右边到指定的长度。允许的范围是1~255个字符。

TINYBLOB

最大长度为255(2∧8-1)个字符,不忽略字母大小写。

TINYTEXT

最大长度为255(2∧8-1)个字符,忽略字母大小写。

BLOB

最大长度为65535(2∧16-1)个字符,不忽略字母大小写。

MEDIUMTEXT

最大长度为16777215(2∧24-1)个字符,忽略字母大小写。

LONGBLOB

最大长度为4294967295(2∧32-1)个字符,不忽略字母大小写。

LONGTEXT

最大长度为4294967295(2∧32-1)个字符,忽略字母大小写。

ENUM

枚举。一个仅有一个值的字符串对象,这个值选自值列表ˊvalue1ˊ,ˊvalue2ˊ,...,或NULL。一个ENUM最多能有65535个不同的值。

SET

一个集合。一个能有零个或多个值的字符串对象,其中每个值必须选自值列ˊvalue1ˊ、ˊvalue2ˊ,...。一个SET列最大可以有64个成员。

BOOL

逻辑类型,只能存两个值0或1。

BINARY

与定义CHAR差不多,区别是排序与比较时不忽略大小写。

VARBINARY

与定义VARCHAR差不多,区别是排序与比较时不忽略大小写。

img322

对于长度值选择,只对字符串类型(包括CHAR、VARCHAR、BINARY、VARBINARY、DECIMAL等)和数字类型(包括SMALLINT、MEDIUM INT、INT、BIGINT等)是可以设置的,而对文本类型和时间日期类型设置长度是无效的。

整理一栏指使用的字符集,我们按照默认设置就可以了,在某些特殊字段需要按照中文拼音排序的时候才需要理会它。

而对于属性选项,可选值有3个:

img323

img324

UNSIGNED

设定整数类型的变量不带符号。

UNSIGNED ZEROFILL

在设定整数类型的变量不带符号的同时,设定取出的一个数的位数若小于它定义的最大长度时,前端补0。比如对于INT定义长度为5的时候,检索出值4的记录时,应该取出00004。

ON UPDATE CURRENT_TIMESTAMP

对TIMESTAMP的字段有效,设置了该项则无论插入还是更新该字段都会自动取当前时间值作为插入或更新值。

img325

NULL一栏是设置是否允许字段为空,not null是不允许,而null是允许。

img326

默认一栏是给一些字段取默认值,当一条记录被插入,而该字段没有插入值时系统会自动插入默认值。

对于额外,只有一个选项就是auto_increment,它表示将该字段设为自增字段,即每插入一条记录,该字段的值就自动加1。它只能用于整数类型的字段,其他字段使用它会出现错误。

img327

img328表示选择将该字段为主键。

img329表示选择将该字段建立索引

img331表示不设置上述任何3条。前面4个选择是互斥的。

img332表示设置为全文检索。这是个复选项,即可以和前面的选择同时进行。

img333

img334

注释一栏是写下对该字段的注释,对字段的操作没有任何影响。只是为了方便开发者阅读。

表注释是对整个表的注释,而整理是设置表的默认字符集,我们同样不用理会。最后,是设置存储引擎(Storage Engine),我们可以看到MySQLAdmin对其设的默认值是InnoDB。MySQL中的数据用各种不同的技术存储在文件(或者内存)中。每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善应用的整体功能和效率。它有5个选项:

MyISAM

大多数MySQL安装程序的默认引擎,起源于早期版本MySQL支持的ISAM引擎。这种引擎提供了最佳的性能。但它的缺陷是缺少事务处理功能,并且使用表级锁定,目前它仍然不支持外键。

MEMORY

MEMORY(内存)存储引擎(以前称作HEAP存储引擎)在内存中存储全部数据。一旦MySQL服务器关闭,存储在内存中的任何信息都将丢失,不过单个表的格式将保留。该引擎由于在内存进行,执行速度非常快。

InnoDB

支持事务,行锁定,外键。InnoDb用来处理大量数据时能提供最好的性能。InnoDb提供自己的缓存(buffer pool)来缓存数据和索引。InnoDb把数据和索引存放到表空间(tablespace),表空间是几个磁盘文件或者是原始设备文件(raw disk)。它不像MyISAM存储引擎,每个表只是一个文件(这样在某些系统下有最大2G限制),而InnoDb没有此限制,可以无限扩展。

ARCHIVE

ARCH IVE存储引擎被用来以非常小的覆盖区存储大量无索引数据。ARCH IVE引擎仅支持INSERT和SELECT(无删除,替换或更新)。它支持ORDER BY操作,BLOB域,以及基本的所有数据类型,除了几何数据类型。ARCH IVE引擎使用行级锁定。当记录被插入时,它们被压缩。在取回时,记录根据需要被解压缩,没有行缓存。因此,速度比较慢。

MRG_MYISAM

MRG_MyISAM是分割型的MyISAM。它可以存在多个卷上。在处理超大数据量的时候,可以把一个表切成若干个小表用一个MRG来管理,就像操作一个表一样。但是对速度做了优化。在处理大量数据时,它的效率比一般的MYISAM要高。

如何选择存储引擎

MySQL最常用的是MyISAM和InnoDB或者两者的结合。当对某表格使用大量的select语句或insert语句时,MyISAM是最快的。对于大部分Web应用程序,MyISAM是最佳的选择。如果需要全文检索功能,也应该使用MyISAM。当事务处理非常重要(比如设计财务数据的表),或者Select语句与insert语句交错执行时(比如在线论坛、消息系统),应该使用InnoDB。

要在MySQL中使用外键,事务和存储过程,得先确认表存储引擎是InnoDB。不是的话就要进行修改,否则会出错。对表添加外键的方法是用代码:

alter table表名

add foreign key(本表字段名) reference其他表(其他表字段名)

img335

全部设置好后,点击img336即可生成设置好的表,并且会显示出相对性的SQL语句。如果选择添加一些字段并点击img337则需要继续设置新添加的字段。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈