#!/usr/bin/env python
-- coding:utf-8 --
数据库
# 很多功能如果只是通过操作文件来改变数据是非常繁琐的
# 程序员需要做很多事情
# 对于多台机器或者多个进程操作用一份数据
# 程序员自己解决并发和安全问题比较麻烦
# 自己处理一些数据备份,容错的措施
C/S架构的 操作数据文件的一个管理软件
# 1.帮助我们解决并发问题
# 2.能够帮助我们用更简单更快速的方式完成数据的增删改查
# 3.能够给我们提供一些容错、高可用的机制
# 4.权限的认证
数据库管理系统 —— 专门用来管理数据文件,帮助用户更简洁的操作数据的软件
# DBMS
数据 data
文件
文件夹 – 数据库database db
数据库管理员 —— DBA
数据库管理系统
# 关系型数据库
# sql server
# oracle 收费、比较严谨、安全性比较高
# 国企 事业单位
# 银行 金融行业
# mysql 开源的
# 小公司
# 互联网公司
# sqllite
# 非关系型数据库
# redis
# mongodb
10.1设置数据库
下载和安装
mysql为我们提供开源的安装在各个操作系统上的安装包,包括ios,linux,windows。
mysql的安装、启动和基础配置 —— linux版本 (https://www.cnblogs.com/Eva-J/articles/9664401.html)
mysql的安装、启动和基础配置 —— mac版本 (https://www.cnblogs.com/Eva-J/articles/9664401.html)
mysql的安装、启动和基础配置 —— windows版本 (https://www.cnblogs.com/Eva-J/articles/9669675.html)
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=F:\mysql_install\mysql-5.6.44-winx64\mysql-5.6.44-winx64
# 设置mysql数据库的数据的存放目录
datadir=F:\mysql_install\mysql-5.6.44-winx64\mysql-5.6.44-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#在原环境下添加\;F:\mysql_install\mysql-5.6.44-winx64\mysql-5.6.44-winx64\bin
#打开cmd用管理员命令开启
#输入:mysqld install
#安装完成后输入:net start mysql登入
#再次输入:mysql -uroot -p
#不要输入密码直接进入
#输入 exit 退出
#进入mysql客户端
$mysql
mysql> select user(); #查看当前用户
mysql> exit # 也可以用\q quit退出
# 默认用户登陆之后并没有实际操作的权限
# 需要使用管理员root用户登陆
$ mysql -uroot -p # mysql5.6默认是没有密码的
#遇到password直接按回车键
mysql> set password = password('root'); # 给当前数据库设置密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpassword');
# 创建账号
mysql> create user 'eva'@'192.168.10.%' IDENTIFIED BY '123';# 指示网段
mysql> create user 'eva'@'192.168.10.5' # 指示某机器可以连接
mysql> create user 'eva'@'%' #指示所有机器都可以连接
mysql> show grants for 'eva'@'192.168.10.5';查看某个用户的权限
# 远程登陆
$ mysql -uroot -p123 -h 192.168.10.3
# 给账号授权
mysql> grant all on *.* to 'eva'@'%';
mysql> flush privileges; # 刷新使授权立即生效
# 创建账号并授权
mysql> grant all on *.* to 'eva'@'%' identified by '123'
mysql的账号操作
1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
2、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
3、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
1. 操作文件夹(库)
增:create database db1 charset utf8;
查:show databases;
改:alter database db1 charset latin1;
删除: drop database db1;
2. 操作文件(表)
先切换到文件夹下:use db1
增:create table t1(id int,name char);
查:show tables;
改:alter table t1 modify name char(3);
alter table t1 change name name1 char(2);
删:drop table t1;
3. 操作文件中的内容(记录)
增:insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');
查:select * from t1;
改:update t1 set name='sb' where id=2;
删:delete from t1 where id=1;
清空表:
delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
truncate table t1;数据量大,删除速度比上一条快,且直接从零开始,
*auto_increment 表示:自增
*primary key 表示:约束(不能重复且不能为空);加速查找
安装mysql遇到的问题
# 操作系统的问题
# 缺失dll文件
# 安装路径
# 不能有空格
# 不能有中文
# 不能带着有转义的特殊字符开头的文件夹名
# 安装之后发现配置有问题
# 再修改配置往往不能生效
# 卸载之后重装
# mysqld remove
# 把所有的配置、环境变量修改到正确的样子
# 重启计算机 - 清空注册表
# 再重新安装
mysql的CS架构
# mysqld install 安装数据库服务
# net start mysql 启动数据库的server端
# 停止server net stop mysql
# 客户端可以是python代码也可以是一个程序
# mysql.exe是一个客户端
# mysql -u用户名 -p密码
mysql中的用户和权限
# 在安装数据库之后,有一个最高权限的用户root
# mysql 192.168.12.87 eva/123
# mysql -h192.168.12.87 -uroot -p123
我们的mysql客户端不仅可以连接本地的数据库
也可以连接网络上的某一个数据库的server端
mysql>select user();
# 查看当前用户是谁
mysql>set password = password(‘密码’)
# 设置密码
创建用户
create user ‘s21’@‘192.168.12.%’ identified by ‘123’;
mysql -us21 -p123 -h192.168.12.87
授权
# grant all on day37.* to 's21'@'192.168.12.%';
# 授权并创建用户
# grant all on day37.* to 'alex'@'%' identified by '123';
查看文件夹
# show databases;
创建文件夹
# create database day37;
库 表 数据
# 创建库、创建表 DDL数据库定义语言
# 存数据,删除数据,修改数据,查看 DML数据库操纵语句
# grant/revoke DCL控制权限
库
# create database 数据库名; # 创建库
# show databases; # 查看当前有多少个数据库
# select database();# 查看当前使用的数据库
# use 数据库的名字; # 切换到这个数据库(文件夹)下
表操作
# 查看当前文件夹中有多少张表
# show tables;
# 创建表
# create table student(id int,name char(4));
# 删除表
# drop table student;
# 查看表结构
# desc 表名;
操作表中的数据
# 数据的增加
# insert into student values (1,'alex');
# insert into student values (2,'wusir');
# 数据的查看
# select * from student;
# 修改数据
# update 表 set 字段名=值
# update student set name = 'yuan';
# update student set name = 'wusir' where id=2;
# 删除数据
# delete from 表名字;
# delete from student where id=1;