尋夢新聞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