MySql的基礎知識介紹和簡單操作指令

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

一、MySQL

MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於Oracle 旗下產品。MySQL 是最流行的關係型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件。

MySQL是將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。

MySQL所使用的 SQL 語言是用於訪問數據庫的最常用標準化語言。MySQL 軟件採用了雙授權政策,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。

由於其社區版的性能卓越,搭配 PHP 和 Apache可組成良好的開發環境

二、MySQL與其他的大型數據庫比較

例如Oracle 、DB2、SQL Server等相比,MySQL 自有它的不足之處,但是這絲毫也沒有減少它受歡迎的程度。對於一般的個人使用者和中小型企業來說,MySQL提供的功能已經綽綽有餘,而且由於 MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。

Linux作為操作系統,Apache 或Nginx作為 Web 服務器,MySQL 作為數據庫,PHP/Perl/Python作為服務器端腳本解釋器。由於這四個軟件都是免費或開源軟件軟件(FLOSS:Free/Libre and Open Source Software),因此使用這種方式除開人工成本就可以建立起一個穩定、免費的網站系統,也被稱為「LAMP「或「LNMP」組合。

三、數據庫在Web中的重要性

為使靜態的HTML頁面做活,變成動態頁面展示,需要通過Apache服務器端PHP腳本編程語言,依托數據庫處理數據,做到動態化,因此學習PHP的同時,掌握MySQL數據庫的基本操作是有必要的。

四、常見的一些數據庫系統

MySQL、DB2、Oracle、SQL Server、MariaDB等等,由於MySQL已是Oracle旗下產品,可能會被閉源,不再免費,但MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,MariaDB是完全兼容MySQL,包括API和命令行,使之能輕鬆成為MySQL的代替品。在存儲引擎方面,MariaDB基於事務的Maria存儲引擎,替換了MySQL的MyISAM;使用XtraDB來代替MySQL的InnoDB。

五、數據庫類型

1.關係型數據庫

2.非關係型數據庫

六、SQL結構化查詢語言

必須是通過服務器,連接我們的數據庫,才能進行操作

使用各種SQL語句、增、刪、改、查

1.數據定義語言(DDL):

用於定義和管理數據對象,包括數據庫,數據表等。例如:CREATE,DROP,ALTER等。

數據庫 -> 數據表:對數據庫或數據表的創建、刪除、修改等操作

2.數據操作語言(DML):

用於操作數據庫對象中所包含的數據。例如:INSERT,UPDATE,DELETE語句。

對數據的 增、刪、改 這些操作,就是數據操作語言

3.數據查詢語言(DQL):

用於查詢數據庫對象中所包含的數據,能夠進行單表查詢,

連接查詢,嵌套查詢,以及集合查詢等各種複雜程度不同的數據庫查詢,並將數據

返回客戶機中顯示。SELECT

4.數據控制語言(DCL):

是用來管理數據庫的語言,包括管理權限及數據更改。

七、在DOC系統中操作MySQL

由於我是個人學習,安裝環境是在windows操作系統中完成的,也就是windows+Apache+PHP+MySQL的集成包,下面簡稱之為「wamp」。要在DOC系統中操作MySQL

前需要進行的一些配置

1> 環境變量

我的電腦 -> 右擊屬性 -> 高級系統設置 -> 環境變量 ->系統變量 ->path

在path變量後加上;變量值

變量值就是MySQL下的bin目錄路徑

注意:必須開啟wamp服務器才可以進去

2>進入MySQL數據庫

DOS系統下清屏的命令:cls

mysql -h localhost -u root -p -b

-h 服務器(本地、指定服務器IP的)[本地localhost可以省略]

-u用戶名(我們用的是root用戶:超級管理員)

-p用戶密碼(不需要再它後面寫密碼,密碼是回車之後寫的)

-b蜂鳴器(當命令敲錯了,報錯時提示的聲音)

3>進入MySQL數據庫以後的命令

注意:

1> 每一行命令結束了以後,請使用 ; 或 \g 來結束,否則命令可以一直寫下去

2> 在MySQL的命令中,如果一行命令沒有敲完,就回車了,它會繼續執行下去,前提是必須是一條完整的命令

3> 退出敲錯的命令、或不想繼續執行下去的命令時,用\c 或者 Ctrl+c

4> 我們要想讓數據豎起來顯示,在命令後用\G,有時候一行盛不下了會亂,\G可以解決這個問題

5> \s 可以顯示當前服務器的配置

6> help 查看所有可以使用的快捷命令

7> 如果在命令行中遇到了單引號,則MySQL認為你要輸入一段字符串,所以,它是必須使用結束的單引號,可以跳出字符串輸入狀態;

4> 退出數據庫服務器

\q 、 exit、 quit 三者皆可

注意:

要想將我們在DOS命令行下邊輸入的所有的命令都存儲到一個文檔中,就需要使用tee命令

tee 路徑;

例如:tee E:\wamp\www\Test\Test_MySQL\1.php

八、操作數據庫的一些命令

1.創建數據庫

create database 數據庫名;

注意:

1.如果數據庫已存在,不能創建同名的數據庫

2.創建命令和數據庫名都不區分大小寫

if not exists 如果數據庫已存在,加上前面的關鍵字可以避免報錯

2.刪除數據庫

drop database 數據庫名;

3.查看已創建的數據庫

show databases;

4.使用一個數據庫

use 數據庫名;

5.查看當前我們所使用的數據庫

select database();

6.查看建庫語句

show create database 數據庫名;

說明:通過該命令,我們可以看到所建數據庫的建庫語句、編碼類型;

注意:

1.MySQL數據庫中命令不區分大小寫。

2.每創建一個數據庫,就會在data目錄下創建一個以此數據庫名稱命名的文件夾。

3.在Windows下,數據庫名稱也是不區分大小寫的,但在Linux下,數據庫名稱嚴格區分大小寫。

7. 對數據表的操作

表中的字段,其實可以理解為table表格中的表頭

1>創建數據表(不加任何主鍵信息,自增,數據限制條件的簡易數據表創建)>最初練習可用

create table 表名(

字段名1 字段類型,

字段名2 字段類型,

字段名3 字段類型

);

注意:

1.創建一個數據表時,它的每個字段之間用逗號”,”隔開;

2.最後一個字段不用逗號”,”;

3.創建完表以後,最後的括號後面使用分號結束

4.建表時,表名後面的括號中寫表的字段名(字段類型)

2> 查看表結構

desc 表名;

3> 查看建表語句

show create table 表名;

4> 查看當前數據庫存在的數據表

show tables;

5> 刪除數據表

drop table 表名

8.對數據的操作

1> 添加數據

① insert into 表名 (字段1,字段2……) values (值1,值2……);

② insert into 表名 values (值1,值2……),(值1,值2……);

③ insert into 表名 (字段1,字段2……) values (值1,值2……),(值1,值2……);

④ insert into 表名 values (值1,值2…);

⑤ insert into 表名 set 字段1=值1,字段2=值2…;

注意:

1.值和字段名要一一對應,否則會報錯

2.你寫入的值一定要和數據類型相匹配

2> 刪除數據

delete from 表名 where 條件;

注意:刪除數據的時候,一定要加上where條件,否則會刪除所有的數據

3> 修改數據

update 表名 set 要修改的字段=修改後的值 where 條件

注意:修改數據的時候,一定要加上where條件,否則會修改所有的數據

4> 查找數據

select *(所有字段) from 表;

select 字段1,字段2.. from 表;

下面是對數據庫簡單操作實例:<?php

//對數據庫的簡單操作方法

//顯示存在所有的數據庫

mysql> show databases;

+——————–+

| Database |

+——————–+

| information_schema |

| lamp183 |

| mysql |

| performance_schema |

| sys |

+——————–+

5 rows in set (0.00 sec)

//刪除數據庫lamp183

mysql> drop database lamp183;

Query OK, 1 row affected (0.01 sec)

//刪除數據庫lamp183

mysql> drop database lamp183;

Query OK, 0 rows affected (0.00 sec)

//創建數據庫lmap175

mysql> create database lamp175;

Query OK, 1 row affected (0.00 sec)

//查看當前的數據庫[沒有被使用的數據庫即使被創建也不會被查詢到]

mysql> select database();

+————+

| database() |

+————+

| NULL |

+————+

1 row in set (0.00 sec)

//使用lamp175數據庫

mysql> use lamp175;

Database changed

//當前數據庫顯示出lamp175,說明此數據庫為當前操作的庫

mysql> select database();

+————+

| database() |

+————+

| lamp175 |

+————+

1 row in set (0.00 sec)

//查看lamp175的建庫語句 /G可以縱向顯示

mysql> show create database lamp175\G;

*************************** 1. row ***************************

Database: lamp175

Create Database: CREATE DATABASE `lamp175` /*!40100 DEFAULT CHARACTER SET latin1 */

1 row in set (0.00 sec)

ERROR:

No query specified

//查看lamp175建庫語句

mysql> show create database lamp175;

+———-+——————————————————————–+

| Database | Create Database |

+———-+——————————————————————–+

| lamp175 | CREATE DATABASE `lamp175` /*!40100 DEFAULT CHARACTER SET latin1 */ |

+———-+——————————————————————–+

1 row in set (0.00 sec)

mysql> create database lamp183;

Query OK, 1 row affected (0.00 sec)

mysql> use lamp183;

Database changed

//在lamp183數據庫中創建stu數據表

mysql> create table stu(

-> id int,

-> name varchar(32),

-> sex varchar(2),

-> age int,

-> job varchar(32)

-> );

Query OK, 0 rows affected (0.05 sec)

mysql> desc stu; //查看stu數據表的表結構

+——-+————-+——+—–+———+——-+

| Field | Type | Null | Key | Default | Extra |

+——-+————-+——+—–+———+——-+

| id | int(11) | YES | | NULL | |

| name | varchar(32) | YES | | NULL | |

| sex | varchar(2) | YES | | NULL | |

| age | int(11) | YES | | NULL | |

| job | varchar(32) | YES | | NULL | |

+——-+————-+——+—–+———+——-+

5 rows in set (0.00 sec)

//查看stu的建表語句[可以查看到該表的編碼類型,存儲類型]

mysql> show create table stu;

+——-+—————————————————————————————————————————————————————————————————————————–+

| Table | Create Table |

+——-+—————————————————————————————————————————————————————————————————————————–+

| stu | CREATE TABLE `stu` (

`id` int(11) DEFAULT NULL,

`name` varchar(32) DEFAULT NULL,

`sex` varchar(2) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

`job` varchar(32) DEFAULT NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1 |

+——-+—————————————————————————————————————————————————————————————————————————–+

1 row in set (0.00 sec)

//查看stu表的建表語句[豎起來查看]

mysql> show create table stu\G;

*************************** 1. row ***************************

Table: stu

Create Table: CREATE TABLE `stu` (

`id` int(11) DEFAULT NULL,

`name` varchar(32) DEFAULT NULL,

`sex` varchar(2) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

`job` varchar(32) DEFAULT NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

No query specified

//查看當前數據庫中所有的表

mysql> show tables;

+——————-+

| Tables_in_lamp183 |

+——————-+

| stu |

+——————-+

1 row in set (0.00 sec)

//刪除stu數據表

mysql> drop table stu;

Query OK, 0 rows affected (0.00 sec)

//創建stu數據表

mysql> create table stu(

-> id int,

-> name varchar(32),

-> sex varchar(2),

-> age int,

-> job varchar(32)

-> );

Query OK, 0 rows affected (0.01 sec)

//查看stu數據表的表結構

mysql> desc stu;

+——-+————-+——+—–+———+——-+

| Field | Type | Null | Key | Default | Extra |

+——-+————-+——+—–+———+——-+

| id | int(11) | YES | | NULL | |

| name | varchar(32) | YES | | NULL | |

| sex | varchar(2) | YES | | NULL | |

| age | int(11) | YES | | NULL | |

| job | varchar(32) | YES | | NULL | |

+——-+————-+——+—–+———+——-+

5 rows in set (0.00 sec)

//查看stu數據表的所有數據

mysql> select * from stu;

Empty set (0.00 sec)

//在stu數據表中插入數據

mysql> insert into stu set id=9,name=’haiyang’,sex=’w’,age=38,job=’toupai’;

Query OK, 1 row affected (0.00 sec)

//查看stu數據表中所有數據

mysql> select * from stu;

+——+———-+——+——+———+

| id | name | sex | age | job |

+——+———-+——+——+———+

| 1 | zhangsan | w | 18 | laobao |

| 2 | lisi | m | NULL | NULL |

| 3 | wangwu | w | NULL | NULL |

| 4 | maliu | m | NULL | NULL |

| 5 | zhaoqi | w | NULL | NULL |

| 6 | wangba | m | 20 | baoan |

| 7 | haibo | w | 28 | guigong |

| 8 | hongze | m | 17 | student |

| 9 | haiyang | w | 38 | toupai |

+——+———-+——+——+———+

9 rows in set (0.00 sec)

//退出MySQL數據庫

mysql> \q