這幾天出差去了莫杈,沒有更新互例。在客戶那里,做的是安裝姓迅、集群敲霍、存儲方面的工作。如果你們感興趣丁存,過段時間我們來討論一下這個。
吃飯的時候我就在想柴我,之前討論MySQL軟件的編譯和存儲引擎是不是太早了解寝?
有很多人也許對MySQL還不是特別了解,那我們今天的內(nèi)容就是全面了解MySQL艘儒。
這篇文章你將學(xué)會
MySQL的七大特點?
MySQL最全的SQL語句界睁?
這篇文章觉增,面向應(yīng)用型數(shù)據(jù)庫,你也可以把它當(dāng)做參考手冊翻斟。
MySQL七大特點
簡單
MySQL源碼入門門檻很高逾礁,很多人不能深入其中。
但是mysql的使用還是非常簡單的访惜,任何稍微有點IT背景的技術(shù)人員都可以無師自通嘹履。
開源
開源意味著更加安全,代碼就擺在那里债热,無數(shù)的技術(shù)愛好者一起審核程序砾嫉,一起修補問題,讓使用者非常放心窒篱。
開源也帶來免費(從上世紀(jì)90年代一直持續(xù)到現(xiàn)在)焕刮。
免費,讓規(guī)那奖化部署的需求成為可能配并,使互聯(lián)網(wǎng)交互式服務(wù)更有質(zhì)量。
復(fù)制
MySQL從3.23.15版本開始霍转,支持replication荐绝,能夠支持MySQL使用者搭建master-slave架構(gòu)。請注意避消,這個功能是在2000年實現(xiàn)的低滩。
對數(shù)據(jù)庫使用者來說召夹,不管是在線備份還是讀寫分離,或者負(fù)載均衡到多個讀庫恕沫,意義都是無法估量的监憎。
引擎
MySQL的強大之一,不同于其它多數(shù)數(shù)據(jù)庫婶溯,它是插件式存儲引擎鲸阔。
這是一個“兼容并包,海納百川”的開放式設(shè)計迄委。
MySQL有許多的存儲引擎褐筛,mylsam、innodb叙身、ndb渔扎、tokudb等。而最常用的innodb是這些的國王信轿。
插件式存儲的設(shè)計晃痴,讓innodb及其他存儲引擎輕松接入到MySQL server,集百家之長财忽。
支持
MySQL之父monty在MySQL剛剛推出的時候倘核,親自寫了30000封郵件來幫助人們使用MySQL。
這樣的持之以恒即彪、不辭勞苦紧唱、不厭其煩。我給他一句niubi祖凫。
合作
PHP和Perl的開發(fā)者在MySQL早期的時候琼蚯,傳播了許多MySQL的技術(shù)和新聞,讓Linux版本都會預(yù)裝MySQL惠况。
LAMP(Linux遭庶、Apache、MySQL稠屠、PHP)-------->>這是一個集群峦睡,我們叫農(nóng)場,這個我也會說的权埠。
社區(qū)
MySQL流行的一個重要原因榨了,除了開發(fā)者的努力。
社區(qū)也是功不可沒攘蔽。他為MySQL貢獻(xiàn)了架構(gòu)方案龙屉、運維工具、技術(shù)文檔、宣傳普及转捕,乃至專業(yè)人才作岖。
不管是國外的Google、Facebook五芝,還是國內(nèi)的BAT(百度痘儡、阿里、騰訊)枢步,都在使用MySQL的過程中不斷給MySQL貢獻(xiàn)新的功能和工具沉删。
公司有競爭,技術(shù)無國界醉途。
MySQL最全的SQL語句
SQL語句中的大小寫問題:
1)關(guān)鍵字矾瑰、函數(shù)名、列名和索引名不區(qū)分大小寫
2)數(shù)據(jù)庫名结蟋、表名脯倚、別名及視圖名區(qū)分大小寫的(因為linux區(qū)分大小寫的)
增,刪,改,查
庫操作:
show databases; //列出所有的庫
create database db1; //創(chuàng)建數(shù)據(jù)庫
use db1; //切換庫
drop database db1; //刪除庫
表操作:
show tables; //列出所有的表
create table t1(id int(10),name char(10)); //創(chuàng)建表
desc t1; //查看表結(jié)構(gòu)
show create table t1\G //查看表屬性
alter table t1 rename to t2; //修改表名
drop table t2; //刪除表
字段操作:
alter table t1 add sex char(10); //添加字段
alter table 表名 add 字段名 數(shù)據(jù)類型(長度);
alter table t1 add addr char(10) after name; //在指定字段的后面添加字段
alter table 表名 add 添加字段名 數(shù)據(jù)類型(長度) after 指定字段名;
alter table t1 add num int(10) first; //添加字段到首位
alter table 表名 add 添加字段名 數(shù)據(jù)類型(長度) first嵌屎;
alter table t1 change addr address char(11); //修改字段名稱及屬性
alter table 表名 change 原字段名 修改字段名 數(shù)據(jù)類型(長度);
alter table t1 modify address int(11); //修改字段屬性
alter table 表名 modify 字段名 數(shù)據(jù)類型(數(shù)據(jù)長度);
alter table t1 drop num; //刪除字段
alter table 表名 drop 字段名恍涂;
記錄操作:
insert into t1 set id=1; //新增記錄
insert into t1 set id=1,name='haha'; //新增記錄
insert into t1(id,name) values(2,'hehe'); //新增記錄
insert into t1(id,name) values(3,'hehe'),(4,'heihei'); //新增多條
insert into t1 values(5,'xixi','male'); //新增記錄,不能有字段遺漏
insert into 表名 values(值1,值2,....); 順序按照表頭的順序(字符需要加引號)
查詢
select * from t1; //查看所有的記錄
select * from 表名宝惰;
select name,sex from t1; //顯示指定字段的記錄
select name,chi from t2 order by chi; //按照chi升序的順序排列
select name,chi from t2 order by chi desc; //逆序
select name,chi from t2 order by chi desc limit 2; //只顯示前2條記錄
select * from t2 where name like '%an'; // % 匹配任意
select * from t2 where name like 'q_an'; // _ 匹配單個字符
select * from t2 where name regexp 'an$'; //匹配正則
select name,math from t2 where math=(select max(math) from t2);//子
update t1 set sex='female' where id=3; //修改記錄,一定要有定位
update 表名 set 修改字段=值 where 條件字段=值;
update t1 set sex='male' where id=1 and name='huang'; //多條件定位
and = && or = ||
delete from t1 where name='haha'; //刪除記錄,一定要有定位
delete from t1 where sex is null; //刪除sex字段沒有值的記錄
delete from t1; //刪除所有記錄
=====================================================
函數(shù):
max() 最大值 > select max(math) from t2;
min() 最小值 > select min(math) from t2;
sum() 求和 > select sum(math) from t2;
avg() 平均值 > select avg(math) from t2;
count() 計數(shù) > select sex,count(sex) from t1 group by sex; //統(tǒng)計不同性別的數(shù)量
database() > select database(); //查看當(dāng)前所在的庫
user() > select user(); //查看當(dāng)前所登錄的用戶
password() > update user set password=password('456') where host='localhost' and user='root'; //修改root密碼
算術(shù)運算:
- / %
select 6+5;
別名 as
select name,(chi+math+eng)/3 as avg from t2;
模糊匹配 like
% %匹配任意字符,相當(dāng)于shell中的*
_ 下劃線匹配單個字符,相當(dāng)于shell中的?
select * from t2 where name like '%an';
select * from t2 where name like 'q_an';
正則匹配 regexp
select * from t2 where name regexp 'an$';
這上面沒有寫的還有約束再沧、索引尼夺、用戶和權(quán)限管理、觸發(fā)器備份與恢復(fù)炒瘸、讀寫分離淤堵,如果你們想看,后續(xù)會慢慢出來顷扩。
我會結(jié)合工作中遇到的問題還有新人需要學(xué)習(xí)的知識進(jìn)行解讀和結(jié)合拐邪。
希望以上所述,對你有用隘截。