系列文章目录
数据库的原理及应用(MySQL版)
前言
想必大家都会有一个疑问,就是我们为什么要学习数据库或者说我们为什么要使用数据库,像我平常会使用Java我们可以把数据存储在文件中,但是在文件中读写数据速度较慢,所以我们的数据库就要闪亮登场的吧。
一、什么是数据库:
数据库(DataBase)是按照数据结构来组织,存储和管理数据的仓库。每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:
- 1.数据以表格的形式出现
- 2.每行为各种记录名称
- 3.每列为记录名称所对应的数据域
- 4.许多的行和列组成一张表单
- 5.若干的表单组成database
来让我们看一下数据库在计算机系统中的地位
MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成
SQL的概述:
Structure Query Language(结构化查询语言)简称SQL,它被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。数据库管理系统可以通过SQL管理数据库;定义和操作数据,维护数据的完整性和安全性。
SQL数据库的体系结构:
(1)SQL用户可以是应用程序,也可以是终端用户。SQL语言可以被嵌入在宿主语言的程序(例如python,Java,C++)中使用,也可以作为独立的用户接口在DBMS环境下被用户直接使用。
(2)SQL用户可以用SQL语言对基本表和视图进行查询。
(3)一个视图是从若干基本表或其他视图上导出的表。在数据库中只存放该视图的定义,不存在该视图所对应的数据,这些数据仍然存放在导出该视图的基本表中。因此可以说视图是一个虚表。
SQL的特点:
1、简单易学,具有很强的操作性
2、绝大多数重要的数据库管理系统均支持SQL
3、高度非过程化;用SQL操作数据库时大部分的工作由DBMS自动完成
SQL语言的组成:
1.数据定义语言(DDL)
DDL用来定义,修改,删除数据库中的各种对象,包括创建,修改,删除或者重命名模式对象(CREATE,ALTER,DROP,RENAME)的语句,以及删除表中所有行但不删除表(TRUNCATE)的语句等。
2.数据操纵语言(DML)
DML的命令用来查询,插入,修改,删除数据库中的数据,包括用于查询数据(SELECT),添加新行数据(INSERT),修改现有行数据(UPDATE),删除现有行数据(DELETE)的语句。
3.数据控制语言(DCL)
DCL用于事务控制,并发控制,完整性和安全性控制等。事务控制用于把一组DML语句组合起来形成一个事务并进行事务控制。这个我们后面再讲。
二、数据定义:
1.数据的定义和删除:
数据库是存放数据的容器,在设计一个应用系统时必须先设计数据库。在MySQL中,一个数据库服务器可以包含多个数据库,每个数据库存放在以数据库名字命名的文件夹中,用来存放该数据库中的各种表数据文件。
1.创建数据库:
create database 数据库名;
2.选择数据库:
use 数据库名;
3.删除数据库:
DROP database 数据库名;
2.数据类型:
数据类型在数据库中真是扮演特别重要的而又基础的角色,因为对数据类型的选择将影响与数据库交互的应用程序的性能。通常来说,如果在一个页面中可以存放尽可能多的行,那么数据库的性能就好;另外,如果数据库中创建表时选择了错误的数据类型,那么后期的维护成本可能就非常大,数据库管理员需要花大量时间进行ALTER TABLE的操作,因此选择一个正确的数据类型至关重要。
在MySQL数据库中,每个数据都有数据类型。MySQL支持的数据类型主要分为4类,即字符串类型,数值类型,日期和时间类型,以及布尔类型。
数值类型:
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 Bytes | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 Bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3 Bytes | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT或INTEGER | 4 Bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
BIGINT | 8 Bytes | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
FLOAT | 4 Bytes | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度 浮点数值 |
DOUBLE | 8 Bytes | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度 浮点数值 |
DECIMAL | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
常用的数据类型是INT,DECIMAL类型
日期和时间类型:
类型 | 大小 ( bytes) |
范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901/2155 | YYYY | 年份值 |
DATETIME | 8 | '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' | YYYY-MM-DD hh:mm:ss | 混合日期和时间值 |
TIMESTAMP | 4 | '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 |
YYYY-MM-DD hh:mm:ss | 混合日期和时间值,时间戳 |
字符串类型:
CHAR | 0-255 bytes | 定长字符串 |
VARCHAR | 0-65535 bytes | 变长字符串 |
TINYBLOB | 0-255 bytes | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0-255 bytes | 短文本字符串 |
BLOB | 0-65 535 bytes | 二进制形式的长文本数据 |
TEXT | 0-65 535 bytes | 长文本数据 |
MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |
常用的是CHAR , VARCHAR类型
布尔类型:
布尔类型为BOOLEAN类型,它只有两个值——TRUE和FALSE,即真值和假植。
3.基本表的定义,删除和修改:
创建表:
create table 表名
(<列名><数据类型> [default<默认值>]
);
例子:
create table product(
p_code DECIMAL(6);
p_name VARCHAR(40);
p_price DECIMAL(5,2);
);
修改表的结构:
在基本表建立并使用一段时间后,可以根据实际需要对基本表的结构进行修改,及增加新的列,删除原有的列或修改列的数据类型,宽度。
(1)在一个表中增加一个新列:
alter table <表名>
add [column] <列名> <数据类型> [default<默认值>];
(2) 修改一个表中已有的列
(1)修改一个表中已有列的数据类型:
alter table <表名>
modify [column] <列名> <数据类型> [default <默认值>];
(2)修改一个表中已有列的列名:
alter table 表名
change [column] <旧列名> <新列名> <新数据类型>;
(3)从一个表中删除一列:
alter table <表名>
drop [column] <列名>;
(4).截断表和删除表:
(1)截断表:
TRUNCATE TABLE <表名>;
注意:使用上面的语句只删除了表中的所有数据行,但表的结构依然保留.
(2)删除表:
DROP table <表名>;
总结
以上就是今天要讲的内容,本文仅仅简单介绍了SQL的作用和基本定义,还有部分基本语句的使用,下面我们会详细的讲解MySQL的内容,我也在不断学习中,谢谢大家,我会持续更新的。