Mysql初學(xué)入門
最近研究了一下Mysql的初學(xué)應(yīng)用,在此進行整理記錄。
1、Windows系統(tǒng)下的安裝
我用的是win10系統(tǒng),在http://dev.mysql.com/downloads/mysql/ 下載相應(yīng)版本的Mysql,下載后進行解壓即可。
下載好后,進行安裝,安裝及配置步驟參照http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html 。
安裝好后,在DOS下輸入 net start mysql并回車會啟動mysql服務(wù)(注意DOS窗口必須是以管理員模式進入,否則無法啟動服務(wù)),(附:有一次我在安裝時出現(xiàn)問題,服務(wù)無法啟動,后來通過這篇文章的方法解決http://jingyan.baidu.com/article/eae07827baa2a51fec548527.html)啟動后輸入mysql -u root -p進行登陸,其中,-u root 說明此時是以root用戶登錄的。第一次登錄沒有密碼,直接按回車即可。有人在安裝時會遇到需要密碼(即不輸入密碼無法登陸)的情況,但是又不知道密碼,這時的辦法是找到mysql安裝的文件夾,這個文件夾中一般會有一個叫my-default.ini的文件,看看這個文件夾里是否還有一個叫my.ini的文件,如果沒有,就將my-default.ini復(fù)制一個并重命名為my.ini,保存在此文件夾中,打開這個my.ini,找到
[mysqld]
#skip-grant-tables
將這個‘#’刪除并保存,再重新登陸,就可以不使用密碼成功登陸了。
2、Linux系統(tǒng)下的安裝
在Linux系統(tǒng)下安裝mysql非常簡單,按照http://blog.csdn.net/fighter_yy/article/details/40753889 安裝即可。
3、常用SQL語言
SQL語言分為3類,分別是
- DDL:數(shù)據(jù)定義語言
- DML:數(shù)據(jù)操縱語言
- DCL:數(shù)據(jù)控制語言
- 后文語法中有 […] ,這個中括號代表里面的內(nèi)容可有可沒有,視情況而定,不是說語法本身需要[ ]
4、DDL
(1)對數(shù)據(jù)庫的操作(XXX在此表示數(shù)據(jù)庫名)
- 創(chuàng)建數(shù)據(jù)庫 create database XXX;
- 顯示系統(tǒng)中有哪些數(shù)據(jù)庫 show databases;(注意最后有個s)
- 選擇要操作的數(shù)據(jù)庫 use XXX;
- 刪除數(shù)據(jù)庫 drop database XXX;
(2)在選定某一數(shù)據(jù)庫的情況下,對數(shù)據(jù)表的操作(XXX在此表示表名)
- 創(chuàng)建一張數(shù)據(jù)表 create table XXX(第一列是什么(如:姓名) 第一列的類型(如:string(20)),第二列是什么 第二列的類型,第三列是什么 第三列的類型,…)
- 顯示此數(shù)據(jù)庫中有哪些數(shù)據(jù)表 show tables;
- 查看某張數(shù)據(jù)表的定義 desc XXX;
- *詳細查看某張數(shù)據(jù)表定義 show create table XXX \G;
- 刪除表 drop table XXX;
- 更改表名 alter table 舊表名 rename [to] 新表名;
(3)對某個數(shù)據(jù)表中的字段的操作(XXX在此表示表名)
- 修改表中某一字段的數(shù)據(jù)類型 alter table XXX modify [column] A B [first|after col_name] ; 其中,A是想要修改的字段的名字,B是修改后的數(shù)據(jù)類型 [first| after col_name]表示修改字段的位置,是在第一個還是在某一個字段后面,后面同理
- 增加表字段(即增加表的列,增加一個屬性) alter table XXX modify [column] A B [fisrt|after XX]; 其中,A是想要修改的列的名字,B是修改后的數(shù)據(jù)類型
- 刪除表字段 alter table XXX drop [column] 字段名;
- 字段改名 alter table XXX change [column] 舊字段名 新字段名 新字段類型
- 修改字段排列順序 就是通過first,after來修改
5、DML
DML操作指對數(shù)據(jù)庫中的表記錄進行“增、刪、改、查”等操作,其中,“表記錄”一般指數(shù)據(jù)庫的行,“字段”一般指數(shù)據(jù)庫的列
(1)增——插入記錄
insert into 表名 (name,age,score) values ('wangming',20,89),('lihong','23',97);
(2)刪——刪除記錄
delete from 表名1,表名2 [where 篩選條件]; 例:delete from Student where name='wangming';
(3)改——更新記錄
update 表名 set 特性=新的特性值 [where 篩選條件]
例:update Student set age=21 where name=‘wangming’;
(4)查——查詢記錄
a、全部選出 select * from 表名;
b、查看某些字段(就是列) select 字段1,字段2,字段3… from 表名;
c、查詢不重復(fù)記錄 select distinct 字段1 from 表名;
d、條件查詢 select * from 表名 where 條件;
e、排序和限制 select * from 表名 [where 條件] order by 字段1 [desc|asc],字段2 [desc|asc]; 備注:desc表示降序排列,asc表示升序排列
如果希望排序后的記錄只顯示一部分,可以在后面加 limit offset_start, row_count, 其中,offset_start 表示起始偏移量,row_count表示顯示的行數(shù)
f、聚合
select [字段1,字段2…] (這里的字段代表顯示出來的是什么) 函數(shù)名(如sum,count計數(shù),max,min等) from 表名
[where 條件]
[group by 字段1,字段2,……]…………這個表示要進行分類聚合的字段(這里的字段代表聚合的準(zhǔn)則)
[with rollup]………可選語法,表明是否對分類聚合后的結(jié)果再匯總
[having 條件]……………對分類后的結(jié)果再進行條件過濾
g、表連接
表連接分為內(nèi)連接和外連接,內(nèi)連接僅選出兩張表中互相匹配的記錄,外連接會選出其他不匹配的記錄。
外連接分為左連接和右連接,左連接包含所有的左邊表中的記錄甚至是右邊表中沒有和他匹配的記錄,右連接反之。
內(nèi)連接: 例: select 表1中的字段A,表2中的字段B from 表1,表2 where 表1.字段A=表2.字段B
外連接中的左連接: select 表1中的字段A,表2中的字段B from 表1 left join 表2 on 表1.字段A=表2.字段B
h、子查詢: 查詢的時候,條件是另一個select語句的結(jié)果,關(guān)鍵字有in,not in,=,!=,exists,not exists等
例: select * from 表1 where 字段1 in (select 字段1 from 表2);
i、記錄聯(lián)合
->select 字段1 from 表1
->union [all]
->select 字段1 from 表2;
把表1和表2中的字段1聯(lián)合(粘合)在一起并顯示出來,有all是直接聯(lián)合,沒有all是聯(lián)合后去掉重復(fù)結(jié)果
6、DCL
DCL語句主要是DBA用來管理系統(tǒng)中的對象權(quán)限,一般開發(fā)人員使用較少
(1)修改權(quán)限
grant select,insert on sakila.* to 'z1'@'localhost' identified by '123';
創(chuàng)建用戶‘z1’,密碼是‘123’,這個用戶在使用sakila這個數(shù)據(jù)庫時擁有select和insert權(quán)限
revoke insert on sakila .* from 'z1'@'localhost';
去掉用戶'z1'對數(shù)據(jù)庫sakila的insert權(quán)限
(2)如何使用“幫助”
? 命令(注意問號和命令之間有空格)
逐級找?guī)椭鷱模?nbsp; content 開始
7、其他
所以mysql語句都用 “;” 或 “\g” 結(jié)束
“\c” 可以用來清除命令行
“exit;” 可以用來退出mysql
net stop mysql 可以用來在Windows系統(tǒng)下關(guān)閉mysql服務(wù)
浙公網(wǎng)安備 33010602011771號