6.《MySQL数据库简介》
1数据库的诞生: 人类在进化的过程中,创造了数字、文字、服务号等进行数据的记录,但是随着认知能力和创造能力的提升,数据量越来越大,对于数据的记录和准去的查找,成为了一个重大难题。计算机诞生后,数据开始在计算机中存储并计数,并设计出了数据库系统 ---------------------------------------------------------------------------------- 2.数据库解决的问题: 1、持久化存储 2、优化读写 3、保证数据的有效性 ---------------------------------------------------------------------------------- 3为什么要使用数据库: 因为数据量越来越大,有效的存储对应的数据 说明: ATM系统,用户名和密码 tom#123456 lilei#234567 hanmeimei#456789 使用数据库存储用户的账号密码 ---------------------------------------------------------------------------------- 4.mysql(充当管理文件的软件)数据库: 服务端软件 socket服务器 解析指令(SQL语句) 本地文件的操作 客户端软件(各种各样) socket客户端 发送指令(SQL语句) ---------------------------------------------------------------------------------- 5.据库的分类: 文档型:例如SQLit,就是一个文档型数据库,通过对文件的复制完成数据库的复制 服务型:例如mysql,数据存储在一个物理文件中,但是需要使用终端以tcp/ip协议连接,进行数据库的读写操作 ---------------------------------------------------------------------------------- 6.三范式简介: 概念:经过研究和对使用中问题的总结,对于设计数据库提出了一些规范,这些规范被称为范式 范式: 1、列不可拆分 2、唯一标识 3、引用主键 说明:后一个范式,都是在前一个范式的基础上建立的 ---------------------------------------------------------------------------------- 7.E-R模型简介: 当前物理的数据库都是按照E-R模型进行设计的 E(entry):实体 R(relationship):关系 一个实体转为数据库中的一个表 关系描述两个实体之间的对应规则 1、一对一 2、一对多 3、多对多 关系转为数据库表中的一个列,在关系型数据库中一行就是一个对象(数据) ---------------------------------------------------------------------------------- 8.主要操作: 数据库的操作: 创建 删除 表的操作: 创建 修改 删除 数据的操作(crud): 增加 修改 删除 查询 inser update delete select
7.Linux系统安装MySQL
sudo apt-get update sudo apt-get install mysql-server 安装过程中输入用户名与密码 服务命令 启动服务 sudo service mysql start 停止服务 sudo service mysql stop 重启服务 sudo service mysql restart
8.连接MySQL
8.1注意
安装后mysql默认有一个root用户
使用root用户登录 mysql -uroot -p 输入密码
指令必须以分号结尾,不能是中文字符
8.2创建数据库
1.show databases; 显示所有数据库 其中默认的数据库为 mysql 用户权限相关的数据 information_schema mysql本身架构相关数据 ---------------------------------------------------------------------------------- 2.创建数据库 格式: utf-8格式:create database 数据库名称 default charset utf8 collate utf8_general_ci; gbk格式:create database 数据库名称 default charset gbk collate gbk_chinese_ci; 示例: creat database echo1901 defult charset utf8 collate utf8_general_ci; 其中 utf8_general_ci 为排序的意思 ---------------------------------------------------------------------------------- 3.使用数据库 格式: use 数据库名称; 示例: use echo1901; 查看当前正在使用的数据库: select database(); 显示当前使用的数据库中所有的表: show tables;
8.3用户管理
1.注意 需要使用Mysql的root用户 ---------------------------------------------------------------------------------- 2.创建用户 格式: create user '用户名'@'IP地址' identified by '密码'; 示例: create user 'echo'@'10.0.120.123' identified by 'echo1996'; 允许10.0.120.199机器使用echo用户登录 create user 'echo'@'10.0.120.%' identified by 'echo1996'; 允许10.0.120.*机器使用echo用户登录 create user 'echo'@'%' identified by 'amor5438'; 允许所有机器使用echo用户 ---------------------------------------------------------------------------------- 3.查看 use mysql; show tables; select user,host from user; ---------------------------------------------------------------------------------- 4.删除用户 格式: dorp user '用户名'@'IP地址'; ---------------------------------------------------------------------------------- 5.修改用户 格式: rename user '原用户名'@'原IP地址' to '新用户名'@'新IP地址'; ---------------------------------------------------------------------------------- 6.修改密码 格式: set password for '用户名'@'IP地址'=password('新密码');
8.4授权管理
1.注意: 需要使用root用户 ---------------------------------------------------------------------------------- 2.查看权限 格式: show grants for '用户名'@'IP地址'; 示例: 子主题 ---------------------------------------------------------------------------------- 3.授权 格式: grant 权限 on 数据库.数据库中的表 to '用户名'@'IP地址'; 示例: grant select,insert,update,delete on py1901.students to 'echo'@'%'; 给suzhan用户添加对于py1901数据库下的students表的查看\插入\修改\删除的权限 grant select,insert,update on py1901.* to 'echo'@'%'; 给suzhan用户添加对于py1901数据库下所有表的查看\插入\修改的权限 grant all privileges on py1901.* to 'echo'@'%'; 给echo用户添加对于py1901下所有表除了grant(赋予权限)权限以外的所有权限 ---------------------------------------------------------------------------------- 4.授权说明 update 使用update reload 使用flush shutdown 使用mysqladmin shutdown(关闭MySQL) super 使用change master、kill、logs、purge、master和set global。还允许mysqladmin调试登陆 replication client 服务器位置的访问 replication slave 由复制从属使用 ---------------------------------------------------------------------------------- 5.取消授权 格式: revoke 权限 on 数据库.表 from '用户名'@'IP地址'; ---------------------------------------------------------------------------------- 6.将数据读取到内存中,从而立即生效 flush privileges;
8.5开发使用说明
后期开发基本不会使用root用户,进入公司后,公司DB人员会提供一个用户名和密码并说明可以操作那些数据库,
这样可以避免因某个账号密码泄露而威胁整个mysql数据库
8.6修改配置文件
1.打开文件 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf ---------------------------------------------------------------------------------- 2.修改内容 通过(shift+:+/bind-address)找到bind-address参数 bind-address> =0.0.0.0 保存并退出 ---------------------------------------------------------------------------------- 3.重启mysql服务 sudo service mysql restart
8.7阿里云安全组协议
8.8远程连接mysql
mysql -h ip地址 -u 用户名 -p navicat图形化界面
9.数据库的操作
9.1创建
1.创建 格式: utf-8格式:create database 数据库名称 default charset utf8 collate utf8_general_ci; gbk格式:create database 数据库名称 default charset gbk collate gbk_chinese_ci; 示例: creat database echo1901 defult charset utf8 collate utf8_general_ci; 其中 utf8_general_ci 为排序的意思 -------------------------------------------------------------------------------------------
9.2.删除
drop database 数据库名
9.3.切换
use 数据库名
9.4.查看
show databases; select database();
10.数据库中表的操作
10.1查看数据库中所有的表
show tables;
10.2创建数据库中的表
1.数据的完整性: 一个数据库就是一个完整的数据单元,可以包含多张表,数据被存储到表中,在表中为了更加准确的存储数据,保证数据库的正确有效,可以在建表的时候,为表添加一些强制性的验 证,包括数据字段类型、约束 ---------------------------------------------------------------------------------- 2.创建表 格式: create table 表名(列名 类型[约束[,.....]][,.....]) engine=引擎 default charset=编码; 名词解析: 表名:给数据集合起的名字 列名:字段名称,遵守标识符规则 类型: 明确字段存储的数据类型 具体查看<<mysql类型文档>> 约束:后续单独讲 引擎: myisam 默认引擎,不支持事物 innodb 支持事物,原子性操作 编码:必须与数据库编码相同,解决存储编码错误问题 建表示例: create table students( id int not null auto_increment, name char(20), age int, sex bit, score float, birthday date, grade enum('python01','python02','python03'), hobby set('power','money','girl','boy'), content varchar(100), primary key(id) ) engine=innodb default charset=utf8; 或者: create table students( id int not null auto_increment primary key, name char(20), age int, sex bit, score float, birthday date, grade enum('python01','python02','python03'), hobby set('power','money','girl','boy'), content varchar(100) ) engine=innodb default charset=utf8; 测试数据: insert into students values(0,"suzhan",18,1,100,"2001-10- 01","python01","power,money","suzhan is a good man"); insert into students values(0,"zhange",18,1,100,"2001-10- 01","python04","power,money","zhange is a good man"