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中的重要性
四、常見的一些數據庫系統
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
MySQL基本概念以及簡單操作