MySQL:數(shù)據(jù)庫(kù)基礎(chǔ)

一拌倍、什么是MySQL?

MySQL 是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)噩翠,開發(fā)者為瑞典 MySQL AB 公司廊鸥。由于其體積小、速度快次酌、總體擁有成本低恨课,尤其是開放源碼這一特點(diǎn),MySQL 被廣泛地應(yīng)用在Internet 上的中小型網(wǎng)站中岳服。
MySQL的特征

  • 性能快捷剂公、優(yōu)化SQL語(yǔ)言
  • 容易使用
  • 多線程和可靠性
  • 多用戶支持
  • 可移植性和開放源代碼
  • 遵循國(guó)際標(biāo)準(zhǔn)和國(guó)際化支持
  • 為多種編程語(yǔ)言提供API

二、MySQL基本操作

(一)mysql命令

mysql -h host_name -u user_name –ppassword
  • h :當(dāng)連接 MySQL 服務(wù)器不在同臺(tái)主機(jī)時(shí)吊宋,填寫主機(jī)名或 IP 地址
  • u :登錄 MySQL 的用戶名
  • p :登錄 MySQL 的密碼

注意:密碼如果寫在命令行的時(shí)候一定不能有空格纲辽。如果使用的系統(tǒng)為 linux 并且登陸用戶名字與 MySQL 的用戶名相同即可不用輸入用戶名密碼,linux 默認(rèn)是以 root 登陸璃搜,windows 默認(rèn)用戶是 ODBC拖吼。

(二)mysql程序常用命令

  • 顯示所有數(shù)據(jù)庫(kù):
show databases;
  • 選定默認(rèn)數(shù)據(jù)庫(kù):
use dbname;
  • 顯示默認(rèn)數(shù)據(jù)庫(kù)中所有表:
show tables;
  • 退出 mysql 程序:
\q

三、數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí)

數(shù)據(jù)完整型 = 可靠性 + 準(zhǔn)確性

分類 概述 約束方法
數(shù)據(jù)實(shí)體完整性 實(shí)體的完整性強(qiáng)制表的標(biāo)識(shí)符列或主鍵的完整性 唯一約束腺劣、主鍵約束或標(biāo)識(shí)列
字段完整性 如果插入的數(shù)據(jù)不滿足限制要求绿贞,數(shù)據(jù)庫(kù)管理系統(tǒng)就拒絕執(zhí)行操作 限制數(shù)據(jù)類型、檢查約束橘原、外鍵約束籍铁、默認(rèn)值涡上、非空約束
引用完整性 在刪除和輸入記錄時(shí),保持表之間已定義的關(guān)系拒名,確保鍵值在所有表中一致吩愧。不能孤立,即引用不存在的值 外鍵約束
自定義完整性 用戶自己定義的業(yè)務(wù)規(guī)則 規(guī)則增显、存儲(chǔ)過程雁佳、觸發(fā)器

完整型包括:列值要求(約束)、行值要求(約束)

四同云、什么是SQL糖权?

(一)SQL語(yǔ)法組成

SQL 概述 命令
DML(Data Manipulation Language數(shù)據(jù)操作語(yǔ)言) 查詢、插入炸站、刪除和修改數(shù)據(jù)庫(kù)中的數(shù)據(jù) SELECT星澳、INSERT、 UPDATE 旱易、DELETE等
DCL(Data Control Language數(shù)據(jù)控制語(yǔ)言) 用來(lái)控制存取許可禁偎、存取權(quán)限等 GRANT、REVOKE等
DDL(Data Definition Language數(shù)據(jù)定義語(yǔ)言) 用來(lái)建立數(shù)據(jù)庫(kù)阀坏、數(shù)據(jù)庫(kù)對(duì)象和定義其列 CREATE TABLE如暖、DROP TABLE、ALTER TABLE等

功能函數(shù):日期函數(shù)忌堂、數(shù)學(xué)函數(shù)盒至、字符函數(shù)、系統(tǒng)函數(shù)等浸船。

(二)MySQL中的SQL語(yǔ)言

  1. 屬于一個(gè)SQL語(yǔ)句妄迁,使用分號(hào)(;)結(jié)尾寝蹈,否則mysql認(rèn)為語(yǔ)句沒有輸入完李命。
  2. 箭頭(->)代表SQL語(yǔ)句沒有輸入完取消SQL語(yǔ)句使用(\c)。
  3. SQL語(yǔ)句關(guān)鍵字和函數(shù)名不區(qū)分大小寫(Linux區(qū)分箫老,Windows不區(qū)分)封字。
  4. 使用函數(shù)時(shí),函數(shù)名和后面的括號(hào)之間不能有空格耍鬓。

(三)MySQL數(shù)據(jù)類型

  • 數(shù)據(jù)類型種類
  • 數(shù)值列類型
    數(shù)值列類型包括整型和浮點(diǎn)型
類型 大小 范圍(有符號(hào)) 范圍(無(wú)符號(hào)) 用途
TINYINT 1 byte (-128阔籽,127) (0,255) 小整數(shù)值
SMALLINT 2 bytes (-32 768牲蜀,32 767) (0笆制,65 535) 大整數(shù)值
MEDIUMINT 3 bytes (-8 388 608,8 388 607) (0涣达,16 777 215) 大整數(shù)值
INT或INTEGER 4 bytes (-2 147 483 648在辆,2 147 483 647) (0证薇,4 294 967 295) 大整數(shù)值
BIGINT 8 bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0匆篓,18 446 744 073 709 551 615) 極大整數(shù)值
FLOAT 4 bytes (-3.402 823 466 E+38浑度,-1.175 494 351 E-38),0鸦概,(1.175 494 351 E-38箩张,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38窗市,3.402 823 466 E+38) 單精度先慷、浮點(diǎn)數(shù)值
DOUBLE 8 bytes (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308)咨察,0熟掂,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0扎拣,(2.225 073 858 507 201 4 E-308赴肚,1.797 693 134 862 315 7 E+308) 雙精度、浮點(diǎn)數(shù)值
DECIMAL 對(duì)DECIMAL(M,D) 二蓝,如果M>D誉券,為M+2否則為D+2 依賴于M和D的值 依賴于M和D的值 小數(shù)值
  • 字符串列類型
    CHAR類型和VARCHAR類型。
    CHAR類型和VARCHAR類型長(zhǎng)度范圍都是0~255之間的大小刊愚。他們之間的差別在于MySQL處理存儲(chǔ)的方式:
    A. CHAR把這個(gè)大小視為值的準(zhǔn)確大杏桓(用空格填補(bǔ)比較短的值)。
    B. VARCHAR類型把它視為最大值并且只使用了存儲(chǔ)字符串實(shí)際上需要的字節(jié)數(shù)(增加了一個(gè)額外的字節(jié)記錄長(zhǎng)度)鸥诽。因而商玫,較短的值當(dāng)被插入一個(gè)語(yǔ)句為VARCHAR類型的字段時(shí),將不會(huì)用空格填補(bǔ)牡借。
  • 日期和時(shí)間列類型
    存儲(chǔ)如“2005 -1-1” 或者“12:00:00”這樣的數(shù)值的值拳昌。在MySQL中日期是按”年-月-日”的順序。
類型說明 格式 取值范圍 存儲(chǔ)要求
DATE "YYYY-MM-DD" "1000-01-01"到"9999-12-31" 3字節(jié)
TIME "hh:mm:ss" "-838:59:59"到"838:59:59" 3字節(jié)
DATETIME "YYYY-MM-DD hh:mm:ss" "1000-01-01 00:00:00"到"9999-12-31 23:59:59" 8字節(jié)
TIMESTAMP[(M)] "YYYYMMDDhhmmss" 19700101000000到2037年的某個(gè)時(shí)刻 4字節(jié)
YEAR[(M)] "YYYY" 1901到2155 1字節(jié)

(四)數(shù)值列的完整性約束

  • AUTO_INCREMENT
    自動(dòng)標(biāo)識(shí)列钠龙,在需要產(chǎn)生唯一標(biāo)志符號(hào)或者順序值時(shí)候炬藤,可用此屬性。
create table t(id int auto_increment not null primary key);
  • UNSIGNED
    無(wú)符號(hào)碴里,此屬性禁用負(fù)值沈矿,將數(shù)值的取值范圍從零開始。
create table t(num tinyint , num2 tinyint unsigned);
  • NULL 和NOT NULL
    默認(rèn)為NULL咬腋,即插入值時(shí)沒有在此字段插入值時(shí)自動(dòng)填NULL羹膳,如果指定了NOT NULL,則必須在插入值時(shí)在此字段添入值根竿,不允許插入NULL值陵像。
  • DEFAULT
    可以通過此屬性來(lái)指定一個(gè)缺省值湃缎,即如果沒有在此列添加值,那么默認(rèn)添加DEFAULT后指定值蠢壹。
  • ZEROFILL
    前導(dǎo)零填充數(shù)值類型值以達(dá)到列的顯示寬度嗓违。
create table test2(num1 int default 1,num2 int zerofill);

五、數(shù)據(jù)庫(kù)操作

(一)建立數(shù)據(jù)庫(kù)操作

語(yǔ)法:

create database 數(shù)據(jù)庫(kù)名

敘述:創(chuàng)建一個(gè)具有指定名稱的數(shù)據(jù)庫(kù)图贸。如果要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)已經(jīng)存在蹂季,或者沒有創(chuàng)建它的適當(dāng)權(quán)限,則此語(yǔ)句失敗疏日。

(二)建立表操作

語(yǔ)法 :

create table 表名(    
        列名1 列類型 [< 列的完整性約束>],
        列名2 列類型 [< 列的完整性約束>],
        ... ... );

敘述:在當(dāng)前數(shù)據(jù)庫(kù)下新創(chuàng)建一個(gè)數(shù)據(jù)表偿洁。
列類型:表示該列的數(shù)據(jù)類型。

(三)顯示表結(jié)構(gòu)操作

語(yǔ)法:

describe 表名沟优; 表名涕滋;
desc 表名; 表名挠阁;

敘述:用于顯示表的創(chuàng)建結(jié)構(gòu)宾肺。

(四)刪除數(shù)據(jù)庫(kù)或表操作

  • 刪除表操作
    語(yǔ)法:
drop table [if exists] tab_name [,tab_name]...

敘述:從數(shù)據(jù)庫(kù)中刪除給定的表。如果給出if exists 子句侵俗,則刪除不存在的表不會(huì)出錯(cuò)锨用。

  • 刪除數(shù)據(jù)庫(kù)操作
    語(yǔ)法:
drop database [if exists] db_name

敘述:刪除給定的數(shù)據(jù)庫(kù)。在刪除一個(gè)數(shù)據(jù)庫(kù)后隘谣,它就永遠(yuǎn)沒有了,因此要特別小心增拥。如果給出if exists 子句,則刪除不存在的數(shù)據(jù)庫(kù)不會(huì)出錯(cuò)寻歧。

(五)更改表結(jié)構(gòu)操作

語(yǔ)法:

alter table 表名 action;

說明:
action可以是如下語(yǔ)句:

add 列名 建表語(yǔ)句 [first | after 列名] //可以為表添加一列
//如果沒指定first或者after掌栅,則在列尾添加一列,否則在指定列添加新列
add primary key (列名) //為表添加一個(gè)主鍵码泛,如果主鍵已經(jīng)存在猾封,則出現(xiàn)錯(cuò)誤
add foreign key (列名) references 表名 (列名) //為表添加一個(gè)外鍵
alter 列名 set default 默認(rèn)值 //可以更改指定列默認(rèn)值
change 舊列名 新列名 <建表語(yǔ)句> [first | after 列名] //可以更改列類型和列名稱
//如果原列的名字和新列的名字相同
modify 列名 <建表語(yǔ)句> [first | after 列名] //和change的作用相同
drop 列名 // 可以刪除一列
drop primary key // 可以刪除主鍵
engine 類型名 //可以改變表類型
rename as 新表名 // 可以將表名更改

六、MySQL運(yùn)算符

  • 算數(shù)運(yùn)算符
運(yùn)算符 語(yǔ)法 說明
+ a + b 加弟晚,操作數(shù)之和
- a - b 減忘衍,操作數(shù)之差
- - a 一元減號(hào),操作數(shù)取負(fù)
* a * b 乘卿城,操作數(shù)之積
/ a / b 除,操作數(shù)之商
% a % b 模铅搓,操作數(shù)除后的余數(shù)
  • 比較運(yùn)算符
    比較運(yùn)算符允許我們對(duì)表達(dá)式的左邊和右邊進(jìn)行比較瑟押。一個(gè)比較運(yùn)算符的結(jié)果總是1(真),0(假)星掰,或是為NULL(不能確定)多望。
    比較運(yùn)算符可以用于比較數(shù)字和字符串嫩舟。數(shù)字作為浮點(diǎn)值比較,而字符串以不區(qū)分大小寫的方式進(jìn)行比較(除非使用特殊的BINARY二進(jìn)制關(guān)鍵字)怀偷。
運(yùn)算符 語(yǔ)法 說明
= a = b 如果兩操作數(shù)相等家厌,為真
!=,<> a != b, a <> b 如果兩操作數(shù)不等,為真
< a < b 如果a小于b椎工,為真
<= a <= b 如果a小于等于b饭于,為真
> a > b 如果a大于b,為真
>= a >= b 如果a大于等于b维蒙,為真
IN a IN (b1,b2,...) 如果a為b1,b2,...中任意一個(gè)掰吕,為真
BETWEEN a BETWEEN a AND c 如果a值在b與c之間(包括b、c)颅痊,為真
LIKE a LIKE b SQL模式匹配:如果a與b匹配殖熟,為真
NOT LIKE a NOT LIKE b SQL模式匹配:如果a與b不匹配,為真
REGEXP a REGEXP b 擴(kuò)展正規(guī)表達(dá)式匹配:如果a與b匹配斑响,為真
NOT REGEXP a NOT ERGEXP b 擴(kuò)展正規(guī)表達(dá)式匹配:如果a與b不匹配菱属,為真
<=> a <=> b 如果兩操作數(shù)相同(即使為NULL),為真
IS NULL a IS NULL 如果操作數(shù)為NULL舰罚,為真
IS NOT NULL a IS NOT NULL 如果操作數(shù)不為NULL照皆,為真

MySQL數(shù)據(jù)庫(kù)中的通配符:
“%” ( 百分號(hào)) 代表任意長(zhǎng)度(長(zhǎng)度可以為0)的字符串
“_ ”( 下橫線) 代表任意單個(gè)字符

  • 邏輯運(yùn)算符
    與(AND,&&)、或(OR,||)沸停、非(NOT,!)
  • 位運(yùn)算符
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末膜毁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子愤钾,更是在濱河造成了極大的恐慌瘟滨,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件能颁,死亡現(xiàn)場(chǎng)離奇詭異杂瘸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)伙菊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門败玉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人镜硕,你說我怎么就攤上這事运翼。” “怎么了兴枯?”我有些...
    開封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵血淌,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)悠夯,這世上最難降的妖魔是什么癌淮? 我笑而不...
    開封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮沦补,結(jié)果婚禮上乳蓄,老公的妹妹穿的比我還像新娘。我一直安慰自己夕膀,他們只是感情好虚倒,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著店诗,像睡著了一般裹刮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上庞瘸,一...
    開封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天捧弃,我揣著相機(jī)與錄音,去河邊找鬼擦囊。 笑死违霞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瞬场。 我是一名探鬼主播买鸽,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼贯被!你這毒婦竟也來(lái)了眼五?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤彤灶,失蹤者是張志新(化名)和其女友劉穎看幼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體幌陕,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诵姜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搏熄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棚唆。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖心例,靈堂內(nèi)的尸體忽然破棺而出宵凌,到底是詐尸還是另有隱情,我是刑警寧澤契邀,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布摆寄,位于F島的核電站,受9級(jí)特大地震影響坯门,放射性物質(zhì)發(fā)生泄漏微饥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一古戴、第九天 我趴在偏房一處隱蔽的房頂上張望欠橘。 院中可真熱鬧,春花似錦现恼、人聲如沸肃续。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)始锚。三九已至,卻和暖如春喳逛,著一層夾襖步出監(jiān)牢的瞬間瞧捌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工润文, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留姐呐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓典蝌,卻偏偏與公主長(zhǎng)得像曙砂,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子骏掀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

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