数据库的介绍
- 数据库
- 数据库 :存储数据的仓库
- 数据库软件分类 :
- MySQL,Oracle,SQL Server,MongoDB,DB2,
MariaDB,Redis… - 分类 :
根据数据的存储方式不同,划分为 :- 关系型数据库
采用标准化的行和列构建二维表存储数据,
表与表之间的逻辑关联称为关系。
MySQL, Oracle, SQL Server,DB2,MariaDB - 非关系型数据库 (NoSQL-Not Only SQL)
采用键值对的形式存储数据
MongoDB,Redis(缓存)
- 关系型数据库
- 如何选择
- 数据存储方式
- 是否开源 :
开源 :MySQL MariaDB MongoDB
闭源 :Oracle DB2 ,SQL Server - 是否跨平台 :
不跨平台 : SQL Server
跨平台 :…
- MySQL,Oracle,SQL Server,MongoDB,DB2,
- 数据库与数据仓库
数据库 :提供数据存储和数据操作的服务(DataBase)
数据仓库 :存储海量数据,提供数据分析与挖掘
(Data WareHouse - DW/DWH)
**
MySQL 数据库
**
-
关系型数据库 :
1. 数据以二维表形式存储
2. 表中的每一行,称为一条记录
3. 表中的每一列,称为一个字段
2.MySQL 安装- Ubuntu :
1. 安装服务端
sudo apt-get install mysql-server
2. 安装客户端
sudo apt-get install mysql-client
3. ubuntu 软件更新
1. sudo apt-get update
访问源列表中的所有网址,读取软件列表,保存
到本地(/var/lib/apt/lists/)
2. sudo apt-get upgrade
把本地已安装软件与刚下载的软件列表进行对比
如果当前软件版本低,则更新
3. 修复依赖关系
sudo apt-get -f install
3.MySQL 语句规范 - 每一条命令以;结束
- SQL命令不区分大小写
- 使用/c终止当前命令
- Ubuntu :
-
基本SQL命令
- 库的基本操作
- 查看已有库
show databases; - 创建数据库
create database 库名; (默认字符集为Latin1)
create database 库名 character set utf8;
建库的同时指定字符集 - 查看创建库的语句(查看字符集)
show create database 库名; - 查看当前所在库
select database(); - 使用已有库/切换数据库
use 库名; - 查看当前数据库中的所有表
show tables; - 删除数据库
drop database 库名;
- 查看已有库
- 库的基本操作
-
表的基本操作
1. 创建表
create table 表名(字段名 数据类型, 字段名 数据类型, 字段名 数据类型);
2. 查看表的字符集
show create table 表名;
3. 查看表结构(表中包含哪些字段)
desc 表名;
4. 删除表
drop table 表名; -
表记录管理
1. 插入记录
insert into 表名 values (字段值,字段值),(字段值,字段值);
指定字段插入数据:
insert into 表名(字段1,字段2) values(字段值,字段值);
2. 查询记录
select * from 表名; (查询所有数据)
select 字段名,字段名 from 表名; (查询指定字段)
指定查询条件
select * from 表名 where 条件; -
更改数据库默认字符集
1. 方法 :修改数据库的配置文件
2. 步骤 :
1. 获取root权限
sudo -i
2. cd /etc/mysql/mysql.conf.d/
3. 文件备份(必须执行)
cp mysqld.cnf mysqld.cnf.bak
4. 修改配置文件
subl mysqld.cnf
找 :
[mysqld]
添加
character_set_server = utf8
5. 保存文件,重启服务
sudo /etc/init.d/mysql restart
Mac :
/etc/my.cnf -
客户端的连接与断开
连接 : mysql -h主机名 -u用户名 -p密码
只有连接成功,才可以使用数据库服务,书写
SQL语句
断开 :
exit; | quit; | \q;
断开与客户端的链接,并不会结束服务
结束服务使用 :
sudo /etc/init.d/mysql stop -
数据类型
- 数值类型
- 整数
- int (大)整型 (占据4个字节)
取值范围 :
无符号整型(unsigned) :0 ~ 2(32)-1
有符号整型(signed 默认为有符号) : -2(31)~2(31)-1 - tinyint 微小整型 (占据1个字节)
有符号整型 :-128 ~ 127
无符号整型 :0 ~ 255
例 :
age tinyint unsigned - smallint 小整型 (占据2个字节)
- bigint (极)大整型 (占据8个字节)
- int (大)整型 (占据4个字节)
- 浮点数
- float (4个字节,最多表示小数点后7位)
用法 :
字段名 float(m,n)
m表示总位数,n表示小数位的位数 - double(8个字节,最多表示小数点后15位)
- decimal 最多表示到小数点后28位
用法 :
decimal(m,n) - 浮点型使用注意 :
- 如果插入的是整数数据,小数位会自动补0
- 如果插入数据的小数位超出指定位数,会自动
四舍五入 - 整数位超出限制,插入失败
- float (4个字节,最多表示小数点后7位)
- 整数
- 字符类型
-
定长 char(长度)
长度取值范围 :1 ~ 255 -
变长 varchar(长度)
长度取值范围 :1 ~ 65535
定长与变长的区别 :
定长 :根据指定的长度固定分配存储空间
char(10)
存储’a’,也要分配10个字符的空间
优点 :效率高,速度快
缺点 :浪费存储空间变长 :在不超过指定长度的情况下,动态分配存储
空间
varchar(10)
存储’a’,动态根据数据的字符长度分配空间
优点 :节省存储空间
缺点 :效率比定长存储要低
共同点 :
给出的长度,就是最大输入的字符数,超出则
无法存储
例 :
name varchar(10)
“wangzhaojun” 超出无法存储 -
长文本存储
text
longtext (4G) -
二进制数据存储
blob
longblob (4G) -
数值类型的显示宽度与字符型的最大字符数
int(11) 显示宽度与存储空间无关
借助zerofill关键字,查看整型的显示宽度
例 :
id int(5) zerofill
存储数据 :
insert … (5) ->显示00005
insert … (1234567) -> 显示1234567
insert … (123456789012345):
error : 超过了当前数据类型的表示范围
int unsigned : 2(32) - 1 (42亿多)char(10)设置数据的存储空间,超出则无法存储
-
- 枚举类型
1. enum 类型 (表示单选)
枚举是一个字符串对象,可以将一些
不重复的字符串存储成一个预定义的集合,字段存储
数据时,必须从集合中选择,不在集合范围的都是非法值
2. set 类型 (实现多选)
特殊的枚举类型,用法与enum一致,提供字符串类型
的集合(选项)
- 数值类型