一、数据库的分类和优点

数据库分为线性数据库、网状型数据库、树状型数据库和关系型数据库。我们主要学习关系型数据库。
数据库的优点:数据库可以持久化保存数据,同时可以用数据库语言对数据很轻松地进行数据的增删改查。

1、关系型数据库

  1. 关系型数据库的结构:由行和列组成的结构;

2、常见的关系型数据库

中型数据库处理大量数据时的初速较慢,效率较低;大型数据库处理大量数据时初速较快,效率高。一般中小型企业使用中型数据库,大型企业使用大型数据库。

(1)mysql

mysql:中型数据库,Oracle公司出品,免费;

(2)oracle

Oracle:大型数据库,Oracle公司出品,收费;

(3)SQLServer

SQLServer:中型数据库,微软出品,免费;

(4)DB2

DB2:大型数据库,IBM出品,收费。

二、数据库的结构

数据库的基本结构:服务器à库à表;
注意:一个服务器下可以有多个库,一个库里面可以有多个表。

三、数据可的基本操作命令

1、启动和关闭服务器

安装完mysql后,服务器默认是启动状态,一般情况不需要关闭服务器。

(1)方式一

1)右键我的电脑à管理à服务和应用程序à服务à找到mysql,然后打开或者关闭;
2)通过命令行找到服务和应用程序:cmdàservices.mscà找到mysql,然后打开或者关闭;

(2)方式二

Net startmysql服务的名字
Net stopmysql服务的名字

2、进入和退出服务器

注意:数据库操作命令必须以分号结束。

(1)进入服务器

首先打开cmd,然后输入以下命令:
mysql-u用户名 -p密码 -h 访问的ip -P端口号(默认是3036);
注意:
1)访问的IP:本机为localhost或者127.0.0.1;
2)可以不写-h和-P,这时默认本机和端口号为3036;
3)一般使用mysql-u用户名 -p,然后回车,再根据提示输入密码,可以使输入的密码隐藏,保证安全性。

(2)退出服务器

  1. 命令:exit;

3、数据库库和表格的基本操作命令

   setnames 编码集名:设置服务器编码集;

(一)对库的操作

(1)show databases;查看数据库中有的所有库;
注意:mysql本身带有两个库,不能擅自改动:information_schema 和mysql;
(2)create database 库名;创建一个库;
(3)drop database 库名;删除一个库;
(4)use 库名;进入一个库;
注意:不能重命名一个库名。

(二)对表格的操作

(1)show tables;查看一个库中有所有的表格;
(2)desc 表名;查看某一个表格的详细信息;
(3)create table 表名(字段1 数据类型,字段2,数据类型…);创建一个表格;
(4)drop table 表名:删除表;
(5)rename table 老表名 to 新表名:更改表名;
(6)alter table 表名add 字段名 字段类型:给表添加字段;
(7)alater table 表名 modify 字段名 新类型:更改表的字段类型;
注意:表中有数据时,更改类型时需注意新类型能否存放原来的数据,如果不能存放,则不能修改成功;
(8)alter table 表名drop 字段名:删除表的字段;

(三)表格的增删改查

(1)select * from 表名:查询全表全字段;
(2)select 字段名字段别名 from 表名 where 条件:根据条件查询某些字段;
(3)insert into 表名values(值1,值2,…):根据全字段顺序插入数据;
(4)insert into 表名(字段1,字段2,…) values(值1,值2,…):根据指定的字段顺序,插入指定字段的值;
(5)delete from 表名where 条件:根据条件,删除指定表中的数据;
(6)update 表名set 字段1=值1,字段2=值2,… where 条件;

四、数据库数据的类型

数据库数据类型共有五种,分别为:整数型、浮点型、定点型、字符型、时间型。
创建字段时遵循的原则:类型正确且合理,节省空间。

(一)数据库数据通用属性

给字段添加属性时,只需在创建字段或者修改字段时,在字段名后加空格,再加属性名。

1、notnull

表示:不允许为空;

2、default

语法:default 默认值
表示:该项数据未传入时显示默认值。

3、notnull default 值

表示:当没有插入该项数据时,可以插入成功,但是值未默认值。

(二)数据类型

1、整数型

数据类型 占字节 位数 有符号范围 无符号范围
tinyint 1 8 -128~127(-2^7~2^7-1) 0-255(2^8-1)
smallint 2 16 -32768~32767 (-2^15~2^15-1) 0-65535(0~2^16-1)
mediumint 3 24 正负800多万(-2^23~2^23-1) 正1600多万(0~2^14-1)
int 4 32 正负21E(-2^31~2^31-1) 0~正42E多(0~2^32-1)
bigint 8 64 (-2^63~2^63-1) (0~2^64-1)


(1)范围计算方法(以tinyint为例):
有符号范围
最小值:[-][1][1][1][1][1][1][1] à (12^0+12^1+12^2+…+126) à-(2^7-1)à -127;
最大值:[+][1][1][1][1][1][1][1] à 127;
无符号范围:
最小值:[0][0][0][0][0][0][0][0]à0;
最大值:[1][1][1][1][1][1][1][1]à(1
2^0+12^1+12^2+…+127)à2^8-1à255;
(2)属性
完整属性语法:数据类型(M)unsigned zerofill;
1)M:表示长度,即数的位数;
2)unsigned:表示无符号的,即表示正数;
注意:数据库默认的是有符号的范围,如需使用无符号范围,则需在类型后添加unsigned。
3)zerofill:表示0填充,表示如果传入的数字不足M位,则会在数字前面添加0,直到满足位数为止。一般同M一起使用。

2、浮点型

类型 范围 字节数
Float(M,D) 跟M和D有关系 4
Double(M,D) 跟M和D有关系 8

属性:
(1)M:表示小数点前后总位数;
(2)D:表示小数点后的位数。
例:float(6,2):有符号范围为:-9999.99-9999.99
无符号范围为:0-9999.99

3、定点型

类型 范围 字节数
decimal(M,D) 和浮点型规则一样 M+2

4、字符型

类型 名称 占字节 宽度范围(M的取值范围) 空间利用率
char(M) 定长字符串 M个字符 0~255 小于等于100%
varchar(M) 变长字符串 实际字符+1~2个字节 0~65535 小于100%

属性:
(1)M:代表字符串的长度;
(2)定长字符串的效率要高于变长字符串。

5、时间型

类型 范围
Year 1901-2155
Time -838:59:59’到’838:59:59
Date 1000-01-01~9999-12-31
Datetime Date和Time结合
Timestamp 1970-2037(了解,即将过期)

注意:
(1)如果需要传入一个时间格式的数据,需传入字符串格式的时间;
(2)时间A晚于时间B,则A>B。

五、数据库三范式

三范式的作用:约束数据库见表的规范性;
三范式的最终目的:使表格不存在冗余数据。

1、第一范式

设置主键:使表中没有完全重复的数据。
主键选择规则:
(1)一般选择与业务无关的字段,如自增的id;
(2)尽量选择数值型或者定长字符串类型,效率更高。

2、第二范式

建立关系表(多对多的关系):解决部分依赖,使表中没有冗余数据。
最终三张表:各自的业务表和一张关系表。
一般抽取两张业务表的主键字段组成关系表。

3、第三范式

设置外键,建立两张表之间的联系(一对多或者多对一):解决传递依赖,使表中没有冗余数据。
一般在副表中添加外键映射主表(即:主表的主键字段值添加到副表中)。
一般一对多,“多”为副表,“一”为主表。