文章目录
数据库
一.数据库是什么?
字面意思:存数据的仓库。
二. 为啥使用数据库?(***)
之前使用的是Excel来进行管理数据。
Excel的缺点:
1.管理不了大量的数据(10w量级的数据)
2.并发操作同一个数据表格。
3.数据支持高级的操作,比如:分组,连表等
三.数据库的分类。
关系型数据库
对买一列的数据类型会有约束,id(整型),name(字符串类型)
MYSQL,maridb---》用的比较多,因为是免费的
SqServer,-----》 微软,大学, 政府 (汽车之家)
Oracle,-----》甲骨文,收费。一般金融公司用得多。
sqlite,-----》自己理解,随便玩玩。
等
非关系型数据库
memcache -----》 十年前的产品(新浪微博)
mongodb-----》文档型数据库
redis -----》 微博
redis分布式缓存,微博。以key,values的形式存储。
最大区别:
关系型数据库,把数据存在硬盘中。
非关系型数据库,把数据存在内存中。mongodb,redis解决了内存断电消失的问题。
四.mysql的架构。
类似于 socket 的客户端和服务端。
流程:
1.mysql服务端先启动,监听在某一个特定的端口(3306)
2.MySQL客户端连接数据库服务端
3.MySQL客户端就可以发送相关的操作命令,去操作服务端存储数据。
五.mysql的安装(windows)
windows安装:
1.先去官网
先去官网(https://dev.mysq.com/downloads/mysql/)
2、解压
如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:\mysql-5.7.16-winx64
3、添加环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MiYvOkpF-1576057471033)(C:\Users\DELL\Pictures\Camera Roll\QQ图片20191210110136.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KK93zxOB-1576057471034)(C:\Users\DELL\Pictures\Camera Roll\QQ图片20191210110203.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bdR83fmX-1576057471035)(C:\Users\DELL\Pictures\Camera Roll\QQ图片20191210110214.png)]
4、初始化
mysqld --initialize-insecure
5、启动MySQL服务
mysqld : # 启动MySQL服务
6、启动MySQL客户端并连接MySQL服务
mysql -u root -p : # 连接MySQL服务器
常用的参数:(************************************)
-u :user 用户名
-p:password 密码
-h:host 主机名或ip mysql -u root -p -h 192.168.1.10
-P:port 默认是3306 mysql -u root -p -h 192.168.1.10 -P 3307
登录,设置密码:
初始状态下,管理员root,密码为空,默认只允许从本机登录localhost
设置密码
[在cmd中执行]# mysqladmin -uroot password "123" 设置初始密码 由于原密码为空,因此-p可以不用(无密码直接进入 ---》 不需要“-p 密码”)
[在cmd中执行]# mysqladmin -uroot -p"123" password "456" 修改mysql密码,因为已经有密码了,所以必须输入原密码才能设置新密码
命令格式:
[在cmd中执行]# mysql -h172.31.0.2 -uroot -p456
[在cmd中执行]# mysql -uroot -p
[在cmd中执行]# mysql 以root用户登录本机,密码为空
忘记密码:
#1 关闭mysqld的服务
#2 在cmd中执行:mysqld --skip-grant-tables ===》 不用密码就可以登录,绕过密码验证的权限
#3 在cmd中执行:mysql ===》 mysql -uroot -p
#4 执行如下sql指令:
update mysql.user set authentication_string=password('') where user = 'root';
flush privileges; (一定要操作)
#5 tskill mysqld #或taskkill -f /PID 7832
#6 重新启动mysql服务
6.退出数据库客户端:
- exit;
- quit;
注意: SQL语句末尾必须加 “;” 号。
- 查看操作系统中是否已经启动mysqld 服务端
- tasklist | findstr "mysqld"
- 杀死mysqld进程
- taskkill /F /PID pid号
- *****做服务端操作时,必须先以管理员身份打开
六.初始mysql
操作数据库
#### 增:
create + database + 数据库名称 + 类似于socket +分号 ;
命名规范:
1. 具有描述意义
2. 只能由数字/字母/下划线组成,不能以数字开头
3. 不能用python关键字
#### 删:
drop database 数据库名称 + 分号 ;
#### 改:
删除在添加
如果数据库中有数据的话,直接drop会导致数据库中的数据丢失
在线上环境,不能够直接删除数据,在删除之前
#### 查:
show databases + 分号;
对 :数据库(database)
- 库的操作 ---> 类似于文件夹
- 增:
语法: create database 库名;
- create database db1;
- 查
语法: show databases; # 查看所有库
show create database db1; # 查看db1库中的信息
- 改
语法: alter database 库名 charset="字符编码类型";
- alter database db1 charset="utf8";
- 删
语法: drop database db1;
- 表的操作 ---> 类似于文件
- 操作表前,需要先切换到指定库
语法: use 库名;
- use db1;
查看当前所在的库: select database()
对:表(table)的操作
- 增
varchar与char 都是字符串类型;
varchar(20)
语法: create table 表名(字段名 字段类型);
create table user_info(name varchar(20), age int);
- 查
show tables; # 查看当前库中所有的表
desc user_info; # 查看表结构
- 改
语法: alter table 表名 modify name varchar(28);
- alter table user_info modify name varchar(28);
- 删
语法: drop table 表名;
- create table test(id int);
- drop table test;
对:data数据的操作
- 记录 的操作 ---> 类似于文件中的一行行数据
- 增:
语法: insert into 表名 values('字段类型的数据1', 字段类型的数据1);
# 插入一条:
- insert into user_info values('tank', 17);
# 插入多条:
- insert into user_info values('jason', 71), ('sean', 78);
- 查:
*: 指的是所有
语法: select * from 表名; # 查看表中所有的数据
- select * from user_info;
# 查看name 字段为 tank 的记录
- select * from 表名 where 条件; # 条件成立则查看成功!
- select * from user_info where name="tank";
# 查看name 字段为 tank 的age字段
- select age from user_info where name="tank";
# 查看所有的名字:
- select name from user_info;
- 改
语法: update 表名 set 字段名=字段值 where 条件判断; # 若条件成立,则修改成功!
# 修改age为17的记录中name属性为 handsome
- update user_info set name='handsome' where age=17;
# 修改age>16的记录 中name属性为 d_sb
- update user_info set name='d_sb' where age>16;
- 删
语法: delete from 表名;
# 清空表记录,不提交,可恢复。
- delete from user_info;
语法: truncate table 表名;
# 删除,不可恢复
- truncate table user_info;
来源:CSDN
作者:大静静—L
链接:https://blog.csdn.net/weixin_45967126/article/details/103496835