MySQL

Mysql

是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)慧起,由瑞典MySQL AB 公司開(kāi)發(fā)惩淳,目前屬于 Oracle 旗下產(chǎn)品疹吃。它是一款免費(fèi)開(kāi)源蹦疑、小型、關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)萨驶。


為什么要用MySQL數(shù)據(jù)庫(kù)歉摧?

MySQL是目前最受歡迎開(kāi)源的SQL數(shù)據(jù)庫(kù)管理系統(tǒng),與其他的大型數(shù)據(jù)庫(kù)Oracle腔呜、DB2叁温、SQL Server等相比,MySQL雖然有它的不足之處核畴,對(duì)于個(gè)人或中小型企業(yè)來(lái)說(shuō)膝但,MySQL的功能已經(jīng)夠用了,在性能與標(biāo)準(zhǔn)的取舍上谤草,一直堅(jiān)持性能優(yōu)先的原則锰镀,成為了互聯(lián)網(wǎng)行業(yè)非常流行的數(shù)據(jù)庫(kù)軟件之一。 MySQL又是開(kāi)源軟件咖刃,因此沒(méi)有必要花大精力和大價(jià)錢(qián)去使用大型付費(fèi)數(shù)據(jù)庫(kù)管理系統(tǒng)了泳炉。
1.MySQL是開(kāi)放源代碼的數(shù)據(jù)庫(kù)
2.MySQL的跨平臺(tái)性
3.價(jià)格優(yōu)勢(shì),MySQL的社區(qū)版本都是免費(fèi)的嚎杨,即使需要付費(fèi)的附加功能價(jià)格也比其它數(shù)據(jù)庫(kù)便宜花鹅。

登錄流程

    mysql -u root -p passwd:

use databases;( 使用數(shù)據(jù)庫(kù))
help
show databases;( 顯示所有的數(shù)據(jù)庫(kù))
show tables;(  顯示表)
1064 錯(cuò)誤代碼,語(yǔ)法錯(cuò)誤
1045 登錄錯(cuò)誤 1007 創(chuàng)建同名的數(shù)據(jù)庫(kù)時(shí)報(bào)錯(cuò) 1008 數(shù)據(jù)庫(kù)不存在枫浙,刪除數(shù)據(jù)庫(kù)失敗
show grants;(  顯示用戶(hù)可以對(duì)服務(wù)器有哪些權(quán)限)
show stataus;( 用于顯示廣泛的服務(wù)器狀態(tài)信息)


庫(kù):保存有組織的數(shù)據(jù)的容器
表:某種特定類(lèi)型數(shù)據(jù)的結(jié)構(gòu)化清單刨肃,包含數(shù)據(jù)庫(kù)中所存數(shù)據(jù)的數(shù)據(jù)庫(kù)對(duì)象,有行和列組成箩帚。
注:同一個(gè)數(shù)據(jù)庫(kù)中不能有兩個(gè)同名的表真友,在不同的數(shù)據(jù)庫(kù)中可以存在名字相同的表。
列:表中每列成為一個(gè)字段紧帕。
數(shù)據(jù)類(lèi)型:所允許的數(shù)據(jù)的類(lèi)型盔然。每個(gè)表列都有相應(yīng)的數(shù)據(jù)類(lèi)型,它限制該列表中存儲(chǔ)的數(shù)據(jù)是嗜。
行:表中的一個(gè)記錄愈案。
主鍵:唯一標(biāo)識(shí)表中每行的這個(gè)列。(辨別某一東西的唯一標(biāo)識(shí)) 表中主鍵滿(mǎn)足的條件: * 任意兩行都不具有相同的主鍵值; * 每個(gè)行都必須有一個(gè)主鍵值鹅搪,主鍵值不允許null值站绪。 主鍵最好的習(xí)慣: * 不更新主鍵列中的值; * 不重用主鍵列的值丽柿; * 不在主鍵列中使用可能會(huì)更改的值恢准。
創(chuàng)建數(shù)據(jù)庫(kù)
創(chuàng)建: CREATE DATABASE XXXX charset =(等號(hào)可以省) ‘utf8’魂挂;
查看創(chuàng)建過(guò)的數(shù)據(jù)庫(kù) : SHOW CREATE DATABASE XXXX;
刪除數(shù)據(jù)庫(kù) DROP DATABASE XXXX馁筐;
創(chuàng)建已經(jīng)存在的數(shù)據(jù)庫(kù) CREATE DATBASE IF NOT EXISTS XXXX涂召;(不會(huì)報(bào)錯(cuò), 會(huì)給一個(gè)警示) DROP DATABASE IF EXISTS XXXX眯漩;
創(chuàng)建一個(gè)學(xué)生信息表

 CREATE table students( 
id int auto_increment comment '主鍵',
name varchar(50) not null comment '姓名', 
age int not null comment '年齡',
 sex char(2) not null comment '性別', 
primary key (id)
 ) comment '學(xué)生信息';
查看創(chuàng)建的表信息 SHOW CREATE TABLE students;
插入單條 insert into 表名(屬性芹扭,,) values('','',''); INSERT INTO students values(1504000,'小米',23,'女');
插入單條 insert into 表名(屬性赦抖,舱卡,) values(" "," "," "), (' ',' ',' '), (' ',' ',' ')
添加完查看 SELECT * FROM students;
查看表結(jié)構(gòu) DESC students;
刪除表 DELETE FROM 表名;& TRUNCATE 表名队萤;

修改表名

rename table 表名1 to 表名2;

增加/刪除列

alter table 表名 add 屬性 類(lèi)型 約束條件;
alter table custmers add phone int(11) not null first;
alter table custmers add phone int(11) not null after phone;
alter table 表名 drop column 屬性;

修改字段信息:

alter table 表名 modify 屬性 類(lèi)型 約束條件;(修改某一列)
alter table students change name new_name varchar(5) not null;
alter table students modify sex char(2) firt;
update 表名 set email = 'abdc123@163.com' where id = 5;(修改某一行)

刪除列/行

delete from 表名 where id = '5';(行)
alter table 表名 drop column phone;(列)

查找:

select * from students;
select name from 表名 where place like '北京%';
select count(*) from 表名;
select count(*) from 表名 where place like '北京%';

修改引擎

alter table 表名 engine = MyISAM;

MySQL數(shù)據(jù)類(lèi)型

數(shù)據(jù)類(lèi)型是數(shù)據(jù)的一種屬性轮锥,其中包括整數(shù)型、浮點(diǎn)型要尔、日期和時(shí)間類(lèi)型舍杜、字符串類(lèi)型和二進(jìn)制數(shù)據(jù)類(lèi)型。

整數(shù)類(lèi)型

整數(shù)類(lèi)型 取值范圍
INYINT -128~127
SMALLINT -32768~32767
MEDIUMINT -8388608~8388607
INT -2147483648~2147483647
INTEGRE -2147483648~2147483647
BIGINT

日期時(shí)間

類(lèi)型 范圍
YEAR 1901~2155
DATE 1000-01~9999-12-31
TIME -839:59:59~839:59:59
DATETIME 1000-01 00:00:00~9999-12-31 23:59:59
字符串 字符串類(lèi)型是在數(shù)據(jù)庫(kù)中存儲(chǔ)字符串的字符類(lèi)型赵辕。
char類(lèi)型的長(zhǎng)度是固定的既绩,長(zhǎng)度可以在0~255的任意值。
varchar類(lèi)型的長(zhǎng)度是可變的还惠。 
注意:如果char和varchar的長(zhǎng)度是5饲握,插入的值的長(zhǎng)度超過(guò)5系統(tǒng)就會(huì)報(bào)錯(cuò)(1406)。

檢索單個(gè)列

      例:select name from badboy;
      結(jié)束SQL語(yǔ)句蚕键,多條SQL語(yǔ)句必須以分號(hào)(;)分隔 關(guān)鍵字大寫(xiě)救欧,所有列和表名使用小寫(xiě)

檢索多個(gè)列

    例:select name,age,id from badboy;

select concat (name,id) from badboy;兩個(gè)字符段在一格中出現(xiàn) concat相當(dāng)于join

檢索所有列

select * from 表名;

檢索不同的行

select distinct age from badboy;(去重)

分頁(yè)

    select name from badboy limit 5;顯示表中的5行

    select name from students limit10,10;

    limit 4 offset 3 (從行3開(kāi)始取4行) = limit 3,4

使用完全限定的表名

    select [badboy.name](http://badboy.name) from stu_220.badboy;

排序(order by)

    select name, age from students order by age asc;

    select name,age from students order by age desc;

    select id, name from students order by age,name;

    selcet name,age from students order by age desc, name;

    select name,age birthday from students where sex='女' and age >25 order by birthday desc;

where 字句

    selcet name from students where age > 20;

    selcet name from students where age > 20 order by age;(order字句應(yīng)放在where字句后)

不等于: <>/!= selcet name from students where age<>20;

between語(yǔ)句

    select name,upname from students where upname regexp '^[a-f]';

    select name,age from students where age between 18 and 20;

and操作符

    select name,age,place from students where age < 20 and place like '山西%';

or操作符

    select name, age from students where age=19 or age=20;
      IN select name,age form students where age in (19,20);

    select name,age form students where age between 18 and 19;
    select name,age form students where age>=18 and age <=19;

in操作符一般比or操作符清單執(zhí)行更快 in的做大優(yōu)點(diǎn)是可以包含其他select語(yǔ)句锣光,使得能夠更動(dòng)態(tài)地建立where語(yǔ)句

三范式:

1NF, 第一范式
字段不能再分笆怠,就滿(mǎn)足第一范式。
-- 2NF, 第二范式
每個(gè)表要有主鍵約束
滿(mǎn)足第一范式的前提下誊爹,不能出現(xiàn)部分依賴(lài)蹬刷。
消除符合主鍵就可以避免部分依賴(lài)。增加單列關(guān)鍵字替废。
-- 3NF, 第三范式
滿(mǎn)足第二范式的前提下箍铭,不能出現(xiàn)傳遞依賴(lài)。
某個(gè)字段依賴(lài)于主鍵椎镣,而有其他字段依賴(lài)于該字段。這就是傳遞依賴(lài)兽赁。
將一個(gè)實(shí)體信息的數(shù)據(jù)放在一個(gè)表內(nèi)實(shí)現(xiàn)状答。

TRUNCATE

TRUNCATE [TABLE] tbl_name
清空數(shù)據(jù)
刪除重建表
區(qū)別:
1冷守,truncate 是刪除表再創(chuàng)建,delete 是逐條刪除
2惊科,truncate 重置auto_increment的值拍摇。而delete不會(huì)
3,truncate 不知道刪除了幾條馆截,而delete知道充活。

mysql函數(shù)與條件判斷函數(shù)

數(shù)學(xué)函數(shù)

name desc
ABS(X) 返回X的絕對(duì)值
MOD(X,Y) 返回X被Y除后的余數(shù)。
FLOOR(X) 返回不大于X的最大整數(shù)值蜡娶。
CEILING(X) 返回不小于X的最小整數(shù)值
ROUND(X) 返回參數(shù)X的四舍五入的一個(gè)整數(shù)混卵。

TRUNCATE(X,Y) 返回X中小數(shù)點(diǎn)Y位后面的數(shù)

字符串函數(shù)

name desc
LENGTH(str) 返回字符串str的長(zhǎng)度。
CONCAT(str1,str2,...) 返回來(lái)自于參數(shù)連結(jié)的字符串窖张。如果任何參數(shù)是NULL幕随,返回NULL∷藿樱可以有超過(guò)2個(gè)的參數(shù)赘淮。一個(gè)數(shù)字參數(shù)被變換為等價(jià)的字符串形式。
TRIM(str) 刪除字符串兩側(cè)的空格睦霎。
REPLACE(str,s1,s2) 字符串str中所有出的s1字符串由s2代替梢卸。
SUBSTRING(str,pos,len) 從字符串str的起始位置pos返回一個(gè)長(zhǎng)度未len的子串。
REVERSE(str) 返回字符串反轉(zhuǎn)順序后的結(jié)果副女。
LOCATE(substr,str) 返回子串substr在字符串str第一個(gè)出現(xiàn)的位置(起始位置)

--#### 時(shí)間日期函數(shù)

now(), current_timestamp(); -- 當(dāng)前日期時(shí)間
current_date(); -- 當(dāng)前日期
current_time(); -- 當(dāng)前時(shí)間
date('yyyy-mm-dd hh:ii:ss'); -- 獲取日期部分
time('yyyy-mm-dd hh:ii:ss'); -- 獲取時(shí)間部分
date_format('yyyy-mm-dd hh:ii:ss', '%d %y %a %d %m %b %j'); -- 格式化時(shí)間
unix_timestamp(); -- 獲得unix時(shí)間戳
from_unixtime(); -- 從時(shí)間戳獲得時(shí)間

條件判斷函數(shù)

name desc exprote
IF(expr1,expr2,expr3) 如果 expr1 是TRUE 則返回 expr2蛤高,否則返回expr3 SELECT IF(age>30,1,0) FROM studentinfo;
IFNULL(v1,v2) 如果v1不為NULL則返回v1,否則返回v2 select IFNULL(phonenum,'123') as phone FROM studentinfo;
CASE value WHEN 條件 THEN 結(jié)果END 如果value的值滿(mǎn)足WHERE后面的條件,則返回THEN后面的結(jié)果肮塞,否則返回ELSE后面的結(jié)果 SELECT student_name,CASE WHEN age>50 THEN age ELSE 0 END FROM studentinfo;

加密函數(shù)

name desc exprote
PASSWORD(str) 函數(shù)可以對(duì)字符串str進(jìn)行加密襟齿。一般情況下,PASSWORD(str)函數(shù)主要是用來(lái)給用戶(hù)的密碼加密的枕赵。 SELECT PASSWORD('abcd');
MD5(str) MD5(str)函數(shù)可以對(duì)字符串str進(jìn)行加密猜欺。MD5(str)函數(shù)主要對(duì)普通的數(shù)據(jù)進(jìn)行加密。 SELECT MD5('abc')

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拷窜,一起剝皮案震驚了整個(gè)濱河市开皿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌篮昧,老刑警劉巖赋荆,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異懊昨,居然都是意外死亡窄潭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)酵颁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嫉你,“玉大人月帝,你說(shuō)我怎么就攤上這事∮奈郏” “怎么了嚷辅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)距误。 經(jīng)常有香客問(wèn)我簸搞,道長(zhǎng),這世上最難降的妖魔是什么准潭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任趁俊,我火速辦了婚禮,結(jié)果婚禮上惋鹅,老公的妹妹穿的比我還像新娘则酝。我一直安慰自己,他們只是感情好闰集,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布沽讹。 她就那樣靜靜地躺著,像睡著了一般武鲁。 火紅的嫁衣襯著肌膚如雪爽雄。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天沐鼠,我揣著相機(jī)與錄音挚瘟,去河邊找鬼。 笑死饲梭,一個(gè)胖子當(dāng)著我的面吹牛乘盖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播憔涉,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼订框,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了兜叨?” 一聲冷哼從身側(cè)響起穿扳,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎国旷,沒(méi)想到半個(gè)月后矛物,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡跪但,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年履羞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吧雹,死狀恐怖骨杂,靈堂內(nèi)的尸體忽然破棺而出涂身,到底是詐尸還是另有隱情雄卷,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布蛤售,位于F島的核電站丁鹉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏悴能。R本人自食惡果不足惜揣钦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望漠酿。 院中可真熱鬧冯凹,春花似錦、人聲如沸炒嘲。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)夫凸。三九已至浑劳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間夭拌,已是汗流浹背魔熏。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鸽扁,地道東北人蒜绽。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像桶现,于是被迫代替她去往敵國(guó)和親躲雅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容