数据库
总览
day1 介绍数据库\安装\基础的命令
day2 数据库的表操作
day3 数据库的数据操作,查询(单表\多表)
day4 查询和其他内容的拾遗
day5 索引原理和python操作mysql
软件就是让频繁的人做的事情,交给机器去做了 ------- Eva-j
day1
背景
数据库在开发的过程中占据着什么样的位置?
我们把数据存储在文件里
#写 writE
#读 read
#改 读->写->删->改
能够更加简单的 使用 存储在文件中的数据
查 一行数据 从userinfo 条件 id = 10 或者 id =1 找500000 得找500000行
在整个项目中又有什么意义?
数据库: 能够更加简单的 使用 存储在文件中的数据
能够更好的解决并发问题
第一个相对论:即使client 依赖数据库 又是server 提供用户
数据的统一问题
数据
1,alex,alex3714 # 一行内容就是一条数据
2,python,19800,6 months # 一条数据
数据库 DataBase DB
存储数据的地方,我们把所有的数据都存储在一个固定的地方,那么这个地方就是数据库
数据库管理系统 DBMS
负责管理数据仓库中存储的所有文件中的内容
能够更好(简单 高效 安全)的帮助我们完成数据的增删改查
数据库服务器
什么是服务器 : 本质就是一台计算机
当一台计算机上安装了某个软件能够对外提供服务的时候,那么这台机器就成为服务器
数据库服务器
当这台机器上安装的服务是一个数据库的server端的时候,我们就得到了一台数据库服务器
数据库管理员 DBA
专门帮助我们管理数据库 并且优化数据库的工作人员
mysql就是一个DBMS(能够管理硬盘上数据文件的一个软件)
通过一些固定的简单的指令 帮助我们完成从文件中查找对应数据的软件
oracle 也是一个DBMS
查 name,id 从 userinfo 条件 age = 83
查 number 从 userinfo 条件 name='wusir'
数据库管理系统的作用:
关系型数据库
id name age phone_num 知道一个id 可以找到age 知道age 找到id name
mysql oracle sql server sqlite (学会一个其他的差不多)
非关系型数据库
key -value
通过一个找其他所有 而不能通过别的找别的(查找速度非常快)快递订单
redis(进程之间的通信 数据库非常火的一个) mongodb (之后做的 智能机器人的库)
mysql 开源的软件 - 小公司 各种互联网公司(二次开发之后的mysql)
oracle 付费的 - 金融行业 国企事业单位
sql server 在学校里教学使用的
如果关系非常关联用关系型。 如果不关联,都可以非关系型的
mysql 安装
先配置my.ini 里面的每行没有空格 设置安装目录
加环境变量
安装目录在\bin 文件里
cmd 管理员运行 安装目录\bin\mysqld install
net start mysql 启动mysql 找不到dir文件,用360修复一下
mysql -uroot -p
enter pw : 回车 之后进入mysql 就对了
show variables like '%charac%'; value 都是utf8就对了
mysql卸载
D:\mysql\mysql-5.6.43-winx64\mysqld remove 移出服务
把mysql整个文件都删掉\环境变量也删掉
重启电脑
环境变量
当我们执行一个系统中的可执行文件的时候
例如 mysql.exe或者 mysqld.exe或者python.exe
如果我们不配环境变量,
那么就需要进入mysql.exe所在的目录去执行
或者带着这个文件的绝对路径去执行
我们经常要执行这些文件
所以把文件的路径添加到环境变量中
就可直接输入文件名来执行程序了
一些命令
mysqld install
#mysqld.exe install 要安装mysql的server端 是一个程序而不是一个进程
net start mysql 启动server端
ftp一样 只有server 运行不了 开启自启动 以后不需要启动了额
mysql -uroot -p 启动client端
重启server
net stop mysql
net start mysql
client端的启动
c://>mysql -uroot 表示没有密码的情况下用root用户登录
c://>mysql -uroot -p 表示使用密码登录
Enter password:输入密码,如果没有密码直接回车
mysql命令行
mysql > select user(); 查看当前用户
set password = password('123'); 给当前用户设置密码
show databases; 查看当前的所有数据库
能不能给一个用户一个root ?
root 用户在mysql 当中相当于管理员用户
其他的程序员想要使用数据库来存储项目数据,不能给他权限最高的管理员用户
比如 : 创建一个eva 账户,Ta可以查看她的文件内容
创建一个liu账户,他可以查看他的文件内容 不能看别的 也没管理权删别的
可以创建用户 并且给用户授权
可以创建用户 并且给用户授权
create user '[email protected].%'; 什么都做不了 没有权限
create user '[email protected].%' identified by '123'; 带密码登录
既可以给一个已经 存在的用户授权 ,也可以给一个不存在的用户创建并授权
grant 权利 on '数据库名.表名' to '用户名@ip地址' ;
grant 权利 on '数据库名.表名' to '用户名@ip地址' identified by '123' ;
#权利:SELECT INSERT UPDATE DELETE ALL #对所有的项目增删改查 最高的权限了
创建一个数据库 s20_day1;
create database s20_day1 ;
连老师的数据库
创建一个stu 用户 密码是123 ip地址是192.168.16 网段的所有机器
能对这个数据s20_day1 做增删改查的所有操作:
grant all on 's20_day1.*' to '[email protected].%' identified by '123';
192.168.16.13
mysql- ustu -h192.168.16.13 -p
123
# grant all on s20_day1.* to 'stu'@'192.168.16.%' identified by '123';
# 用户名 密码 ip地址
# mysql -u用户名 -hip地址 -p
# 密码
DDL DML DCL
一般用ddl dml。 dcl 是授权
1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
2、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
3、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
ddl语言 文件夹(数据库)的增删改查
创建数据库:
create database 数据库名; 指定编码utf8 ; 默认就是utf8 创建成功之shiy
使用数据库:
use 库名;
查看数据库下有哪些表:
show tables;
改: alter database .... 改编码格式
删除: drop database db1:
操作文件(重点)
创建表:
create table 表名(字段名 数据类型(长度),字段名2 数据类型(长度),...)
查看表结构:
desc 表名;
修改表
alter table 表名 change name username char(12); 比如:字段名2name 改成username
删除表
drop table t1;
dml 语言
数据的增删改查
增加
insert into 表名 values (值1,值2,...); 插入一条数据
insert into 表名 values (值1,值2,...),(值1,值2,...),(值1,值2,...); 插入多条数据
查看数据
select * from 表名;
修改数据
update 表 set 字段名=值 where 条件;
删除数据
delete from 表 where 条件;
insert into t1 values(1,'alex','ab');
insert into t1 values(2,'wusir','t123'),(3,'taibai','333');
update t1 set password ='222' 把所有的ab t12 333 都改成了222
update t1 set set password = '222' where id =3 ; 改一个
select * from t1;
delete from t1 where id = 1;