数据库是什么
存数据的仓库
为什么使用数据库(*********)
之前使用Excel进行管理数据
Excel缺点:
管理不了大量的数据
不能同时多人操作
不支持高级操作
数据库:
支持高级操作(分组,连表等)
数据库分类(*********)
关系型数据库
对每一列的数据类型会有约束(ID:整型;name:字符串)
MySQL,maridb→用的比较多,免费,两个是同一个作者
SqlServer→微软,大学,政府部门,汽车之家
Oracle→甲骨文,收费,金融公司,阿里
sqlite→小型的文件数据库,自己玩,没什么人用
非关系型数据库
对每一列的数据类型没有约束(字典存取)
memcache→存内存,十年前产品(新浪博客)
mongodb→存内存,文档型数据库
redis→存内存,微博,解决了内存断电即消失问题
最大区别
关系型数据库:把数据存在硬盘中(文件)
非关系型数据库:把数据存在内存中
MySQL的架构
类似于Socket的客户端和服务端
流程:
MySQL服务端先启动,监听在某一个特定的端口(3306)
MySQL客户端连接服务端
MySQL客户端就可以发送相关的操作命令,去操作服务端存储的数据
MySQL的安装(windows)
先去官网查看
安装
'''
#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
#5、启动MySQL服务
mysqld # 启动MySQL服务
#6、启动MySQL客户端并连接MySQL服务
mysql -u root -p # 连接MySQL服务器
安装
'''
设置系统的服务
'''
上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:
注意:--install前,必须用mysql启动命令的绝对路径
# 制作MySQL的Windows服务,在终端执行此命令:
"c:mysql-5.7.16-winx64inmysqld" --install
"D:python培训mysql-5.7.28inmysqld" --install
# 移除MySQL的Windows服务,在终端执行此命令:
"c:mysql-5.7.16-winx64inmysqld" --remove
注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
# 启动MySQL服务
net start mysql
# 关闭MySQL服务
net stop mysql
将MySQL服务制作成windows服务
'''
改密码
'''
初始状态下,管理员root,密码为空,默认只允许从本机登录localhost
设置密码
[root@egon ~]# mysqladmin -uroot password "123"
设置初始密码 由于原密码为空,因此-p可以不用
[root@egon ~]# mysqladmin -uroot -p"123" password "456"
修改mysql密码,因为已经有密码了,所以必须输入原密码才能设置新密码
命令格式:
[root@egon ~]# mysql -h172.31.0.2 -uroot -p456
[root@egon ~]# mysql -uroot -p
[root@egon ~]# mysql
以root用户登录本机,密码为空
'''
常用参数
-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 3306
忘记密码
'''
方式一:
### 服务端 :服务端: 服务端
#1 关闭mysql的系统服务
#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和select
不能单独使用数字
最长128位
增
create database 数据库名;
删
drop database 数据库名;(如果文件夹有数据,也会全部删除)慎用
改
删除在添加(alter database 前数据库名 charset 后数据库名)慎用
查
show databases;
使用数据库
use 数据库名;
操作数据表
先切换到文件夹下:use db1
增
create table t1(id int,name char);
删
drop table t1;
改
alter table t1 modify name char(3)
查
show tables;
操作表记录(*********)
增
insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');
删
delete from t1 where id=1;
改
update t1 set name='sb' where id=2;
查
select * from t1;
清空表
delete from t1; (如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始.)
truncate table t1; (数据量大,删除速度比上一条快,且直接从零开始.)
自增和加速查找
auto_increment (表示:自增)
primary key (表示:约束(不能重复且不能为空);加速查找)