1. 程式人生 > >DAY 37 MySQL安裝配置及sql語句基礎

DAY 37 MySQL安裝配置及sql語句基礎

character int ora 下載 aso data 命令 不同的 初始

內容大綱

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語句基礎