内容大纲
1、数据库概念
2、MySQL介绍
3、MySQL的安装
4、安装后续处操作
5、基本SQL语句
6、存储引擎
一、数据库概念
数据库:DataBase,简称DB
数据库就是存放数据的仓库,支持共享数据,增删改查数据的功能
数据库管理系统:DataBase Management System 简称DBMS
数据库管理系统就是可以帮我们管理、处理数据的软件
常见的数据库管理系统(数据库软件):
# 关系型:彼此之间有约束或者有联系
关系型数据库:sqlite,db2,oracle,access,sql server,MySQL # MySQL为当前主流数据库管理系统
非关系型数据库:redis,mongodb
4 数据库服务器、数据管理系统、数据库、表与记录的关系(重点理解!!!)
记录:1 刘昊然 324245234 22 (多个字段的信息组成一条记录,即文件中的一行内容)
表:student,scholl,class_list(即文件)
数据库:oldboy_stu(即文件夹)
数据库管理系统:如mysql(是一个软件)
数据库服务器:一台计算机(对内存要求比较高)
二、MySQL介绍
MySQL:用于管理数据的一个软件(有两个程序)
1) 服务端软件
socket服务端
本地文件操作
解析指令
2) 客户端软件
socket客户端
发送指令
解析指令
客户端可以有很多个,Python, Java,PHP, C++都可以写客户端,客户端基于socket用IP、port来连接服务器并发送指令, 不同的语言指令不同,因此要统一指令 ==> 解析指令(SQL语句)
三、MySQL的安装
官网下载自己要下载的版本的MySQL,解压下载文件
四、安装后续处理操作
1、将MySQL启动文件路径添加到环境变量(bin目录)
2、将MySQL制作成系统服务,即可以开机自启动,以及可以在-运行-services.msc的窗口中直接打开/关闭/重启MySQL
1)一定要先将MySql进程杀死
2)【mysqld --install】 # 将mysqld服务端制作成系统服务(开机自启动)
3、设置密码:
【mysqladmin -u root -p password 123】 # password 后跟的是新密码
# 第一次修改完密码之后,之后再修改密码就需要:
【mysqladmin -u root -p123 pasword 新密码】
# 后续为了调试方便,这里把密码设置为空值
【mysqladmin -u root -p123 password 】
4、破解密码:
1)先关闭服务器
2)以跳过用户密码认证的模式重新启动服务端
【mysql --skip-grant-tables】
3)以管理员身份登陆
4)修改mysql库里面的user表
【update mysql.user set password=password(123) where user='root' and host='localhost';】
5)先关闭跳过验证的服务端,以正常模式启动服务端
6)输入用户名、密码 正常登陆
5、解决编码问题:
1)在mysql根目录下新建一个名为【my.ini】的配置文件,在文件中固定加上下面的配置即可设置编码问题
# ----------------------------------------
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
# ----------------------------------------
2)重新启动你的MySQL服务端,配置才会生效
# 启动:
服务端:
【mysqld】
客户端:
【mysql -h 127.0.0.1 -p 3306 -u root -p】
也支持简写
【mysql -u root -p】
写完会让你输密码,不用管,直接敲回车就OK
sql语句第一条命令:
查看所有数据库:
【show databases;】
注意:输入sql语句的时候,一定要用英文分号结束
如果输入的sql语句错了不想执行的话可以在后面跟上【\c】取消该命令的执行
退出客户端:【exit】,【quit】
五、基本SQL语句
# 读前需知
# 以下代码皆在cmd中运行
# 以下所有的不易与文字区分的代码皆用中文输入法中的【】来包括
对数据的操作逃不出 增删改查
SQL语句最后面都要以英文的分号结尾【;】,若没加, 可以再下一行中单独写一个【;】
# 代码示例:
# 执行 查看现有的所有库 的指令
mysql> show databases # 原应打【show databases;】
-> ; # 此为后补的【;】
+--------------------+
| Database |
+--------------------+
| information_schema | # 这个库是系统内存中的,暂且忽略
| mysql | # 以下3个库是系统默认存在的4个库
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.16 sec)
SQL语句书写错误,若是没加分号,写【\c】就可使前面的sql语句失效
# 解决错误,代码示例:
mysql> show databases
-> \c
mysql>
针对文件夹(库)的SQL语句
# 增--------------------------------------
【create database db1 charset utf8;】 # 创建了一个名叫db1的文件夹,文件夹中数据的编码方式为utf8
# 改--------------------------------------
【alter database db1 charset gbk】 # 更改文件夹db1的编码方式
# 查--------------------------------------
【show databases;】 # 查看现有的所有文件夹
【show create database db1;】 # 查看文件夹db1的详细信息
# 删--------------------------------------
【drop database db1;】 # 删除文件夹db1
# =======以下为增删改查的综合代码演示========
mysql> show databases; # 查看现有的库
+--------------------+
| Database |
+--------------------+
| information_schema | # 初始默认的4个文件夹
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> create database db1 charset utf8; # 创建了一个名叫db1的文件夹,文件夹中数据的编码方式为utf8
Query OK, 1 row affected (0.00 sec)
mysql> show databases; # 查看现有的所有库
+--------------------+
| Database |
+--------------------+
| information_schema |
| db1 | # 可以查看到文件夹db1已被创建
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> alter database db1 charset gbk; # 将文件夹db1中数据的编码方式为gbk
Query OK, 1 row affected (0.00 sec)
mysql> show create database db1; # 查看指定文件夹的详细信息
+----------+-------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------+
| db1 | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+-------------------------------------------------------------+
# 编码方式更改成功
1 row in set (0.00 sec)
mysql> drop database db1; # 删除文件夹db1
Query OK, 0 rows affected (0.00 sec)
mysql> show databases; # 查看现有的所有库
+--------------------+
| Database |
+--------------------+
| information_schema | # 可以看到文件夹db1已被删除
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
针对文件(表)的SQL语句
文件是创建在文件夹下的,所以在操作文件之前,要先选择在哪个文件夹下操作
# 切换文件夹
【use db1;】 # 切换到文件夹db1中
【select database();】 # 查看当前所在的库
# 增--------------------------------------
【create table file1(id int,name char);】 # 创建出来的可能是多个文件,解耦管理
# 改--------------------------------------
【alter table file1 modify name char(16);】
# 查--------------------------------------
【show tables;】 # 查看当前库的表
【show create table file1;】 # 查看表file1的详细信息
【describe file1;】 <==> 【desc file1;】 # 查看表结构
# 删--------------------------------------
【drop table file1;】 # 删除表file1
# =======以下为增删改查的综合代码演示========
mysql> show databases; # 查看现有的所有库
+--------------------+
| Database |
+--------------------+
| information_schema |
| db1 | # 存在db1
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> use db1; # 切换到文件夹db1下进行操作
Database changed
mysql> select database(); # 查看当前所在的库
+------------+
| database() |
+------------+
| db1 | # 当前在库db1中
+------------+
1 row in set (0.00 sec)
mysql> create table file1(id int,name char(8)); # 创建文件file1,括号中参数即表头等
Query OK, 0 rows affected (0.01 sec)
mysql> alter table file1 modify name char(16); # 更改文件file1属性
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show tables; # 查看当前库的所有文件
+---------------+
| Tables_in_db1 |
+---------------+
| file1 | # 文件file1已创建成功
+---------------+
1 row in set (0.00 sec)
mysql> show create table file1; # 查看表file1的详细信息
+-------+-----------------------------------------------------------------------
--------------------------------------------------+
| Table | Create Table
|
+-------+-----------------------------------------------------------------------
--------------------------------------------------+
| file1 | CREATE TABLE `file1` (
`id` int(11) DEFAULT NULL,
`name` char(16) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-----------------------------------------------------------------------
--------------------------------------------------+
1 row in set (0.00 sec)
mysql> describe file1; # 查看表file1的结构
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | char(16) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> desc file1; # 查看表file1的结构
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | char(16) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> drop table file1; # 删除表file1
Query OK, 0 rows affected (0.01 sec)
mysql> show tables; # 查看当前库的所有文件
Empty set (0.00 sec) # 系统提示当前库已没有文件了
针对记录(数据)的SQL语句
# 增--------------------------------------
【insert into db1.file1 values (1,'egon'),(2,'kevin'),(3,'jason');】
# into可加可不加,db1可以不指定,默认就是在当前库下
# 改--------------------------------------
【update db1.file1 set name='wjw' where id > 1;】
【update db1.file1 set name='wjw' where id = 2 or id = 3;】
# 查--------------------------------------
【select id,name from db1.file1;】 # db1可以不指定,默认在当前库下
【select * from file1;】
# 删--------------------------------------
【delete from db1.file1 where id > 3;】
【delete from db1.file1 where name='egon';】
# 这里注意,如果少了一个引号,后面无论敲什么都没有用,必须要将引号补全
# =======以下为增删改查的综合代码演示========
mysql> show databases; # 查看现有的所有库
+--------------------+
| Database |
+--------------------+
| information_schema |
| db1 | # # 存在db1
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> use db1; # 切换到文件夹db1下进行操作
Database changed
mysql> select database(); # 查看当前所在的库
+------------+
| database() |
+------------+
| db1 |
+------------+
1 row in set (0.00 sec)
mysql> show tables; # 查看当前库的所有文件
+---------------+
| Tables_in_db1 |
+---------------+
| file1 | # 文件file1已存在
+---------------+
1 row in set (0.00 sec)
mysql> insert into db1.file1 values (1,'egon'),(2,'kevin'),(3,'jason'); # 按照文件的表头个数即类型,来传入相应的记录
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> update db1.file1 set name='zdc' where id > 2; # 删除所有id大于2的记录
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update db1.file1 set name='wjw' where id = 1 or id = 2; # 删除id等于1和id等于2的记录
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> select id,name from db1.file1; # 从表file1中查看表头id,表头name下的所有记录
+------+------+
| id | name |
+------+------+
| 1 | wjw |
| 2 | wjw |
| 3 | zdc |
+------+------+
3 rows in set (0.00 sec)
mysql> select * from file1; # 查看file1中的所有记录
+------+------+
| id | name |
+------+------+
| 1 | wjw |
| 2 | wjw |
| 3 | zdc |
+------+------+
3 rows in set (0.00 sec)
mysql> delete from db1.file1 where id < 2; # 删除表file1中 id小于2的所有记录
Query OK, 1 row affected (0.00 sec)
mysql> delete from db1.file1 where name='zdc'; # 删除表file1中 name为'zdc'的记录
Query OK, 1 row affected (0.00 sec)
mysql> select * from file1; # 查看file1中的所有记录
+------+------+
| id | name |
+------+------+
| 2 | wjw | # 上面分别删除了id为1和name为'zdc'的记录,因而只剩(2,wjw)
+------+------+
1 row in set (0.00 sec)
六、存储引擎
文件格式有很多种(txt, pdf,docx),对应的软件也有很多种(文本编辑器,wps,word)
针对不同类型的文件,需要对应有不同的软件帮助我们去操作
# 查看所有的存储引擎
show engines;
# 查看不同存储引擎存储表结构文件特点
create table t1(id int)engine=innodb;
create table t2(id int)engine=myisam;
create table t3(id int)engine=blackhole;
create table t4(id int)engine=memory;
insert into t1 values(1);
insert into t2 values(1);
insert into t3 values(1);
insert into t4 values(1);