数据库简介
人类在进化的过程中,创造了数字、文字、符号等来进行数据的记录,但是承受着认知能力和创造能力的提升,数据量越来越大,对于数据的记录和准确查找,成为了一个重大难题
计算机诞生后,数据开始在计算机中存储并计算,并设计出了数据库系统
数据库系统解决的问题:持久化存储,优化读写,保证数据的有效性
当前使用的数据库,主要分为两类
文档型,如sqlite,就是一个文件,通过对文件的复制完成数据库的复制
服务型,如mysql、postgre,数据存储在一个物理文件中,但是需要使用终端以tcp/ip协议连接,进行数据库的读写操作
E-R模型
当前物理的数据库都是按照E-R模型进行设计的
E表示entry,实体
R表示relationship,关系
一个实体转换为数据库中的一个表
关系描述两个实体之间的对应规则,包括
一对一
一对多
多对多
关系转换为数据库表中的一个列 *在关系型数据库中一行就是一个对象
三范式
经过研究和对使用中问题的总结,对于设计数据库提出了一些规范,这些规范被称为范式
第一范式(1NF):列不可拆分
第二范式(2NF):唯一标识
第三范式(3NF):引用主键
说明:后一个范式,都是在前一个范式的基础上建立的
mysql命令及操作
启动
service mysql start
停止
service mysql stop
重启
service mysql restart
mysql -hlocalhost -uroot -p :登录mysql,运行命令
创建数据库
create database 数据库名 charset=utf8;
删除数据库
drop database 数据库名;
切换数据库
use 数据库名
查看当前选择的数据库
select database();
表操作
修改表
alter table 表名 add|change|drop列名 类型; 如:alter table students add birthday datetime;
删除表
drop table 表名;
查看表结构
desc 表名;
更改表名称
rename table 原表名 to 新表名;
查看表的创建语句
sow create table '表名';
数据操作
查询
select*from 表名
增加
全列插入:inset into 表名 values(...)
缺省插入:insert into 表名(列1,...)values(值1,...)
同时插入多条数据:insert into 表名 values(...),(...)...;
或insert into 表名(列1,...)values(值1,...),(值1,...)...;
修改
update 表名 set 列1=值1,...where 条件
删除
delete from 表名 where 条件
逻辑删除,本质就是修改操作update
alter table students add isdelete bit default 0; 如果需要删除则 : update students isdelete = 1where ...;
数据备份
进入超级管理员
sudo -s
进入mysql库目录
cd /var/lib/mysql
运行mysqldump命令
mysqldump -uroot -p 数据库名 >~/Desktop/备份文件.sql;
按提示输入mysql的密码
数据恢复
链接mysql,创建数据库
退出链接,执行如下命令
mysql -uroot -p 数据库名 < ~/Desktop/备份文件.sql
根据提示输入mysql密码