自我总结28
数据库是什么?
存数据的仓库
为啥使用数据库?
之前使用的是excel来进行管理数据
excel的缺点:
管理不了大量的数据(10W量级的数据)
并发操作同一个数据表格
数据支持高级的操作,比如:分组,连表等
数据库的分类
关系型数据库
对每一列的数据类型会有约束,id(整型),name(字符串类型)
MySQL ----->用的比较多,免费
SqlServer ----> 微软 ,大学,政府
Oracle ---->甲骨文,收费,金融公司,阿里
sqlite---->小型的文件数据库,自己玩玩
非关系型数据库
memcache ---->十年前的产品(新浪博客)
mongodb ----> 文档型数据库
redis ----->微博
# 不强制数据类型 K/Values形式
{"name":'zekai'}
{"name":12}
{"name":[]}
{"name":{}}
最大区别
关系型数据库,把数据存在硬盘中
非关系型数据库,把数据存在内存中
mysql的架构
类似于socket的客户端和服务端
流程
- mysql服务端先启动,监听在某一个特定的端口(3306)
- mysql客户端连接服务端
- mysql客户端就可以发送相关的操作命令,去操作服务端存储的数据
mysql的安装
windows安装
先去官网(https://dev.mysql.com/downloads/mysql/)
1、下载:MySQL Community Server 5.7.16 http://dev.mysql.com/downloads/mysql/
2、解压 如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:\mysql-5.7.16-winx64
3、添加环境变量 【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
4、初始化 mysqld --initialize-insecure
创建data目录, 初始化的数据
5、启动MySQL服务 mysqld
6、启动MySQL客户端并连接MySQL服务 mysql -u root -p
连接MySQL服务器mysql服务端不会阻塞住
制作windows的服务
"D:\mysql-5.7.28\bin\mysqld" --install
修改mysql的密码
用mysqladmin
格式:mysqladmin -uroot -p "原密码" password "新密码"
例子:mysqladmin -uroot -p123456 password 123
用SET PASSWORD命令
首先登录MySQL。
格式:mysql> set password for 用户名@localhost = password('新密码');
例子:mysql> set password for root@localhost = password('123');
# 出现的错误
C:\Windows\system32>mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) # 如果出现上述错误,代表密码输入错误
常用参数
-u : user 用户名
-p :password 密码
-h :host 主机名或ip mysql -uroot -p -h 192.168.1.10
-P : port 默认是3306 mysql -uroot -p -h 192.168.1.10 -P 3307
忘记密码,操作方式
#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服务
初始mysql
SQL指令
操作数据库
增
create database 数据库名 charset utf8;
命名规范:
可以由字母、数字、下划线、@、#、$
区分大小写
唯一性
不能使用关键字如 create select
不能单独使用数字
最长128位
删
drop database 数据库名称;
改
alter database db1 charset utf8
删除再添加
如果数据库中有数据的话,直接drop会导致数据库中的数据丢失在线上环境,不能够直接删除数据, 在删除之前,需要进行备份
查
show databases;
show create database 数据库名;
使用数据库
use 数据库名;
操作数据表
先切换到文件夹下:use db1
增
create table t1(id int,name,char)
删
drop table t1;
改
alter table t1 modify name char(3);
alter table t1 change name name1 char(2);
查
show tables;
操作表记录
增
insert into t1 values (1,'egon1'),(2,'egon2'),(3,'egon3');
删
delete from t1 where id= 2;
改
update t1 set name = 'sb' where id = 2;
查
select * from t1;
清空表
delete from t1; # 如果有自增id,自增的数据,仍然以删除前的最后一样作为起始
truncate table t1; # 数据量大,删除速度比上一条快,且直接从零开始
auto_increment # 表示;自增
primary key # 表示:约束(不能重复且不能为空);加速查找