数据库(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”用于在删除一个不存在的数据表时,防止产生错误。