MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
本文主要介绍一些MySQL的基础知识。
一、对象
MySQL中有表,视图,索引,约束等多种对象,在这里就不详细写了,当用到的时候在进行具体的介绍。
二、数据类型
1.整数型
BIGINT。大整数,数值范围为-263 (-9 223 372 036 854 775 808)~263-1(9 223 372 036 854 775 807),其精度为19,小数位数为0,长度为8字节。
INTEGER(简写为INT)。整数,数值范围为-231(-2 147 483 648)~231-1(2 147 483 647),其精度为10,小数位数为0,长度为4字节。
MEDIUMINT。中等长度整数,数值范围为-223(-8 388 608)~223-1(8 388 607),其精度为7,小数位数为0,长度为3字节。
SMALLINT。短整数,数值范围为-215(-32 768)~215-1(32 767),其精度为5,小数位数为0,长度为2字节。
TINYINT。微短整数,数值范围为-27(-128)~27-1(127),其精度为3,小数位数为0,长度为1字节。
2.精确数值型
精确数值型由整数部分和小数部分构成,其所有的数字都是有效位,能够以完整的精度存储十进制数。
精确数值型包括decimal、numeric两类。从功能上说两者完全等价,两者的唯一区别在于decimal不能用于带有identity关键字的列。 声明精确数值型数据的格式是numeric | decimal(p[,s]),其中p为精度,s为小数位数,s的默认值为0。例如,指定某列为精确数值型,精度为6,小数位数为3, 即decimal(6,3),那么若向某记录的该列赋值56.342 689时,该列实际存储的是56.3 427。
3.浮点型
这种类型不能提供精确表示数据的精度。使用这种类型来存储某些数值时,有可能会损失一些精度, 所以它可用于处理取值范围非常大且对精确度要求不是十分高的数值量,如一些统计量。
4.位型
位字段类型,表示如下:
BIT[(M)]
其中,m表示位值的位数,范围为1~64。如果省略m,默认为1。
5.字符型
字符型数据用于存储字符串,字符串中可包括字母、数字和其他特殊符号(如#、@、&等)。在输入字符串时,需将串中的符号用单引号或双引号括起来,如’abc’、”AbcCde”。 MySQL字符型包括固定长度(char)和可变长度(varchar)字符数据类型。
6.文本型
当需要存储大量的字符数据,如较长的备注、日志信息等,字符型数据的最长65 535个字符的限制可能使它们不能满足应用需求,此时可使用文本型数据。文本型数据对应ASCII字符,其数据的存储长度为实际字符数个字节。 文本型数据可分为4种:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。
7.BINARY和VARBINARY型
BINARY和VARBINARY类型数据类似于CHAR和VARCHAR,不同的是它们包含的是二进制字符串,而不是非二进制字符串。也就是说,它们包含的是字节字符串,而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值。
●BINARY [(N)]。固定长度的N字节二进制数据。N取值范围为1~255,默认为1。BINARY(N)数据的存储长度为N+4字节。若输入的数据长度小于N,则不足部分用0填充;若输入的数据长度大于N,则多余部分被截断。 输入二进制值时,在数据前面要加上0x,可以用的数字符号为0~9、A~F(字母大小写均可)。例如,0xFF、0x12A0分别表示十六进制的FF和12A0。因为每字节的 数最大为FF,故在“0x”格式的数据每两位占1字节。
●VARBINARY[(N)]。N字节变长二进制数据。N取值范围为1~65535,默认为1。VARBINARY(N)数据的存储长度为实际输入数据长度+4字节。
8.BLOB类型
在数据库中,对于数码照片、视频和扫描的文档等的存储是必须的,MySQL可以通过BLOB数据类型来存储这些数据。BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。这4种BLOB数据类型的最大长度对应于4种TEXT数据类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。不同的是BLOB表示的是最大字节长度,而TEXT表示的是最大字符长度
9.日期时间类型
DATE。date数据类型由年份、月份和日期组成,代表一个实际存在的日期。DATE的使用格式为字符形式’YYYY-MM-DD‘TIME。TIME数据类型代表一天中的一个时间,由小时数、分钟数、秒数和微秒数组成。格式为’HH:MM:SS.fraction’,其中fraction为微秒部分,是一个6位的数字,可以省略。 TIME值必须是一个有意义的时间,例如’10:08:34’表示10点08分34秒,而’10:98:10’是不合法的,它将变成’00:00:00’。DATETIME,TIMESTAMP。DATETIME和TIMESTAMP数据类型是日期和时间的组合,日期和时间之间用空格隔开,如’2008-10-20 10:53:20’。
YEAR。YEAR用来记录年份值。MySQL以YYYY格式检索和显示YEAR值,范围是1901~2155。
10.ENUM和SET类型
ENUM和SET是比较特殊的字符串数据列类型,它们的取值范围是一个预先定义好的列表。ENUM或SET数据列的取值只能从这个列表中进行选择。
ENUM和SET的主要区别是:ENUM只能取单值,它的数据列表是一个枚举集合。ENUM的合法取值列表最多允许有65535个成员。
例如,ENUM(“N”, “Y”)表示该数据列的取值要么是“Y”,要么是“N”。SET可取多值。它的合法取值列表最多允许有64个成员。空字符串也是一个合法的SET值。
MySQL的数据类型虽然确实比较多,而且每一种都细化成了许许多多更小的类型,但在我们的实际操作中,接触到的多了,便也就觉得不是那么难记了。
三、基本操作
1、创建数据库
语句:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
例如:CREATE DATABASE Student,
即创建了一个名称为Stu 的数据库。
2、创建表
语句: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(列名1> <数据类型> [<列选项>],
<列名2> <数据类型> [<列选项>],
…
<表选项>)
例如:CREATE TABLE stu1
即创建了一个名为stu1的表。
●TEMPORARY。该关键字表示用CREATE命令新建的表为临时表。
●列选项。列选项主要有以下几种:
NULL或NOT NULL:表示一列是否允许为空,NULL表示可以为空,NOT NULL表示不可以为空,如果不指定,则默认为NULL。
DEFAULT default_value:为列指定默认值,默认值default_value必须为一个常量。
AUTO_INCREMENT:设置自增属性,只有整型列才能设置此属性。当插入NULL值或0到一个AUTO_INCREMENT列中时,列被设置为value+1,
value是此前表中该列的最大值。AUTO_INCREMENT顺序从1开始。每个表只能有一个AUTO_INCREMENT列,并且它必须被索引。
UNIQUE KEY | PRIMARY KEY:UNIQUE KEY和PRIMARY KEY都表示字段中的值是唯一的。PRIMARY KEY表示设置为主键,一个表只能定义一个主键,
主键必须为NOT NULL。
COMMENT ‘string’:对于列的描述,string是描述的内容。
3、修改表
语句:ALTER TABLE table_name
例如:ALTER TABLE stu
即修改表stu。
4、删除表
语句:Drop [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name]
例如:Drop TABLE stu