今天忽然在其餘網站上看到了本身兩年前寫的一個關於MySQL的入門文章, 我就直接放到個人博客裏好了.
Mysql 三小時間教學
杜飛 2006-11-11
目的:
一、 在學生已經學習了SQL SERVER2000的基礎上.利用一節課(三小時)的時間掌握mysql的安裝,建庫、建表、表的三種基本操做、查詢、多表查詢、數據庫的備份與恢復
二、 MYSQL 服務器的簡單維護
三、 mysql+apache+php的環境搭建
1、如何安裝mysql服務器:
咱們使用當前MY-SQL的比較新的版本MY SQL 5.0版。首先,如何獲得MY SQL 5.0 咱們能夠從網上下載(
[url]www.mysql.cn[/url])。
咱們來看一下如何進行安裝MY SQL支持多平臺,也就是說它能夠工做在WINDWOS平臺上,也能夠工做在LINUX平臺上,在LINUX下的安裝可能會複雜那麼一點點,但在WINDOWS下的安裝仍是很簡單的,和我們平時安裝軟件沒什麼兩樣,下面我們開始安裝:咱們拿到的是一個可執行文件,雙擊Setup.exe文件,開始mysql5.0的安裝。先是等待,直到出現下面的歡迎窗口
*********
安裝過程略!
********
怎麼檢測你的mysql正確安裝了。那大家是怎麼檢測 SQL SERVER是否是正確安裝的?
Netstat -an
看有沒有3306口吧!或者你就去看看你的服務有沒有啓動!
2、登陸到mysql服務器:
兩種方法:
一、 mysql –hlocalhost –uroot –p口令
二、 直接利用開始菜單!開始----程序---mysql5.0
3、命令的簡單使用:
下面的操做通常就是使用標準SQL命令:也就是說你在SQL SERVER裏面怎麼用,這裏就怎麼用,可是有的命令也不是徹底同樣的。有一點點細微的差異!下面我們就把這個命令簡單的過一遍:
my sql 命令的使用:以分號或\g結束,\c取消一行命令,\h幫助
一、 顯示數據庫:show databases;
二、 建數據庫:create database [if not exists] 數據庫名;
三、 建數據表: create table [if not exists] 表名 (字段名1 類型。。。。。。。。)
create table student (編號 int auto_increment primary key, 姓名 varchar(10));
注意:設置了自動增加,就要定爲主鍵,若是選擇了BIT 類型,0不顯示,非0顯示爲一個特殊符號!
四、 顯示數據表:show tables;
五、 刪除庫: drop database [if exists] 庫名;
六、 刪除表: drop table [if exists] 表名;
七、 顯示錶結構: desc 表名
八、 如何修改表結構:增加一個字段; alter table 表名 add 字段名 類型
九、 刪除一個字段: alter table 表名 drop 字段名
十、 修改一個字段的屬性: alter table 表名modify 字段 新屬性
十一、 修改主鍵: 增長一個主鍵 alter table 表名 add primary key(字段名)
十二、 刪除一個主鍵 alter table 表名 drop primary key(字段名)
4、表的三種基本操做:
插入記錄、刪除記錄、更新記錄、 這個和sql server是同樣的,你在SQL SERVER裏面怎麼操做,在MYSQL裏面就怎麼操做!沒什麼大區別,固然小區別仍是有的。好比;insert命令,SQL SERVER2000 一次只能插入一條記錄,MYSQL能夠插入多條記錄。
Insert into 表 (字段表列表) values(字段值),(字段值)。。。。。。
刪除,更新和SQL SERVER沒有什麼區別,再也不累述!
1三、 刪除數據庫:Drop DATABASE 數據庫名
1四、 刪除表: Drop TABLE 表名
1五、 表更名: RENAME TABLE 舊錶中 TO 新表名 數據庫不能更名,但也不是絕對不能改,但改很差會形成裏面的數據沒法正常讀出,後果自負!
1六、 庫更名: 經常使用方法是把新庫建立出來,而後把舊庫裏的數據導入進去.
5、查詢: 這應該是SQL中的一大塊。
Select 查詢:也和SQL SERVER沒有什麼大差異:
關鍵是你們要熟練運用各類運算符,數學運算符比較簡單,重點在於字符型運算符LIKE、關係運算符和邏輯運算符
如:查找姓王的記錄:Select * FROM YUANGONG Where 姓名 like '王%';
查找姓名中有五的記錄:Select * FROM YUANGONG Where 姓名 like '%王%';
查找以王結尾的記錄:Select * FROM YUANGONG Where 姓名 like '%王';
其中linit是SQL SERVER沒有的。
例如:我想顯示第三條到第七條記錄
select * from 表名 limit 2,5;
通配符 描述 示例
% 通配零個或多個任意字符
_(下劃線) 通配任意一個字符
再也不含有 [ ] 不一樣於SQL SERVER
注意:若是用like發現結果不正確,有多是編碼的問題
6、記錄排序
利用order by 對記錄進行排序
格式:select 字段名列表 from 表名 [where 條件] order by 排序字段1 [asc ] [desc] [排序字段2……]
如:按年齡對yuangong表進行升序排列!
Select * from yuangong order by 年齡 asc 或 select * from yuangong order by 年齡
如:按年齡對yuangong表進行降序排列!
Select * from yuangong order by 年齡 desc
對員工表先按性別升序排列,性別相同的再按年齡從大到小排序
Select * from 員工表 order by 性別 asc,年齡 desc
7、彙集函數:
最大值:max() 最小值 min() 平均值avg()
求和: sum() 彙總: count ()
如:求每一個部門的基本工資平均值
select 部門,avg(基本工資) as 部門基本工資 from 員工表 group by 部門
顯示平均基本工資大於3000的部門
Select 部門,avg(基本工資) from 員工表 group 部門 where avg(基本工資)>3000
此句錯誤。SQL規定在分組中使用條件不能用 Where 而是用 having
Select 部門,avg(基本工資) from 員工表 group by 部門 having avg(基本工資)>3000
8、多表查詢:
一個數據庫中的多個表,存在必定的聯繫,怎麼樣正常的顯示這麼表的信息?
如今有三個表:
yg
Name sex age
宋洋 男 20
馬冬旭 女 40
Gs
Name title date 單位
宋洋 AD詳解 2006-11-10 清華大學
馬冬旭 linux 2005-01-01 人民大學
dz
單位 地址
清華大學 五道口
人民大學 黃莊
第一種方法稱爲:交叉鏈接,在SQL SERVER中又稱爲笛卡爾乘積
可是要注意的默認生成的記錄總數是兩表記錄之積
select * from yg,gs;
select * from yg,gs where yg.name=gs.name;
這纔是咱們想要的記錄
第二種方法是用join鏈接:
內鏈接
select * from yg join gs on yg.name=gs.name
左外鏈接
右外鏈接
但沒有全外鏈接
9、聯合:
除了鏈接,mysql4。0以上的版本還支持UNION運算符,它用來把多個select查詢號的輸出鏈接成一個單獨的結果集。大多數狀況下,這個運算符用來把查詢產生的結果集添加到不一樣的表,同時建立包括全部結果的一個單獨表。好比面試的時候問你,有兩個表,字段信息同樣,讓你用一條語句把兩個表的信息組合爲一個單獨的表!
爲了說明UNION運算符的使用方法,咱們舉一個例子:如今有兩個表,分別存放的是男同窗信息和女同窗信息,若是用一個語句將全部同窗的信息顯示出來!
mysql> select * from nan;
+--------+-------+
| name | score |
+--------+-------+
| 彭聰留 | 80 |
| 費優優 | 81 |
| 曲權 | 82 |
+--------+-------+
3 rows in set (0.00 sec) mysql> select * from nv;
+------+-------+
| name | score |
+------+-------+
| 彭紅 | 80 |
| 費紅 | 81 |
| 曲紅 | 82 |
+------+-------+
3 rows in set (0.00 sec)
mysql> select * from nan union select * from nv;
+--------+-------+
| name | score |
+--------+-------+
| 彭聰留 | 80 |
| 費優優 | 81 |
| 曲權 | 82 |
| 彭紅 | 80 |
| 費紅 | 81 |
| 曲紅 | 82 |
+--------+-------+
6 rows in set (0.00 sec)
那若是有三個表怎麼辦?也是同樣的操做!
但注意的是若是兩個表的某條記錄信息徹底一致,則只顯示爲一條;若是想顯示所有記錄則在union後 加 all
mysql> select * from nan union all select * from nv;
若是面試官又問你,若是想把顯示的信息保存到一個表中怎麼辦?
mysql> create table 表名 select 語句;
10、數據庫備份與恢復
備份:
第一種方法: mysqldump
備份一個表 mysqldump -h主機名 –u用戶名 –p口令 數據庫 表名 >文本文件
恢復: mysql -h 主機名 –u用戶名 –p口令 數據庫 <文本文件
備份一個數據庫中的兩個表或是多個表怎麼辦?
Mysqldump –h 主機名 –u用戶名 –p口令 數據庫 表名1 表名2 >文本文件
恢復的時候: mysql –h 主機名 –u用戶名 –p 口令 數據庫<文本文件
備份整個數據庫:
格式: mysqldump –u用戶名 -p密碼 數據庫名>文本文件名
如:C:\test>mysqldump -uroot -p111111 net14 >net14.txt
刪除數據庫net14: drop database net14
進行恢復:
C:\test>mysql -u root -p111111 net14<net14.txt
ERROR 1049 (42000): Unknown database 'net14'
報錯.說找不到數據庫net14;
必須先手工創建一個空的net14數據庫,而後才能把數據導進來!
C:\test>mysql -u root -p111111 net14<net14.txt
那還有一個問題,若是想同時備份兩個以上的數據庫怎麼辦?
格式: mysqldump –u用戶名 -p密碼 -B 數據庫1 數據庫2 >文本文件名
如: C:\test>mysqldump -uroot -p111111 -B net14 net28 >net1428.txt
而後刪除net14和net28再進行恢復
可是要注意:必須一個一個的恢復,不能同時恢復兩個:
如: C:\test>mysql -uroot -p111111 -B net14 <net1428.txt
C:\test>mysql -uroot -p111111 -B net28 <net1428.txt
第二種方法: select into 做備份:這相對於第一種方法就簡單多了!
格式: select 語句 into outfile 「路徑及文件名」;
如: mysql> select * from student into outfile 'c:\\abc1.txt';
Query OK, 13 rows affected (0.00 sec)
注意:
1.路徑中的盤符後是兩個\\,其中第一個表明轉義做用,第二個纔是表明根目錄.有時寫成一個\時不會報錯,所以要注意檢查備份的正確性;
2.不容許重寫文本文件;
恢復方法:
那麼怎麼恢復呢::
用LOAD DATA來恢復:
格式: load data infile ‘路徑及文件名’ into table 表名
如: load data infile 'c:\\student.txt' into table student;
注意:表必須存在.可用delete,清空其中的全部記錄 或者用: truncate 表名,只刪除記錄,不刪除結構!
若是恢復出錯怎麼辦?
1. 權限問題.
2. 分界符不匹配!
3. 路徑和文件名不對!
11、數據的導入/導出:
如何與其餘數據源之間進行數據的導入與導出!
例如:如何將 SQL server 的數據導到mysql中來
1. 先在MS SQL 2000的導入導出工具將數據導出成*.txt文件格式
注意打開backup.txt
觀察其中的分隔字符 MS SQL 2000好像是用逗號分隔的
2. 在mysql中利用 load data infile 命令導入
mysql> load data infile 'c:\\sql.txt' into table abc fields terminated by ',';
Query OK, 5 rows affected (0.00 sec)
Records: 5 Deleted: 0 Skipped: 0 Warnings: 0
注意 目標表必須已經存在,並結構要與源表的結構相同!
ACCESS 導到 MYSQL:
1. 先創建一個access文件,保存成文本文件
2. 打開文本文件,再轉換一下編碼成ansi
3. 創建數據庫,導入到mysql中!
mysql> load data infile 'c:\\abc1.txt' into table abc fields terminated by ',';
Query OK, 3 rows affected (0.00 sec)
EXCEL 導到mysql
步驟同上。只是要注意的是:excel默認是以 TAB 分隔的因此應用如下的語句:
mysql> load data infile 'c:\\book1.txt' into table abc fields terminated by '\t';
關於mysql 的具體內容咱們就介紹這麼多,下面咱們來看一下php的搭建環境.由於如今apache+mysql+php稱爲網站設計的經典組合.這是你們必需要掌握的.
待續..........................................