DAY 37 MySQL安裝配置及sql語句基礎
阿新 • • 發佈:2019-05-11
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語句基礎