DAY 37 MySQL安装配置及sql语句基础

Posted majingjie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DAY 37 MySQL安装配置及sql语句基础相关的知识,希望对你有一定的参考价值。

内容大纲

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);

以上是关于DAY 37 MySQL安装配置及sql语句基础的主要内容,如果未能解决你的问题,请参考以下文章

Python全栈100天学习笔记Day37MySQL详解(sql语句基本操作含索引视图存储过程)

mySQL(II) 任务一

day06-python数据库-mysql之基础

Day865.基础架构 -MySQL实战

Day865.基础架构 -MySQL实战

MYSQL之数据库初识安装详解sql语句基本操作