数据库概述
数据库(Database)简称DB,是按照数据结构来组织、存储和管理数据的仓库,其本身可看作电子化的文件柜。用户可以对文件中的数据进行增加、删除、修改、查找等操作。
随着数据库技术的不断发展,数据库产品越来越多,常见的有Oracle、SQL Server、MySQL等,它们各自的特点如下所述
Oracle:Oracle公司推出的数据库管理系统,在数据库领域一直处于领先地位,同时也是目前世界上流行的关系型数据库管理系统之一。它的优势在于移植性好、使用方便、功能性强,适用于各类大、中、小、微机环境。对于要求高效率、吞吐量大的项目而言是一个不错的选择。
SQL Server:Microsoft公司推出的关系型数据库管理系统,广泛应用于电子商务、银行、保险、电力等行业。因其易操作、界面良好等特点深受广大用户喜爱,但由于其只能在Windows平台上运行,并对操作系统的稳定性要求较高,因此很难处理日益增长的用户数量。
MySQL:开放源码的关系型数据库管理系统,采用GPL协议(General Public License,通用公共许可证)发布,这表示用户可以根据自己的需求进行修改。MySQL还具有跨平台性,不仅可以在Linux系统上使用,还可以在Windows、Mac OS等系统上使用。相对其他数据库而言,MySQL具有方便、快捷、免费等特点。
DB结构
数据表的横向被称为“行”,纵向被称为“列”,行列交叉处的数据被称为“值”。数据表中的的每一行内容被称为“记录”,每一列的列名称被称为“字段”。
是开放源码的关系型数据库管理系统。
由瑞典MySQL AB公司开发,先后被Sun和Oracle公司收购。
是最受欢迎的关系型数据库之一,尤其是在Web开发领域,MySQL依然占据着举足轻重的地位。
低成本:
MySQL是开源免费的,开发人员可根据需求自由进行修改,降低了开发成本。
跨平台:
不仅可在Windows平台上使用,还可在Linux、Mac OS等多达14种平台上使用。
高性能:
多线程以及SQL算法的设计,使其可以充分利用CPU资源和提高查询速度。
上手快:
MySQL 使用标准的 SQL数据语言形式,方便用户操作。
API接口:
提供多种编程语言的API,方便操作数据库。例如Java、C、C++、PHP等。
创建数据库就是在数据库系统中划分一块存储数据的空间。
基本语法格式如下:
CREATE DATABASE 数据库名称;
创建一个名称为 itcast 的数据库,SQL语句如下:
CREATE DATABASE `itcast`;
需要注意的是,为了避免用户自定义的名称与系统命令冲突,最好使用反引号(` `)包裹数据库名称、字段名称和数据表名称。
如果创建的数据库已存在,则程序会报错。因此,为了防止此情况的发生,在创建数据库时可以使用“IF NOT EXISTS”,具体如下:
CREATE DATABASE IF NOT EXISTS `itcast`;
上述SQL语句表示,若MySQL数据库服务器中不存在名称为itcast的数据库时,创建该数据库,否则不执行创建数据库itcast的操作。
查看 MySQL 数据库服务器中已经存在的数据库
SHOW DATABASES
删除数据库 itcast,SQL语句如下:
DROP DATABASE `itcast`;
MySQL 提供了多种数据类型,主要分为 3 类:
数值类型
字符串类型
日期与时间类型
MySQL提供了很多数值类型,大体可以分为整数类型和浮点类型。
整数类型根据取值范围分为 INT、SMALLINT等,
浮点类型又分为 FLOAT、DECIMAL等。
整数类型
浮点类型
DECIMAL类型的有效取值范围是有 M 和 D 决定。其中,M 表示数据长度,D 表示小数点后的长度。例如,数据类型设为 DECIMAL(4,1),将 3.1415926插入到数据库后,显示的结果为 3.1。
BLOB和TEXT都是用于存储大量数据的,但二者的区别在于,对于存储的数据进行排序和比较时,BLOB是区分大小写的,而TEXT是不区分大小写的。
数据类型—日期和时间类型
为方便在数据库中存储日期和时间,MySQL 提供了几种相关的数据类型,这些数据类型可以根据实际开发灵活选择。
存储引擎
InnoDB 存储引擎
MyISAM 存储引擎
MEMORY 存储引擎
ARCHIVE 存储引擎
InnoDB 存储引擎自 MySQL 5.5 版本起被指定为默认的存储引擎,用于完成事务、回滚、崩溃修复和多版本并发控制的事务安全处理。同时也是 MySQL中第一个提供外键约束的表引擎,尤其对事务处理的能力,是 MySQL 其他存储引擎所无法与之比拟的。
InnoDB 的优势在于提供了良好的事务管理、崩溃修复能力和并发控制。
MyISAM 存储引擎是基于 ISAM 存储引擎发展起来的,它不仅解决了 ISAM的很多不足,还增加了很多有用的扩展。
其中,对于使用 MyISAM 存储引擎的数据表,会被存储成3个文件,文件名与表名相同,文件扩展名分别为 frm、myd 和 myi。
在 MySQL 数据库中,使用 CREATE TABLE 语句创建数据表:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 数据表名
[(
col_name type [完整性约束条件],
col_name type [完整性约束条件],
…
)][table_options] [select_statement];
① 在数据库中创建一个 itcast 数据库。SQL 语句如下:
CREATE DATABASE itcast
;
USE itcast
;
② 创建用户表 user,该表中有字段编号 id、用户名 user、密码password。具体 SQL 如下。
CREATE TABLE IF NOT EXISTS `user`(
`id` INT UNSIGNED COMMENT '编号',
`name` VARCHAR(32) COMMENT '用户名',
`password` VARCHAR(32) COMMENT '密码'
)DEFAULT CHARSET=utf8;
上述SQL语句中,UNSIGNED用于设置字段数据类型是无符号的,COMMENT表示注释内容,“DEFAULT CHARSET=utf8”用于设置该表的默认字符编码为“utf8”。
在对数据表进行操作时,表名的位置也可以写成“数据库.表名”的形式,通过这种形式,将不需要使用“USE”选择数据库。
`itcast`.`user`
在选择数据库之后,如果想要查看某数据库中存在哪些数据表,可以使用如下 SQL 语句。
SHOW TABLES
对于已经创建的数据表,如果要查看表的结构,MySQL 提供了三种方法。
SHOW CREATE TABLE
DESCRIBE
SHOW COLUMNS
以查看数据表 user 中的所有字段,和指定字段 name 。
DESC `user`;
DESC `user` `name`
③ SHOW COLUMNS
MySQL 数据库中的 SHOW COLUMNS 语句也可以查看表结构:
# 语法格式1
SHOW [FULL] COLUMNS FROM 数据表名 [FROM 数据库名];
# 语法格式2
SHOW [FULL] COLUMNS FROM 数据库名.数据表名;
在下列语法格式中,以“#”开始部分是注释;FULL是可选项,加上FULL表示显示详细内容。
# 语法格式1
SHOW [FULL] COLUMNS FROM 数据表名 [FROM 数据库名];
# 语法格式2
SHOW [FULL] COLUMNS FROM 数据库名.数据表名;
下面使用 SHOW COLUMNS 语句查看 user 表的结构。
SHOW COLUMNS FROM `user`
对于创建好的数据表,有时会根据项目要求对其结构进行修改。修改表结构是指增加或者删除字段、修改字段名称或者字段类型、修改表名等。
ALTER [IGNORE] TABLE 数据表名
ADD [COLUMN] create_definition [FIRST | AFTER column_name ] # 添加新字段
| CHANGE [COLUMN] old_col_name new_col_name type # 修改字段名称及类型
| MODIFY [COLUMN] create_definition # 修改子句定义字段
| DROP [COLUMN] col_name # 删除字段
| RENAME [AS] new_tbl_name # 更改表名
① 添加新的字段
为 user 数据表添加描述字段 desc,要求数据类型为 CHAR(100)。
ALTER TABLE `user` ADD `desc` CHAR(100);
② 修改字段名称及类型
将 user 数据表中的描述字段 desc 的名称修改为 description,数据类型修改为 VARCHAR(100)。
ALTER TABLE `user` CHANGE `desc` `description` VARCHAR(100);
② 修改字段名称及类型
需要注意的是,在使用“CHANGE”时,必须为新字段名称设置数据类型,即使与原来的数据类型相同,也必须进行重新设置。此外,当修改后的数据类型无法容纳原有数据时,修改将会失败。
③ 修改字段数据类型
修改 user 数据表中的 description 字段,将其数据类型由 VARCHAR(100) 改为 VARCHAR(255)。
ALTER TABLE `user` MODIFY `description` VARCHAR(255);
④ 删除字段
删除 user 数据表中的字段 description,SQL 语句如下:
ALTER TABLE `user` DROP `description`;
⑤ 更改表名称
将数据表 user 的名称修改为 new_user,SQL 语句如下:
ALTER TABLE `user` RENAME `new_user`;
删除表结构
删除数据表使用 DROP TABLE 语句即可实现,语法格式如下。
DROP TABLE [IF EXISTS] 数据表名;
可选项“IF EXISTS”用于在删除一个不存在的数据表时,防止产生错误。