當(dāng)前位置:
首頁(yè) >
mysql基本数据库操作
發(fā)布時(shí)間:2025/1/21
71
豆豆
生活随笔
收集整理的這篇文章主要介紹了
mysql基本数据库操作
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
?今天突然在其他網(wǎng)站上看到了自己兩年前寫(xiě)的一個(gè)關(guān)于MySQL的入門(mén)文章,??我就直接放到我的博客里好了. Mysql 三小時(shí)間教學(xué)??????????????????????????? 杜飛 2006-11-11
目的:
1、?在學(xué)生已經(jīng)學(xué)習(xí)了SQL SERVER2000的基礎(chǔ)上.利用一節(jié)課(三小時(shí))的時(shí)間掌握mysql的安裝,建庫(kù)、建表、表的三種基本操作、查詢、多表查詢、數(shù)據(jù)庫(kù)的備份與恢復(fù)
2、?MYSQL 服務(wù)器的簡(jiǎn)單維護(hù)
3、?mysql+apache+php的環(huán)境搭建 一、如何安裝mysql服務(wù)器:
我們使用當(dāng)前MY-SQL的比較新的版本MY SQL 5.0版。首先,如何得到MY SQL 5.0 我們可以從網(wǎng)上下載( [url]www.mysql.cn[/url])。
我 們來(lái)看一下如何進(jìn)行安裝MY SQL支持多平臺(tái),也就是說(shuō)它可以工作在WINDWOS平臺(tái)上,也可以工作在LINUX平臺(tái)上,在LINUX下的安裝可能會(huì)復(fù)雜那么一點(diǎn)點(diǎn),但在 WINDOWS下的安裝還是很簡(jiǎn)單的,和咱們平時(shí)安裝軟件沒(méi)什么兩樣,下面咱們開(kāi)始安裝:我們拿到的是一個(gè)可執(zhí)行文件,雙擊Setup.exe文件,開(kāi)始 mysql5.0的安裝。先是等待,直到出現(xiàn)下面的歡迎窗口
*********
安裝過(guò)程略!
********
怎么檢測(cè)你的mysql正確安裝了。那你們是怎么檢測(cè) SQL SERVER是不是正確安裝的?
Netstat? -an
看有沒(méi)有3306口吧!或者你就去看看你的服務(wù)有沒(méi)有啟動(dòng)! 二、登錄到mysql服務(wù)器: 兩種方法:
1、?mysql –hlocalhost –uroot –p口令
2、?直接利用開(kāi)始菜單!開(kāi)始----程序---mysql5.0 三、命令的簡(jiǎn)單使用:
下面的操作一般就是使用標(biāo)準(zhǔn)SQL命令:也就是說(shuō)你在SQL SERVER里面怎么用,這里就怎么用,但是有的命令也不是完全一樣的。有一點(diǎn)點(diǎn)細(xì)微的差別!下面咱們就把這個(gè)命令簡(jiǎn)單的過(guò)一遍:
?my sql 命令的使用:以分號(hào)或\g結(jié)束,\c取消一行命令,\h幫助
1、?顯示數(shù)據(jù)庫(kù):show databases;
2、?建數(shù)據(jù)庫(kù):create database? [if not exists] 數(shù)據(jù)庫(kù)名;
3、?建數(shù)據(jù)表: create table [if not exists] 表名 (字段名1?? 類型。。。。。。。。)
create table student (編號(hào) int auto_increment primary key, 姓名 varchar(10));
注意:設(shè)置了自動(dòng)增長(zhǎng),就要定為主鍵,如果選擇了BIT 類型,0不顯示,非0顯示為一個(gè)特殊符號(hào)!
4、?顯示數(shù)據(jù)表:show tables;
5、?刪除庫(kù): drop database [if exists] 庫(kù)名;
6、?刪除表: drop table?? [if exists] 表名;
7、?顯示表結(jié)構(gòu): desc 表名
8、?如何修改表結(jié)構(gòu):增長(zhǎng)一個(gè)字段; alter table 表名 add 字段名? 類型
9、?????????????? 刪除一個(gè)字段: alter table? 表名 drop 字段名
10、????????? 修改一個(gè)字段的屬性:? alter table 表名modify 字段 新屬性
11、?修改主鍵: 增加一個(gè)主鍵? alter table 表名 add primary key(字段名)
12、????????? 刪除一個(gè)主鍵? alter table 表名? drop primary key(字段名) 四、表的三種基本操作: 插入記錄、刪除記錄、更新記錄、 這個(gè)和sql server是一樣的,你在SQL SERVER里面怎么操作,在MYSQL里面就怎么操作!沒(méi)什么大區(qū)別,當(dāng)然小區(qū)別還是有的。比如;insert命令,SQL SERVER2000 一次只能插入一條記錄,MYSQL可以插入多條記錄。
Insert into 表 (字段表列表) values(字段值),(字段值)。。。。。。
刪除,更新和SQL SERVER沒(méi)有什么區(qū)別,不再累述! 13、?刪除數(shù)據(jù)庫(kù):Drop DATABASE 數(shù)據(jù)庫(kù)名
14、?刪除表:??? Drop TABLE??? 表名
15、?表改名:??? RENAME TABLE 舊表中? TO? 新表名 數(shù)據(jù)庫(kù)不能改名,但也不是絕對(duì)不能改,但改不好會(huì)造成里面的數(shù)據(jù)無(wú)法正常讀出,后果自負(fù)!
16、?庫(kù)改名: 常用方法是把新庫(kù)創(chuàng)建出來(lái),然后把舊庫(kù)里的數(shù)據(jù)導(dǎo)入進(jìn)去.
五、查詢: 這應(yīng)該是SQL中的一大塊。
Select 查詢:也和SQL SERVER沒(méi)有什么大差別:
關(guān)鍵是大家要熟練運(yùn)用各種運(yùn)算符,數(shù)學(xué)運(yùn)算符比較簡(jiǎn)單,重點(diǎn)在于字符型運(yùn)算符LIKE、關(guān)系運(yùn)算符和邏輯運(yùn)算符
如:查找姓王的記錄:Select? * FROM YUANGONG? Where 姓名? like '王%';
查找姓名中有五的記錄:Select * FROM YUANGONG? Where 姓名? like '%王%';
查找以王結(jié)尾的記錄:Select? * FROM YUANGONG? Where 姓名? like '%王';
其中l(wèi)init是SQL SERVER沒(méi)有的。
例如:我想顯示第三條到第七條記錄
select * from 表名 limit 2,5;
通配符?描述?示例
%?通配零個(gè)或多個(gè)任意字符?
_(下劃線)?通配任意一個(gè)字符?
不再含有 [ ] 不同于SQL SERVER
注意:如果用like發(fā)現(xiàn)結(jié)果不正確,有可能是編碼的問(wèn)題 六、記錄排序
利用order by 對(duì)記錄進(jìn)行排序
格式:select 字段名列表 from 表名 [where 條件] order by 排序字段1 [asc ] [desc] [排序字段2……]
如:按年齡對(duì)yuangong表進(jìn)行升序排列!
Select? * from yuangong order by 年齡? asc 或? select? * from yuangong order by 年齡
如:按年齡對(duì)yuangong表進(jìn)行降序排列!
Select? * from yuangong order by 年齡? desc
對(duì)員工表先按性別升序排列,性別相同的再按年齡從大到小排序
Select * from 員工表?? order by?? 性別 asc,年齡 desc 七、聚集函數(shù):
最大值:max()?????? 最小值 min()??? 平均值avg()
求和:?? sum()??????? 匯總: count () 如:求每個(gè)部門(mén)的基本工資平均值
select 部門(mén),avg(基本工資)? as 部門(mén)基本工資 from 員工表 group by 部門(mén) 顯示平均基本工資大于3000的部門(mén)
Select? 部門(mén),avg(基本工資) from 員工表 group 部門(mén) where avg(基本工資)>3000
此句錯(cuò)誤。SQL規(guī)定在分組中使用條件不能用 Where 而是用 having
Select? 部門(mén),avg(基本工資) from 員工表 group by? 部門(mén) having avg(基本工資)>3000
八、多表查詢:
一個(gè)數(shù)據(jù)庫(kù)中的多個(gè)表,存在一定的聯(lián)系,怎么樣正常的顯示這么表的信息?
現(xiàn)在有三個(gè)表:
yg
Name? sex? age?
宋洋? 男?? 20?
馬冬旭 女?? 40?
?Gs
Name?? title????? date?????? 單位
宋洋?? AD詳解 2006-11-10? 清華大學(xué)
馬冬旭 linux??? 2005-01-01?? 人民大學(xué)
?dz
單位???? 地址
清華大學(xué)? 五道口
人民大學(xué)?? 黃莊
第一種方法稱為:交叉連接,在SQL SERVER中又稱為笛卡爾乘積
但是要注意的默認(rèn)生成的記錄總數(shù)是兩表記錄之積
select * from yg,gs;
select * from yg,gs where yg.name=gs.name;
這才是我們想要的記錄
第二種方法是用join連接:
內(nèi)連接
select * from yg join gs on yg.name=gs.name
左外連接
右外連接
但沒(méi)有全外連接
九、聯(lián)合:
除了連接,mysql4。0以上的版本還支持UNION運(yùn)算符,它用來(lái)把多個(gè)select查詢號(hào)的輸出連接成一個(gè)單 獨(dú)的結(jié)果集。大多數(shù)情況下,這個(gè)運(yùn)算符用來(lái)把查詢產(chǎn)生的結(jié)果集添加到不同的表,同時(shí)創(chuàng)建包括所有結(jié)果的一個(gè)單獨(dú)表。比如面試的時(shí)候問(wèn)你,有兩個(gè)表,字段信 息一樣,讓你用一條語(yǔ)句把兩個(gè)表的信息組合為一個(gè)單獨(dú)的表!
為了說(shuō)明UNION運(yùn)算符的使用方法,我們舉一個(gè)例子:現(xiàn)在有兩個(gè)表,分別存放的是男同學(xué)信息和女同學(xué)信息,如果用一個(gè)語(yǔ)句將所有同學(xué)的信息顯示出來(lái)!
mysql> select * from nan;
+--------+-------+
| name?? | score |
+--------+-------+
| 彭聰留 |??? 80 |
| 費(fèi)優(yōu)優(yōu) |??? 81 |
| 曲權(quán)?? |??? 82 |
+--------+-------+
3 rows in set (0.00 sec)?mysql> select * from nv;
+------+-------+
| name | score |
+------+-------+
| 彭紅 |??? 80 |
| 費(fèi)紅 |??? 81 |
| 曲紅 |??? 82 |
+------+-------+
3 rows in set (0.00 sec) mysql> select * from nan union select * from nv;
+--------+-------+
| name?? | score |
+--------+-------+
| 彭聰留 |??? 80 |
| 費(fèi)優(yōu)優(yōu) |??? 81 |
| 曲權(quán)?? |??? 82 |
| 彭紅?? |??? 80 |
| 費(fèi)紅?? |??? 81 |
| 曲紅?? |??? 82 |
+--------+-------+
6 rows in set (0.00 sec)
那如果有三個(gè)表怎么辦?也是一樣的操作! 但注意的是如果兩個(gè)表的某條記錄信息完全一致,則只顯示為一條;如果想顯示全部記錄則在union后 加 all
mysql> select * from nan union all? select * from nv;
如果面試官又問(wèn)你,如果想把顯示的信息保存到一個(gè)表中怎么辦?
mysql> create table 表名 select 語(yǔ)句;
7庫(kù)中利用update和delete來(lái)修改和刪除數(shù)據(jù)記錄的操作,接下來(lái)就讓我們一起來(lái)了解一下這部分內(nèi)容。
用update修改記錄
用法:
update tbl_name set? col_name where [data]
mysql>update pet set sex="f" where name="tom";
注: 更新name為tom那一行, 只將set設(shè)置為 "f".
用delete刪除記錄
mysql>delete from pet where name="tom";
注: 刪除name為tom這一行的數(shù)據(jù)
mysql>delete from pet;
注:刪除表中所有的數(shù)據(jù);
十、數(shù)據(jù)庫(kù)備份與恢復(fù)
備份:
第一種方法:?? mysqldump 備份一個(gè)表 mysqldump? -h主機(jī)名? –u用戶名 –p口令 數(shù)據(jù)庫(kù)? 表名 >文本文件
??????????????? 恢復(fù): mysql?? -h? 主機(jī)名 –u用戶名 –p口令 數(shù)據(jù)庫(kù) <文本文件
備份一個(gè)數(shù)據(jù)庫(kù)中的兩個(gè)表或是多個(gè)表怎么辦?
? Mysqldump –h 主機(jī)名 –u用戶名 –p口令 數(shù)據(jù)庫(kù) 表名1 表名2? >文本文件
?恢復(fù)的時(shí)候: mysql –h 主機(jī)名 –u用戶名 –p 口令 數(shù)據(jù)庫(kù)<文本文件 備份整個(gè)數(shù)據(jù)庫(kù):
格式: mysqldump –u用戶名? -p密碼 數(shù)據(jù)庫(kù)名>文本文件名
如:C:\test>mysqldump -uroot -p111111 net14? >net14.txt 刪除數(shù)據(jù)庫(kù)net14:???????? drop database net14
進(jìn)行恢復(fù):
C:\test>mysql -u root? -p111111 net14<net14.txt
ERROR 1049 (42000): Unknown database 'net14'
報(bào)錯(cuò).說(shuō)找不到數(shù)據(jù)庫(kù)net14;
必須先手工建立一個(gè)空的net14數(shù)據(jù)庫(kù),然后才能把數(shù)據(jù)導(dǎo)進(jìn)來(lái)!
C:\test>mysql -u root? -p111111 net14<net14.txt 那還有一個(gè)問(wèn)題,如果想同時(shí)備份兩個(gè)以上的數(shù)據(jù)庫(kù)怎么辦?
格式: mysqldump –u用戶名? -p密碼? -B 數(shù)據(jù)庫(kù)1?? 數(shù)據(jù)庫(kù)2 >文本文件名
如:??? C:\test>mysqldump -uroot -p111111 -B net14 net28? >net1428.txt
然后刪除net14和net28再進(jìn)行恢復(fù)
但是要注意:必須一個(gè)一個(gè)的恢復(fù),不能同時(shí)恢復(fù)兩個(gè):
如: C:\test>mysql -uroot -p111111 -B net14?? <net1428.txt
C:\test>mysql -uroot -p111111 -B net28?? <net1428.txt 第二種方法:? select into 作備份:這相對(duì)于第一種方法就簡(jiǎn)單多了!
格式:? select 語(yǔ)句 into outfile “路徑及文件名”;
如: mysql> select * from student into outfile 'c:\\abc1.txt';
Query OK, 13 rows affected (0.00 sec)
注意:
1.路徑中的盤(pán)符后是兩個(gè)\\,其中第一個(gè)代表轉(zhuǎn)義作用,第二個(gè)才是代表根目錄.有時(shí)寫(xiě)成一個(gè)\時(shí)不會(huì)報(bào)錯(cuò),因此要注意檢查備份的正確性;
2.不允許重寫(xiě)文本文件;
恢復(fù)方法:
那么怎么恢復(fù)呢::
用LOAD DATA來(lái)恢復(fù):
格式: load data infile ‘路徑及文件名’ into table 表名
如: load data infile 'c:\\student.txt' into table student;
注意:表必須存在.可用delete,清空其中的所有記錄 或者用: truncate 表名,只刪除記錄,不刪除結(jié)構(gòu)!
如果恢復(fù)出錯(cuò)怎么辦?
1.?權(quán)限問(wèn)題.
2.?分界符不匹配!
3.?路徑和文件名不對(duì)!
十一、數(shù)據(jù)的導(dǎo)入/導(dǎo)出:
如何與其他數(shù)據(jù)源之間進(jìn)行數(shù)據(jù)的導(dǎo)入與導(dǎo)出!
例如:如何將? SQL server 的數(shù)據(jù)導(dǎo)到mysql中來(lái)
1.?先在MS SQL 2000的導(dǎo)入導(dǎo)出工具將數(shù)據(jù)導(dǎo)出成*.txt文件格式
注意打開(kāi)backup.txt
觀察其中的分隔字符 MS SQL 2000好像是用逗號(hào)分隔的
2.?在mysql中利用 load data infile 命令導(dǎo)入
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
注意? 目標(biāo)表必須已經(jīng)存在,并結(jié)構(gòu)要與源表的結(jié)構(gòu)相同!
ACCESS 導(dǎo)到 MYSQL:
1.?先建立一個(gè)access文件,保存成文本文件
2.?打開(kāi)文本文件,再轉(zhuǎn)換一下編碼成ansi
3.?建立數(shù)據(jù)庫(kù),導(dǎo)入到mysql中!
mysql> load data infile 'c:\\abc1.txt' into table abc fields terminated by ',';
Query OK, 3 rows affected (0.00 sec)
EXCEL 導(dǎo)到mysql
?步驟同上。只是要注意的是:excel默認(rèn)是以?TAB?分隔的所以應(yīng)用以下的語(yǔ)句:
mysql> load data infile 'c:\\book1.txt' into table abc fields terminated by '\t';
轉(zhuǎn)載于:https://my.oschina.net/lzwenme/blog/160790
總結(jié)
以上是生活随笔為你收集整理的mysql基本数据库操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java之对象池
- 下一篇: MySQL key/value存储方案(