MySQL基本概念以及簡單操作 一、MySQL MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於Oracle 旗下產品。MySQL 是最流行的關係型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Ma ...
MySQL基本概念以及簡單操作 一、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