主要:
基础
字段类型
基础
基本概念
1) 数据库分类
层次数据库, 网状数据库, 关系数据库
常见: SQL Server, Oracle,infomix,sybase,ibmDB2,Mysql
2)数据库存储的本质和表现:
存储本质: 将 数据值 通过数据管理系统进行有序的存储
存储表现:
每个数据库对应一个文件夹
每个数据表对应一个或多个文件
3)mysql 数据库的各层次关系:
1 个数据库系统包含有多个数据库
1 个数据库可以有多张数据表
一个数据表可以有多个字段 (数据项) 和多行数据(记录)
4)基本概念
sql : 是关系数据库的 语言标准. Struct Query Language 结构化查询语言
数据库 database: 存储各种数据 data
数据库管理系统 dbms: Database Management system
数据表 table, 字段 field, 列 column, 行 row, 记录 record
数据库操作的基本模式(流程)
step 1: 建立连接: 身份认证
step 2: 客户端发送 sql 命令
step 3: 服务端执行命令, 返回结果
step 4: 客户端接收结果并显示
step 5: 断开连接
[点击查看] 数据库操作的基本模式(流程)
mysql 系统级操作
安装与配置 [略]
启动与停止 mysql 数据库服务
命令模式[管理员] : -- 非管理员才做可能发生 提示 "发生系统错误 5"
启动: net start mysql
停止: net stop mysql
服务模式: 通过服务来启动或停止 控制面板管理工具服务mysql 启动 / 停止
登录与退出:
首先设置 mysql 环境变量
登录:
形式 1: mysql -h 服务器地址 -u 用户名 -p -P 端口号
形式 2: mysql --host = 服务器地址 --user = 登录名 --port = 端口号 --password
默认端口: 3306
退出:
exit 或 quit
备份与恢复数据
通常是用于数据库的 "迁移": 将某台数据库服务器中的某个库,"搬迁" 到另一个数据库服务器中去
也常用于数据的 "安全备份": 就是数据库实际运行中, 防止数据库系统崩溃, 防止数据库被黑客入侵
备份 [管理员身份] :
mysqldump -h 服务器地址 -u 登录名 -P 端口号 -p 数据库名>完整路径的文件名
恢复:
未登录恢复:
mysql -h 服务器地址 -u 登录名 -P 端口号 -p 数据库名<完整路径的 sql 文件名
登录后恢复:
source '备份数据文件的完整路径'
[点击查看] 备份与恢复形式
基础语法
1) 注释:
单行注释:
#注释内容
-- 注释内容(-- 与注释之间有一个空格)
多行注释
/* 注释内容 */
注(经过测试): 如果是 /*! 语句 */; 这个仍然会执行 如 /*!show tables */;
[点击查看] 单行注释与多行注释
2)语句行
结束符: 分号(默认)
修改结束符: delimiter 结束符 如: delimiter //
3)大小写
不区分大小写
但对于区分大小写的系统中, 生成文件或文件夹的操作是区分大小写的 如: 创建库, 表会生成对应目录和文件
文件或目录在 Linux,Unix 中严格区分大小写. windows 中不区分大小写
4) 命名规则
字母和下划线, 不用数字开头.
如果是非常规字符, 要使用反引号
数据库名, 表名, 视图名, 字段名, 函数名, 过程名通常使用小写, 并使用下划线分割法
字段类型
1) 形式:
字段名 类型名 [(M)] [unsigned] [zerofill]
M: 显示长度 与 zerofil 结合使用 不够长度左侧自动补 0
设置 zerofill, 则表示该字段同时具备 unsigned.
2) 主要分 3 类
数值型, 字符型, 时间型
数值型
1) 整数型:
类型 所占字节数
tinyint 1 字节
smallint 2 字节
mediumint 3 字节
int 4 字节
bigint 8 字节
- create table tab_int(
- f1 int unsigned,
- f2 tinyint zerofill,
- f3 bigint(10) zerofill
- );
- insert into tab_int (f1,f2,f3) values( 15, 15, 15);
- select * from tab_int;
[点击查看] 整数型测试 Demo
2) 小数型
单精度浮点型 float: (单精度 4 个字节, 精度 6~7 位有效数字)
双精度 double: (双精度 8 个字节, 约 20 个有效数字, 别名: real)
定点型: decimal (别名: dec numeric fixed, 整数最大 65 位, 小数最多 30 位)
如果整数部分超过最大设定的位数, 则会自动设置为最大值. 如 decimal(5,2), 插入数据 1234.11 则结果为 999.99
decimal(总的位数, 小数位数)
- create table tab_float(
- f1 float,
- f2 double,
f3 decimal(10,3) -- 总数 10 位数, 小数 3 位
- );
- insert into tab_float (f1, f2, f3) values
- (123.456789, 123.456789, 123.456789),
- (123456789, 123456789, 1234567),
- (123456789, 123456789, 1234567.11);
- select * from tab_float;
[点击查看] 浮点型测试 Demo
字符型
字符型要使用引号引起来
vachar 类型:
概念: 变长字符串, 使用时必须设定其长度.
最大长度: 理论最大 65535 个字符, 实际最大只能是 65533 个字符
原因: 一个表格的一行 的数据存储最大容量限制: 65535
编码不同则最大长度也不同:
存储中文 gbk: 最大长度是 65533/2 个
存储中文 utf8: 最大长度是 65533/3 个
实际存储: 存储长度由存储内容决定, 设置值为最多可存储的字符个数
char 类型
概念: 定长字符串 , 使用时一般需要设置其长度. 不设置长度, 则默认是 1.
最大长度: 255 个
实际存储: 如果少于设定长度, 会以空格填满
适用于: 存储的数据长度是固定长度的字符. 如: 邮编, 手机号码等
enum 类型
概念: (枚举)单选项字符串数据类型, 使用时, 需要给定 固定的几个选项. 存储的时候, 只存储其中一个值
形式: enum("选项 1", "选项 2",....)
实际存储: 字符串选项值对应数字: 1,2,3,4,5,.. 最多 65535 个选项
写入数据形式: 可以是该选项字符串本身, 也可以用对应的数字
适用于: 存储表单界面中的 "单选项值"
set 类型
概念: 多选项字符串数据类型, 使用时, 需要给定 固定的几个选项. 存储的时候, 存储其中若干个值
形式: set("选项 1", "选项 2",....)
实际存储: 字符串选项值对应数字 1,2,4,8,16... 最多 64 个选项
写入数据形式: 可以用选项字符串并用逗号隔开, 也可以使用对应的 "数字的和"
适用于: 存储表单界面中的 "多选项值"
-- enum set 使用 Demo
- create table enum_set(
- id int unsigned auto_increment primary key,
- gender enum('男','女'),
- fav set('篮球','足球','跑步','读书','写字')
- );
insert into enum_set (id, gender, fav) values(null,'男','篮球'),(null,1,1); -- 两行 enum 字段一致
insert into enum_set (id, gender, fav) values(null, '男', '篮球, 跑步, 写字'),(null,1,19); -- 两行 set 字段一致
-- 篮球 = 1 跑步 = 2 写字 = 16 ==> 对应的和 19
select * from enum_set;
[点击查看] set 与 enum 操作 Demo
text 类型
概念: 长文本字符类型. 其中存储的数据不占表格中的数据容量限制
其他同类型: smalltext tinytext longtext
其他类型
binary 类型: 定长二进制字符串类型. 存储二进制值
varbinary 类型: 变长二进制字符串类型. 存储二进制值
blob 类型: 二进制数据类型. 存储二进制值. 适用于存储图片, 视频, 其他文件等.
时间型
时间类型: 要用引号引起来
1) datetime 类型: 时间日期类型
2) date 类型: 日期类型
3) time 类型: 时间类型
4) year 类型: 年份类型
5) timestamp 类型: 时间戳类型. 是一个数字. 不需要手动插入数据, 系统自动填入
js 中获取事件戳: gettime() ; 单位是毫秒
php 中获取时间戳: time(); 单位是秒
mysql 中: 自动获得时间戳的数据值, 既 now()
-- 时间类型数据表
- create table tab_time(
- dt datetime,
- d date,
- t time,
- y year,
ts timestamp -- 该字段不需要插入数据, 系统自动填入
- );
- insert into tab_time (dt,d,t,y) values('2018-07-07 24:24:24', '2018-07-07','24:24:24','2018'),(now(),now(),now(),now());
- select * from tab_time;
[点击查看] 时间类型 Demo
其他类型
1) 位类型 bit
使用形式: bit[(M)] 其中 M 是 1-64 的数字. 表示使用多少二进制数字来存储数据
插入形式: b 'value' 如 b '101'
2) 序列类型 serial
实质是 bigint unsigned not null auto_increment unique 的一个别名
3) 布尔类型 bool
实质是 tinyint(1) 的一个同义词. 其值为 0 表示 false, 否则表示 true
来源: https://www.cnblogs.com/yangp67/p/9278338.html