2024年3月5日发(作者:)

一、基本概念

1、数据

(1)数据的定义:对客观事物的符号表示,如图形符号、数字、字母等,数

据是数据库中存储的基本对象。

(2)数据的种类:文字、图形、图象、声音

(3)数据的特点:数据与其语义是不可分的

2、数据库

数据库(DataBase 简称 DB)是按照数据结构来组织、存储和管理数据的仓库。

3、数据库管理系统(比如:MySql)

(1)数据库管理系统(DatabaseManagementSystem 简称 DBMS)是一种控制和

管理数据库的大型软件,是用于建立、使用和维护数据库。

(2)关系型数据库管理系统称为 RDBMS,R 指 Relation。

(3) DBMS 的作用:它对数据库进行统一的管理和控制,以保证数据库的安

全性和完整性。

4、数据库系统

数据库系统(DatabaseSystem,简称 DBS),是由数据库及其管理软件组成的

系统。

5、数据库管理员

数据库管理员 (DatabaseAdministrator,简称 DBA),负责全面管理和控制数

据库系统。

6、DBA、DBMS、DB 和 DBS 之间的关系

/

7、数据库的优点

(1)数据按一定的数据模型组织、描述和储存

(2)可为各种用户共享

(3)冗余度较小,节省存储空间

(4)易扩展,编写有关数据库应用程序

二、数据库管理系统(DBMS)

1、DBMS 的主要功能

(1)数据定义功能:提供数据定义语言(DDL)

用于定义数据库的所有特性和属性,特别是行布局、列定义、键列选键方法)、文件位置和存储策略,包括命令:

DROP(删除数据库)

删除数据库:dropdatabaseifexists 数据库名

CREATE(创建数据库)

创建表:createtableifnotexists 表名(列名列名约束)

ALTER(修改数据库)

添加列名:altertable 表名 add 列名约束条件

修改列名:altertable 表名 change 老列名新列名数据类型

修改列字段数据类型:altertable 表名modity 列名数据类型

删除列名:altertable 表名 drop 列名

修改表名:altertable 表名 rename 新表名

/

有时是

(

GRANT(赋予权限)

REVOKE(从当前用户或者组中取销权限)、TRUNCATE(只删除表中的所有数据,不 删除表的结构)

truncatetable 命令将快速删除数据表中的所有记录,但保留数据

表结构。这种快速删除与 deletefrom 数据表的输出全部数据表记录

不一样,delete 命令删除的数据将存储在系统回滚段中,需要的时候,

数据可以回滚恢复,而 truncate 命令删除的数据是不可恢复的。

(2)数据控制功能:提供数据控制语言(DML)控制数据实现对数据库的基本操作:

SELECT(查询)

selectfrom 表名 where 条件(条件 1and 条件 2)

INSERT(插入)

insertinto 表名(列 1,列 2)values('',''),('',''),('','')

DELETE(删除)

deletefrom 表名 where 条件

UPDATE(修改)

update 表名 set 列名='',列名=''where 条件

(3)数据库的运行管理

a、保证数据的安全性、完整性

b、多用户对数据的并发使用

c、发生故障后的系统恢复

(4)数据库的建立和维护功能(实用程序)

a、数据库数据批量装载b、数据库转储

c、介质故障的修复

d、数据库的重组织

e、性能监视

/

2、DBMS 的分类(大公司首选 oracle-----数据库中的贵族)

小型数据库:Access、foxbase、sqlite

中型数据库:mysql、sqlserver、infomix

大型数据库:Sybase、Oracle、db2

注意:Mysql、SQLserver、Oracle、DB2 三者的特点

Oracle:

(1)最稳定、功能最强大、性能最好、容量无限、最昂贵、分量级,分

布式数据库系统,合用于大型的项目

(2) "关系----对象"型数据库

MySQL:

(1)轻量级、易安装、易管理、速度比较快,使用起来方便,合用于中小

型企业

(2)开源、免费、与 PHP 组成经典的LAMP 组合

SQLServer:

(1)针对不同用户群体的五个特殊的版本

(2)易用性好

DB2:

(1)应用于大型应用系统,具有较好的可伸缩性

3、B/S 和 C/S

/

B/S 浏览器服务器 BrowserServer

客户不需要安装程序,只需要有浏览器引擎即可:淘宝

C/S 客户端服务器 ClientServer

客户需要安装程序,比如:QQ

三、 MySQL 的概念、特性以及不足

1、概念

(1)什么是 MySQL

MySQL 原本是一个开放源代码的关系数据库管理系统,原开辟者为瑞典的

MySQLAB 公司,该公司于 2022 年被 Sun 公司收购。 2022 年,甲骨文公司Oracle

收购 Sun 公司, MySQL 成为 Oracle 旗下产品。

MySQL 在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据

库,因此被广泛地应用在 Internet 上的中小型网站中。随着MySQL 的不断成熟,

它也逐渐用于更多规模网站和应用,比如 Google 和 Facebook 等网站。

(2)什么是 SQL

SQL 是 StructuredQueryLanguage(结构化查询语言)的缩写。 SQL 是专为数

据库而建立的操作命令集, 是一种功能齐全的数据库语言。 在使用它时, 只需要

发出“做什么”的命令,“怎么做”是不用使用者考虑的。

2、MySQL 的特征:

(1)性能快捷、优化 SQL 语言

(2)容易使用

(3)多线程和可靠性

(4)多用户支持

(5)可移植性和开辟源代码

(6)遵循国际标准和国际化支持

(7)为多种编程语言提供 API

3、MySQL5 新特性

(1)子查询

/

(2)视图

(3)存储过程

(4)触发器

(5)事务处理

(6)热备份

(7)二进制 Bit 类型

等等......

4、MySQL 的不足

(1)不能直接处理 XML 数据

(2)一些功能上支持得不够完善和成熟

(3)不能提供任何 OLAP(实时分析系统)功能

四、 MySQL 的使用

1、用命令行来执行数据库(DDL 数据库定义语言)

(1)输入登录密码(连接的密码)

(2)显示 MySQL 中所有的数据库

(3)退出 MySQL

使用 quit、exit、q 退出 MySQL

(4)创建数据库(createdatabase 数据库名)

创建数据库时,判断是否具有同名数据库再创建创建数据库后,为数据库设置字符编码

(5)删除数据库(dropdatabase 数据库名)

(6)使用某个数据库(user 数据库名)

注意:进入到该数据库,例如你新建表的时候要先写这句话,这样保

证了我的表创建在该数据库下,反之会默认放置在默认的数据库中

/

(7)创建表(createtable 表名(列名 1 数据类型, .......))

创建表时,是 id 自动递增用 auto_increment

注意:关于数据类型:char 和varchar

char(20):分配 20 个空间, 当只使用 5 个空间时, 没用的空间会被空格填

varchar(20):分配 20 个空间,当只使用5 个空间时,那末空间会占用6

个,其中一个保存数据长度。

因此,建议使用 varchar

(8)显示选择的数据库中所有的表

(9)查看表里面的详细信息(desc 表名)

(10)删除表(droptable 表名)

(11)删除一个表的主键(altertable 表名 dropprimarykey)

(12)往表中添加一列(altertable 表名 add 要添加的列名数据类型)

(13)往 id 列后面添加一列

(14)增加一列,使其位于第一列

(15)删除某一列(altertable 表名 drop 列名)

(16)修改表字段

a、使用 change 可以修改字段名称和该字段的数据类型 (altertable 表名

change 字段名新字段名新数据类型)

b、使用 Modify 只能修改数据类型(altertable 表名 modify 字段名新数据

类型)

2、Navicat 进行增删改查(DML 数据控制语言)

Navicat 代码注释的三种:

--注释的代码(注意空格)

#注释的代码

/

(1)创建一张表

(2)往表中添加记录

insertinto 表名(字段 1,字段 2,......)values(值 1,值 2,......)

(3)查找表中名字为祝横岗,密码为 648310 的记录,并列条件使用(4)修改表中的记录(update 表名 set 列名=‘xxx’)

将 id 为4 的字段 stuName 的值改成“关雎宫”

(5)删除表中的记录(deletefrom 表名 )

删除编号为 3 的数据

/

and

五、 MySQL 数据类型

1、数据类型种类

(1)数值型

a、整型

可以由十进制和十六进制表示,整数由数字序列组成,如:100,0xAb、浮点型

浮点数由一个数字加一个小数点再加之一个数字组成,如:10.5(2)字符串

由单引号或者双引号括起来的字符或者数字,如:'abc10',"abc"

字符串中要用转义字符才干表示的特殊符号

串转义序列

序列 说明 序列 说明

0 NUL(ASCII0) n 新行

' 单引号 r 回车

"" 双引号 t 制表符

b 退格 反斜杠

(3)日期和时间值

存储如"2005-1-1"或者"12:00:00"这样数值的值, MySQL 中日期是按"年-月- 日"的顺序

(4) NULL 值

/

是一种无类型的值,表示“空,什么也没有”

2、数值列类型

(1)所有数值列类型的类型名以及其说明和所占的字节数见下表:

数值列类型

类型名

说明

类型名

说明

TINYINT

非常小的整数

较小整数

BIGINT

大整数

SMALLINT

FLOAT

单精度浮点数

MEDIUMINT

中等大小的整数

标准整数

DOUBLE

双精度浮点数

INT

DECIMAL

一个串的浮点数(多用于银行的数值)

数值列类型的存储需求

类型说明

TINYINT[(M)]

SMALLINT[(M)]

MEDIUMINT[(M)]

INT[(M)]

BIGINT[(M)]

FLOAT[(M,D)],FLOAT(4)

DOUBLE[(M,D)],FLOAT(8)

DECIMAL(M,D)

存储需求

1 字节

2 字节

3 字节

4 字节

8 字节

4 字节

8 字节

M 字节

M 是从 1 到 255 的值,它表示列中值的字符数

/

M 与 D 对 DECIMAL(M,D)取值范围的影响

类型说明 取值范围(MySQL<3.23) 取值范围(MySQL>=3.23)

DECIMAL(4,1) -9.9 到 99.9

DECIMAL(5,1) -99.9 到 999.9

DECIMAL(6,1) -999.9 到 99999.9

-999.9 到 9999.9

-9999.9 到 99999.9

-99999.9 到

999999.9

-9999.99 到

99999.99

-999.999 到

9999.999

DECIMAL(6,2) -99.99 到 999.99

DECIMAL(6,3) -9.999 到 99.999

对于每种浮点型,可指定一个最大的显示尺寸 M 和小数位 D,M 和 D

对于 DECIMAL 是必须的

(2)数值列的完整性约束a、auto_increment

自动标识列, 一个表中最多能有一个此属性的列。 对于想使用此属性的列应

该定义为 notnull,并定义为 primarykey 或者定义为 unique 键。

b、unsigned

无符号,此属性禁用负值,将数值的范围从 0 开始。

c、null 和 notnull

默认为 null,即插入值时没有在此字段插入值时自动填 null,如果指定了

notnull,则必须在插入值时在此字段添入值,不允许插入 null 值。

d、default

可以通过此属性来指定一个缺省值, 即如果没有在此列添加值, 那末默认添

加 default 后指定值。

e、zerofill

/

前导零填充数值类型值以达到列的显示宽度。

3、字符串列类型

所有字符串列类型及其说明和所占字节数见下表:

串列类型

类型名

CHAR

VARCHAR

TINYBLOB

BLOB

MEDIUMBLOB

LONGBLOB

TINYTEXT

TEXT

MEDIUMTEXT

LONGTEXT

ENUM

说明

定长字符串

可变长字符串

非常小的 BLOB(二进制大对象)

小 BLOB

中等的 BLOB

大 BLOB

非常小的文本串

小文本串

中等文本串

大文本串

枚举:列可赋予某个枚举成员

/

SET 集合:列可赋予多个集合成员

(1) CHAR 和 VARCHAR 类型

CHAR 类型和 VARCHAR 类型长度范围都是 0~255 之间的大小。他们之间的差

异在于 Mysql 处理存储的方式:

CHAR 把这个大小视为值的准确大小(如果值的长度不够长, 则用空格填补比

较短的值)。

VARCHAR 类型把它视为最大值并且只使用了存储字符串实际上需要的字节

数(增加一个额外的字节记录长度)。于是较短的值当被插入一个语句为 VARCHAR

类型的字段时,将不会用空格填补(然而,较长的值仍然被截短)。

(2) BLOB 和 TEXT 类型

BLOB 是二进制大对象,如果想存储二进制数, BLOB 将是最佳选择,而TEXT

与之相同,只是BLOB 按照二进制编码排序(区分大小写),TEXT 按照字符文本模

式排序(不区分大小写)。

(3) ENUM 和 SET 类型

它们是特殊的串类型, 其列值必须从固定的串集中选择, 二者差别为前者必

须是只能选择其中的一个值,而后者可以多选。 (不推荐使用)

枚举的例子:

4、日期和时间列类型

所有时间和日期列类型的类型名及其说明和所占的字节数见下表:

日期与时间列类型

类型名

DATE

说明

‘YYYY-MM-DD’格式表示的日期值

'hh:mm:ss'格式表示的时间值

TIME

DATETIME

'YYYY-MM-DDhh:mm:ss'格式

/

TIMESTAMP 'YYYYMMDDhhmmss'格式表示的时间戳值

YEAR 'YYYY'格式的年份值

注意: ( 1)每一个时间和日期列类型都有一个零值,当插入非法数值时 就用零值来添加

(2)表示日期时必须先按:年,月,日的顺序给出

(3) DATE,TIME,DATETIME 分别是存储日期, 时间与日期和时间的组合, 其

格式为"YYYY-MM-DD","hh:mm:ss"和"YYYY-MM-DDhh:mm:ss",对于 DATETIME 类

型,日期和时间部份都需要。

(4) TIMESTAMP

时间戳列类型以 YYYYMMDDhhmmss 的格式来表示值,主要用于记录更改或者 创建某个记录。

5、常见数据类型

常用的数据类型

分类

备注和说明

数据类型 说明

二进制数

据类型

存储非字符和文本的数据

BLOB 可用来存储图象

char

固定长度的非

Unicode 字符数据

可变长度非 Unicode

数 据

存储长文本信息

文本数据

字符数据包括任意字母、符号或类型

者 者数字字符的组合

varchar

text

日期和时间在单引号内输入

时间

time

/

日期和时

date 日期

datetime 日期和时间

货币数据

类型

Bit 数据类

用于财务数据

decimal 定点数

表示是/否的数据

bit

存储布尔数据类型

int

整数

数值型数 该数据仅包含数字,包括整数、

负数以及浮点数

smallint

float

double

浮点数

6、常见的完整性约束

常见的完整性约束

类型

PRIMARYKEY

说明

主码约束主键)

UNIQUE

NOTNULL

惟一性约束

非空值约束

AUTO_INCREMENT

用于整数列默认自增 1

无符号整数

UNSIGNED

DEAULTdefault_value

默认值约束

/

DEAULTcur_timestamp

ONUPDATEcur_timestamp

CHARACTERSETname

创建新记录时默认保存当前时间(仅合用 timestamp 数据列)

修改记录时默认保存当前时间(仅合用 timestamp 数据列)

指定字符集(仅使用字符串)

7、数据表的类型(在表上右键,点击对象信息,可以看到表的

类型)

在创建一个新的 MySQL 数据表时,可以为它设置一个类型,其中最重要的3

中类型是:

(1) MyISAM:成熟、稳定和易于管理

( 2 ) InnoDB:加入事物、数据行级锁定机制、外键约束条件、崩溃恢

复等新功能(常用)

(3) HEAP:只存在于内存中,可做暂时表

8、主键和外键

(1)索引:优化查询速度

(2)数据表之间的关联 /引用关系是依赖具体的主键 (primarykey)和外键

(foreignkey)建立起来的。

(3)主键:匡助MySQL 以最快的速度把一条特点的数据记录的位置确定下来

注意: 主键必须是惟一的

主键应该是紧凑的,因此整数类型比较适合

(4)外键:引用此外一个数据表的某条记录

注意:外键列类型尽可能与主键列类型保持一致

外键列应该加之 NOTNULL

例子:

主键:

外键:(自动检查外键是否匹配,仅合用 InnoDB)

/

创建完表之后再创建外键的方法:

格式:ALTERTABLE 表名ADDCONSTRAINT 外键名 FOREIGNKEY(外键)REFERENCES 另一个表名(参

考主键);

删除外键:

格式:

ALTERTABLE 表名 DROPFOREIGNKEY 外键名字(注意:这里是外键的名字,而不是外键列名)

9、主表和从表

(1)当主表中没有对应的记录时,不能将记录添加到字表

/