最近研究了一下Mysql的初學應用,在此進行整理記錄。
1、Windows系統下的安裝
安裝好後,在DOS下輸入 net start mysql并回車會啟動mysql服務(注意DOS視窗必須是以管理者模式進入,否則無法啟動服務),(附:有一次我在安裝時出現問題,服務無法啟動,後來通過這篇文章的方法解決http://jingyan.baidu.com/article/eae07827baa2a51fec548527.html)啟動後輸入mysql -u root -p進行登陸,其中,-u root 說明此時是以root使用者登入的。第一次登入沒有密碼,直接按回車即可。有人在安裝時會遇到需要密碼(即不輸入密碼無法登陸)的情況,但是又不知道密碼,這時的辦法是找到mysql安裝的檔案夾,這個檔案夾中一般會有一個叫my-default.ini的檔案,看看這個檔案夾裡是否還有一個叫my.ini的檔案,如果沒有,就将my-default.ini複制一個并重命名為my.ini,儲存在此檔案夾中,打開這個my.ini,找到
[mysqld]
#skip-grant-tables
将這個‘#’删除并儲存,再重新登陸,就可以不使用密碼成功登陸了。
2、Linux系統下的安裝
3、常用SQL語言
SQL語言分為3類,分别是
DDL:資料定義語言
DML:資料操縱語言
DCL:資料控制語言
後文文法中有 […] ,這個中括号代表裡面的内容可有可沒有,視情況而定,不是說文法本身需要[ ]
4、DDL
(1)對資料庫的操作(XXX在此表示資料庫名)
建立資料庫 create database XXX;
顯示系統中有哪些資料庫 show databases;(注意最後有個s)
選擇要操作的資料庫 use XXX;
删除資料庫 drop database XXX;
(2)在標明某一資料庫的情況下,對資料表的操作(XXX在此表示表名)
建立一張資料表 create table XXX(第一列是什麼(如:姓名) 第一列的類型(如:string(20)),第二列是什麼 第二列的類型,第三列是什麼 第三列的類型,…)
顯示此資料庫中有哪些資料表 show tables;
檢視某張資料表的定義 desc XXX;
*詳細檢視某張資料表定義 show create table XXX \G;
删除表 drop table XXX;
更改表名 alter table 舊表名 rename [to] 新表名;
(3)對某個資料表中的字段的操作(XXX在此表示表名)
修改表中某一字段的資料類型 alter table XXX modify [column] A B [first|after col_name] ; 其中,A是想要修改的字段的名字,B是修改後的資料類型 [first| after col_name]表示修改字段的位置,是在第一個還是在某一個字段後面,後面同理
增加表字段(即增加表的列,增加一個屬性) alter table XXX modify [column] A B [fisrt|after XX]; 其中,A是想要修改的列的名字,B是修改後的資料類型
删除表字段 alter table XXX drop [column] 字段名;
字段改名 alter table XXX change [column] 舊字段名 新字段名 新字段類型
修改字段排列順序 就是通過first,after來修改
5、DML
DML操作指對資料庫中的表記錄進行“增、删、改、查”等操作,其中,“表記錄”一般指資料庫的行,“字段”一般指資料庫的列
(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、查詢不重複記錄 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表示顯示的行數
f、聚合
select [字段1,字段2…] (這裡的字段代表顯示出來的是什麼) 函數名(如sum,count計數,max,min等) from 表名
[where 條件]
[group by 字段1,字段2,……]…………這個表示要進行分類聚合的字段(這裡的字段代表聚合的準則)
[with rollup]………可選文法,表明是否對分類聚合後的結果再彙總
[having 條件]……………對分類後的結果再進行條件過濾
g、表連接配接
表連接配接分為内連接配接和外連接配接,内連接配接僅選出兩張表中互相比對的記錄,外連接配接會選出其他不比對的記錄。
外連接配接分為左連接配接和右連接配接,左連接配接包含所有的左邊表中的記錄甚至是右邊表中沒有和他比對的記錄,右連接配接反之。
内連接配接: 例: 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語句的結果,關鍵字有in,not in,=,!=,exists,not exists等
例: select * from 表1 where 字段1 in (select 字段1 from 表2);
i、記錄聯合
->select 字段1 from 表1
->union [all]
->select 字段1 from 表2;
把表1和表2中的字段1聯合(粘合)在一起并顯示出來,有all是直接聯合,沒有all是聯合後去掉重複結果
6、DCL
DCL語句主要是DBA用來管理系統中的對象權限,一般開發人員使用較少
(1)修改權限
grant select,insert on sakila.* to 'z1'@'localhost' identified by '123';
建立使用者‘z1’,密碼是‘123’,這個使用者在使用sakila這個資料庫時擁有select和insert權限
revoke insert on sakila .* from 'z1'@'localhost';
去掉使用者'z1'對資料庫sakila的insert權限
(2)如何使用“幫助”
? 指令(注意問号和指令之間有空格)
逐級找幫助從? content 開始
7、其他
是以mysql語句都用 “;” 或 “\g” 結束
“\c” 可以用來清除指令行
“exit;” 可以用來退出mysql
net stop mysql 可以用來在Windows系統下關閉mysql服務