標籤:
我們使用當前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口吧!或者你就去看看你的服務有沒有啟動!
二、登入到mysql伺服器:兩種方法:
1、 mysql –hlocalhost –uroot –p口令
2、 直接利用開始菜單!開始----程式---mysql5.0三、命令的簡單使用:
下面的操作一般就是使用標準SQL命令:也就是說你在SQL SERVER裡面怎麼用,這裡就怎麼用,但是有的命令也不是完全一樣的。有一點點細微的差別!下面咱們就把這個命令簡單的過一遍:
my sql 命令的使用:以分號或\g結束,\c取消一行命令,\h協助
1、 顯示資料庫:show databases;
2、 建資料庫:create database [if not exists] 資料庫名;
3、 建資料表: create table [if not exists] 表名 (欄位名1 類型。。。。。。。。)
create table student (編號 int auto_increment primary key, 姓名 varchar(10));
注意:設定了自動成長,就要定為主鍵,如果選擇了BIT 類型,0不顯示,非0顯示為一個特殊符號!
4、 顯示資料表:show tables;
5、 刪除庫: drop database [if exists] 庫名;
6、 刪除表: drop table [if exists] 表名;
7、 顯示表結構: desc 表名
8、 如何修改表結構:增長一個欄位; alter table 表名 add 欄位名 類型
9、 刪除一個欄位: alter table 表名 drop 欄位名
10、 修改一個欄位的屬性: alter table 表名modify 欄位 新屬性
11、 修改主鍵: 增加一個主鍵 alter table 表名 add primary key(欄位名)
12、 刪除一個主鍵 alter table 表名 drop primary key(欄位名)四、表的三種基本操作:插入記錄、刪除記錄、更新記錄、 這個和sql server是一樣的,你在SQL SERVER裡面怎麼操作,在MYSQL裡面就怎麼操作!沒什麼大區別,當然小區別還是有的。比如;insert命令,SQL SERVER2000 一次只能插入一條記錄,MYSQL可以插入多條記錄。
Insert into 表 (欄位表列表) values(欄位值),(欄位值)。。。。。。
刪除,更新和SQL SERVER沒有什麼區別,不再累述!13、 刪除資料庫:Drop DATABASE 資料庫名
14、 刪除表: Drop TABLE 表名
15、 表改名: RENAME TABLE 舊錶中 TO 新表名 資料庫不能改名,但也不是絕對不能改,但改不好會造成裡面的資料無法正常讀出,後果自負!
16、 庫改名: 常用方法是把新庫建立出來,然後把舊庫裡的資料匯入進去.
五、查詢: 這應該是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發現結果不正確,有可能是編碼的問題六、記錄排序
利用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 七、聚集合函式:
最大值: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
八、多表查詢:
一個資料庫中的多個表,存在一定的聯絡,怎麼樣正常的顯示這麼表的資訊?
現在有三個表:
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
左外串連
右外串連
但沒有全外串連
九、聯合:
除了串連,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 語句;
十、Database Backup與恢複
備份:
第一種方法: 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. 路徑和檔案名稱不對!
十一、資料的匯入/匯出:
如何與其他資料來源之間進行資料的匯入與匯出!
例如:如何將 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基本操作