mysql基本操作

來源:互聯網
上載者:User

標籤:

我們使用當前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基本操作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.