基本概念

数据库前期准备

"""
什么是数据库?

文件

软件开发目录
bin
core
conf
db
lib
log => 数据库 => elasticsearch elk 全文搜索引擎
interface

MySQL数据库

# 单机游戏

优化:
网络游戏

"""


数据库的分类

"""
数据库本质其实是一个c/s架构


分类:
1.关系型数据库
有固定的表结构, 可以建立表与表之间的关系
eg: MySQL Oracle sqllite SQLserver access db2
2.非关系型数据库
没有固定的表结构, 没有关系了
eg: redis(字符串,无序集合,有序集合,哈希类型,列表类型) mongodb(爬虫) memcache(只支持字符串)
存储格式:k:v键值对‘


面试题: redis和memcache的区别?

"""


MySQL简介

"""
MySQL本质是通过网络传输获取数据

只要是通过网络传输的底层都是socket


1.服务端
MySQL也是有服务端
2.客户端
MySQL也是有客户端
"""


mysql
MySQL Python java Java


"""
什么是SQL?

什么是json?

"""

documention


MySQL的版本:
5.5 稳定
5.6 稳定
5.7
8.0

"""
教学使用5.6

每个版本唯一不变的是SQL语句

"""



MySQL的下载与安装

"""
官网下载

1.下载下来是zip的压缩包,
2. 解压,得到文件夹
3. 进入到bin目录下,
mysql.exe mysql的客户端
mysqld.exe mysql的服务端
4. 要先启动服务端,在启动客户端取连接
5. 进入到bin目录,执行mysqld启动服务端
6. 服务端启动之后,该窗口不要动,在另起一个cmd窗口,进入bin目录,执行mysql.exe 客户端,连接mysql
7. 添加环境变量
把bin目录路径添加到环境变量中, 这样做的目的是不用每次都进入到bin目录中执行了
8. 制作服务
1. 以管理员身份进入到cmd中
2. mysqld --install 添加服务
3. mysqld --remove 删除服务
4. 默认情况是未启动状态,需要手动点击启动
5. 如何查看服务?
1.
2.services.msc
3.我的电脑 -》 右键 -》 管理 -》 服务和应用程序


"""


MySQL用户登录

"""
默认情况
mysql不需要用户名和密码 -》

sql语句必须以;结尾
"""
用户名 密码
-u 用户名
-p 密码
mysql 登录的命令:mysql -u root -p123

需求:修改一下管理员的密码?
强调一点:该命令要在mysql之外执行
mysqladmin -uroot -p password 新密码


忘记密码:
执行的位置:必须进入到mysql中,必须登录
update user set password=password(111) where user='root' and host='localhost';


退出命令:exit


重要概念介绍

"""
mysql的组成:
库 -》 文件夹
表 -》 文件
记录 -》 文件中的数据
字段 -》 文件的表头
"""


MySQL的配置文件

"""
只要修改了mysql的配置文件, 必须重启服务(*********)
"""


基本的增删改查

库的增删改查

"""
1. 查看所有的数据库
show databases;
2. 创建数据库:
create database 数据库名称;
3. 删除数据库
drop database 数据库名称;

4.查看当前所在库
select database();
5. 切换数据库
use 数据库名称;
"""


表的增删改查

"""
1. 查看表
show tables;
show create table 表名;
2. 创建表
create table t1 (id int, name varchar(4), age int);
3. 查看表结构
desc 表名;
4. 修改表名
alter table t1 rename t2;
5. 修改字段类型
alter table t1 modify name varchar(32);
6. 删除表
drop table 表名;
""""


记录的增删改查

"""
1. 查询记录
select * from table;
select id, name from table;
2. 查看所有表
show tables;
3. 增
insert into t1 (id, name, age) values (1, 'egon', 18);
insert into t2 (id, name, age) values (1, 'egon', 18),(2, 'egon', 18),(3, 'egon', 18);

4. 修改
update 表名 set name='egon' where id=1;
5. 删除记录
delete from table where id = 1;
"""


数据库的储存引擎

  • 就是存储数据的方式
  • 如何查看数据引擎? 都有哪些储存引擎
show create table 名字
---------------
ENGINE=***
-------------


修改储存方式

    create table t1(id int , name varchar(16)) engine='MyISAM';
create table t2(id int , name varchar(16)) engine='innodb';
create table t3(id int , name varchar(16)) engine='memory';

MyISAM
.frm => 表结构
.MYD => 表数据
.MYI => 索引(目录)优点:查询速度快

InnoDB
.frm => 表结构
.ibd => 表数据和索引

MEMORY
.frm => 表结构


数据库文件显示:

数据库 -基础_约束条件

数据类型

整型

  • tinyint smallint mediumint int bigint
  • 他们之间的区别就是存储数据的范围不一样

数据库 -基础_数据类型_02

# 验证整型默认是否带符号
create table t6 (id tinyint);

insert into t5 values(-129), (256);
# 结论:所有的整型默认都是带符号的。


浮点型

  • float double decimal
# float(8, 2)  999999.99
float(255,30)
总共255位,小数30位
double(255,30)
总共255位,小数30位
decimal(60,30) # decimal型最高支持65位
总共60位,小数30位


  • 精确度不一样
  • decimal > double > float
create table t5 (id float(255,30));
create table t6 (id double(255,30));
create table t7 (id decimal(60,30));


insert into t6 values(1.11111111111111111111111111);
insert into t7 values(1.11111111111111111111111111);
insert into t8 values(1.11111111111111111111111111);


数据库 -基础_表结构_03

设计表注意:

  1. 表结构中的数据类型
  2. 该表中上线之后可能会产生多少数据量?order

字符串

两种字符串括号中的数字必须写, 代表存储字符串的长度

  • char(4)
  • 存储4位,不够的空格补齐4位,超过4位的报错
  • 优点:查询速度快, 整存整取
  • 缺点:浪费空间
  • varchar(4)
  • 存储4位,有几位存几位,超过的报错
  • 优点:节省空间
  • 缺点:查询速度比char慢

验证:

create table t8 (id int, name char(4));
create table t9 (id int, name varchar(4));

insert into t8 values(1, 'kevin');
insert into t9 values(1, 'kevin');


日期类型

  • datetime date time year

测试:

# 
create table t10 (id int, r1_time datetime, r2_time date, r3_time time, r4_time year);

#
insert into t10 values (1, '2021-11-11 11:11:11','2021-11-11','11:11:11','2021');


数据库 -基础_表结构_04

枚举

  • 枚举是多选一

测试:

create table t11 (
id int,
gender enum('male', 'female', 'other')
);

insert into t11 values (1, 'egon');
insert into t11 values (1, 'male');


数据库 -基础_数据库_05

集合

    create table t12 (
id int,
hobby set('read', 'music', 'football', 'lm')
);

#
insert into t12 values(1, 'egon');
insert into t12 values(1, 'read');
insert into t12 values(1, 'read,music');
insert into t12 values(1, 'read,egon');


数据库 -基础_表结构_06

创建表的完整语句

create table 表名 (
字段名 数据类型(长度) 约束条件1 约束条件2 约束条件3,
字段名 数据类型(长度) 约束条件1 约束条件2 约束条件3,
字段名 数据类型(长度) 约束条件1 约束条件2 约束条件3,
字段名 数据类型(长度) 约束条件1 约束条件2 约束条件3
)

# 注意:
1. 表中字段名和数据类型是必填项, 约束条件是可选的
2. 约束条件可以有多个,依次往下写
3. SQL语句的最后一个不能加逗号(,