数据库
- 什么是数据库
- 数据库即存放数据的仓库,是长期存放在计算机内、有组织、可共享的数据
- 数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享
一、数据库介绍
-
随意存放在一个文件中的数据,数据的格式千差万别
tank|123 jason:123 sean~123
-
软件开发目录规范
Project: conf bin core db # 存放一个个的文件
都是从本地读取的数据
-
将所有数据存放到一个第三方的公共位置,同一个软件凡是需要操作数据的,就必须去这个共享的位置操作
- 第三方的公共位置(数据库)
- 数据库集群:将同一个数据库中的数据,复制到不同的服务器中
-
MySQL数据:C----->S架构软件
- MySQL数据库本质上就是一个基于网络通信的软件
- 所有基于网络通信的软件,底层都是socket
- 服务端
- 基于网络通信
- 收发消息
- 客户端
- 基于网络通信
- 收发消息
- 所有语言若想操作数据库,拿到服务端IP和PORT,都必须遵循一套标准的解析指令----->SQL语句
-
DBMS:数据库管理系统
- 关系型数据库:
MySQL、Oracle、DB2、sql server...
- 表结构
- 需要哪些字段
- 字段是什么类型
- 字段与字段类型
- name--->'zico'--->字符串
- age---> 17 ---> 整形
- 表结构
- 非关系型数据库:
Redis、MongoDB...
- 非关系型数据库一般以
key:value
的形式存储
- 非关系型数据库一般以
{'name':'zico'}
、{'age':17}
- 关系型数据库:
二、安装数据库
-
下载MySQL安装包:
-
解压安装包放在自定义路径
-
添加系统环境变量
-
以管理员身份打开CMD,输入
mysqld
启动服务端,此时会卡住(保持运行状态)- bin目录下的:mysqld.exe
-
再新建一个cmd,
mysql
客户端连接服务端,输入mysql -h 127.0.0.1 -P 3306 -p 密码
- mysql初始化时无密码,可以进入游客模式,功能会很少
- 无密码直接进入---> 需要
-p 密码
- 全写:
mysql -h 127.0.0.1 -P 3306 -p 密码
- 简写:
mysql -uroot -p 密码
-
退出数据库客户端
- exit
- quit
注意:SQL语句末尾必须加 " ;"号
-
查看操作系统中是否已经启动mysql服务端
tasklist | findstr "mysqld"
-
杀死mysqld服务端进程
taskkill /F /PID pid号
注意:做服务端操作时,必须先以管理员身份打开
三、数据库命令
-
查看所有数据库:
show databases;
-
制作系统服务
- 必须将已经启动的服务端mysql关闭
- 删掉已经启动过的mysqld的进程
- 输入
mysqld --install
---> 安装mysql系统服务 - 输入
net start mysql
启动mysql服务 - 输入
net stop mysql
关闭mysql服务
-
管理员登录
mysql -u 登录mysql用户名 -p 密码
- 默认自带root超级用户,没有密码
mysql -uroot
回车即可进入
-
游客登录
mysql
回车进入游客模式
-
修改密码
- 默认没有密码的情况下,设置密码
cmd>>>:mysqladmin -uroot password 123
- 在有密码的情况下,修改密码
cmd>>>:mysqladmin -uroot -p 原密码 password 新密码
cmd>>>:mysqladmin -uroot -p123 password 321
- 默认没有密码的情况下,设置密码
-
破解密码:当密码忘记时使用
- 关闭服务端
- 跳过权限启动服务端
cmd>>>:mysql --skip-grant-tables
- 客户端进入游客模式
cmd>>>:mysql
- update mysql库.user表名 set 字段password=字段password('字段值') where 条件(若条件成立,则修改)user="root";
cmd>>>:update mysql.user set password=password('123') where user='root';
- 重新启动服务端,不要跳过权限认证
- 先kill掉跳过权限认证启动的服务端进程
- 再手动去开启服务端中的mysql服务即可
-
设置配置文件
-
先在mysql根目录下--->E:mysql-5.6.40-winx64mysql-5.6.40-winx64
-
创建一个名为"my.ini"的文件,这个是mysql的配置文件
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci # 这个是用python软件连接的客户端 [client] default-character-set=utf8 # mysql软件的客户端 [mysql] # 可写,可不写这样可以不需要用户名与密码直接登录mysql # user='root' # password=123 # 设置默认的字符编码 default-character-set=utf8
-
重启mysql服务,即修改成功
-
四、数据库基本操作
1.库的操作,类似于文件夹
-
增
- 语法:
create database 库名
- example:
create database db1
- 语法:
-
查
- 语法:
show databases;
查看所有库 - example:
show create database db1;
查看db1库中的信息
- 语法:
-
改
- 语法:
alter database 库名 charset='字符编码类型';
- example:
alter database db1 charset='utf8';
- 语法:
-
删
- 语法:
drop database db1;
- 语法:
2.表的操作,类似于文件
-
在操作表之前,需要先切换到指定库
- 语法:
use 库名;
- example:
use db1;
- 查看当前所在的库:
select database()
- 语法:
-
增
- varchar与char 都是字符串类型
- 语法:
create table 表名(字段名 字段类型)
- example:
create table user_info(name varchar(20), age int);
-
查
- 查看当前库中所有的表:
show tables;
- 查看当前表结构:
desc user_info;
- 查看当前库中所有的表:
-
改
- 语法:
alter table 表名 modify name varchar(28);
- example:
alter table user_info modify name varchar(28);
- 语法:
-
删
- 语法:
drop table 表名;
- example:
drop table user_info;
- 语法:
3.记录的操作,类似于文件中的一行行的数据
-
增
- 语法:
insert into 表名 values('字段类型的数据1', 字段类型的数据2);
- 插入一条:
insert into user_info values('tank', 17);
- 插入多条:
insert into user_info values('jason', 73), ('sean', 84);
- 语法:
-
查
- 语法:
select * from 表名;
查看表中的所有数据 - example:
select * from user_info;
- 查看name字段为tank的记录:
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为62的记录中name属性为yang:
update user_info set name='yang' where age=62;
- 修改name为yang的记录中age的属性为18:
update user_info set age=18 where name='yang';
- 语法:
-
删
-
语法:
delete from 表名;
清空表记录,不提交,可恢复 -
example:
delete from user_info;
-
语法:
truncate table 表名;
删除,不可恢复 -
example:
truncate table user_info;
-
回滚:
start transaction;
恢复:rollback;
-