mysql入門教程

21分鐘 MySQL 入門教程

目錄

一、MySQL的相關(guān)概念介紹

二、Windows下MySQL的配置

配置步驟

MySQL服務(wù)的啟動治唤、停止與卸載

三滔以、MySQL腳本的基本組成

四、MySQL中的數(shù)據(jù)類型

五惫搏、使用MySQL數(shù)據(jù)庫

登錄到MySQL

創(chuàng)建一個數(shù)據(jù)庫

選擇所要操作的數(shù)據(jù)庫

創(chuàng)建數(shù)據(jù)庫表

六、操作MySQL數(shù)據(jù)庫

向表中插入數(shù)據(jù)

查詢表中的數(shù)據(jù)

更新表中的數(shù)據(jù)

刪除表中的數(shù)據(jù)

七、創(chuàng)建后的修改

添加列

修改列

刪除列

重命名表

刪除整張表

刪除整個數(shù)據(jù)庫

八互拾、附錄

修改 root 用戶密碼

可視化管理工具 MySQL Workbench

MySQL的相關(guān)概念介紹

MySQL 為關(guān)系型數(shù)據(jù)庫(Relational Database Management System), 這種所謂的"關(guān)系型"可以理解為"表格"的概念, 一個關(guān)系型數(shù)據(jù)庫由一個或數(shù)個表格組成, 如圖所示的一個表格:

表頭(header): 每一列的名稱;

列(row): 具有相同數(shù)據(jù)類型的數(shù)據(jù)的集合;

行(col): 每一行用來描述某個人/物的具體信息;

值(value): 行的具體信息, 每個值必須與該列的數(shù)據(jù)類型相同;

鍵(key): 表中用來識別某個特定的人\物的方法, 鍵的值在當(dāng)前列中具有唯一性。

Windows下MySQL的配置

以 MySQL 5.1 免安裝版為例, 下載 mysql-noinstall-5.1.69-win32.zip ( 官方下載頁:http://dev.mysql.com/downloads/mysql/5.1.html#downloads)

配置步驟:

1. 將下載的 mysql-noinstall-5.1.69-win32.zip 解壓至需要安裝的位置, 如: C:\Program Files;

2. 在安裝文件夾下找到 my-small.ini 配置文件, 將其重命名為 my.ini , 打開進(jìn)行編輯, 在 [client] 與 [mysqld] 下均添加一行:default-character-set = gbk

3. 打開 Windows 環(huán)境變量設(shè)置, 新建變量名 MYSQL_HOME , 變量值為 MySQL 安裝目錄路徑, 這里為 C:\Program Files\mysql-5.1.69-win32

4. 在 環(huán)境變量 的 Path 變量中添加;%MYSQL_HOME%\bin;

5. 安裝 MySQL 服務(wù), 打開Windows命令提示符, 執(zhí)行命令:mysqld --install MySQL --defaults-file="my.ini"提示"Service successfully installed."表示成功;

MySQL服務(wù)的啟動嚎幸、停止與卸載

在 Windows 命令提示符下運行:

啟動:net start MySQL

停止:net stop MySQL

卸載:sc delete MySQL

MySQL腳本的基本組成

與常規(guī)的腳本語言類似, MySQL 也具有一套對字符颜矿、單詞以及特殊符號的使用規(guī)定, MySQL 通過執(zhí)行 SQL 腳本來完成對數(shù)據(jù)庫的操作, 該腳本由一條或多條MySQL語句(SQL語句 + 擴展語句)組成, 保存時腳本文件后綴名一般為 .sql。在控制臺下, MySQL 客戶端也可以對語句進(jìn)行單句的執(zhí)行而不用保存為.sql文件嫉晶。

標(biāo)識符

標(biāo)識符用來命名一些對象, 如數(shù)據(jù)庫骑疆、表、列替废、變量等, 以便在腳本中的其他地方引用箍铭。MySQL標(biāo)識符命名規(guī)則稍微有點繁瑣, 這里我們使用萬能命名規(guī)則: 標(biāo)識符由字母、數(shù)字或下劃線(_)組成, 且第一個字符必須是字母或下劃線椎镣。

對于標(biāo)識符是否區(qū)分大小寫取決于當(dāng)前的操作系統(tǒng), Windows下是不敏感的, 但對于大多數(shù) linux\unix 系統(tǒng)來說, 這些標(biāo)識符大小寫是敏感的诈火。

關(guān)鍵字:

MySQL的關(guān)鍵字眾多, 這里不一一列出, 在學(xué)習(xí)中學(xué)習(xí)。 這些關(guān)鍵字有自己特定的含義, 盡量避免作為標(biāo)識符状答。

語句:

MySQL語句是組成MySQL腳本的基本單位, 每條語句能完成特定的操作, 他是由 SQL 標(biāo)準(zhǔn)語句 + MySQL 擴展語句組成冷守。

函數(shù):

MySQL函數(shù)用來實現(xiàn)數(shù)據(jù)庫操作的一些高級功能, 這些函數(shù)大致分為以下幾類: 字符串函數(shù)、數(shù)學(xué)函數(shù)惊科、日期時間函數(shù)拍摇、搜索函數(shù)、加密函數(shù)馆截、信息函數(shù)授翻。

MySQL中的數(shù)據(jù)類型

MySQL有三大類數(shù)據(jù)類型, 分別為數(shù)字、日期\時間、字符串, 這三大類中又更細(xì)致的劃分了許多子類型:

數(shù)字類型

整數(shù): tinyint堪唐、smallint巡语、mediumint、int淮菠、bigint

浮點數(shù): float男公、double、real合陵、decimal

日期和時間: date枢赔、time、datetime拥知、timestamp踏拜、year

字符串類型

字符串: char、varchar

文本: tinytext低剔、text速梗、mediumtext、longtext

二進(jìn)制(可用來存儲圖片襟齿、音樂等): tinyblob姻锁、blob、mediumblob猜欺、longblob

這里不能詳細(xì)對這些類型進(jìn)行介紹了, 篇幅可能會很長, 詳細(xì)介紹參見:《MySQL數(shù)據(jù)類型》:http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html

使用MySQL數(shù)據(jù)庫

登錄到MySQL

當(dāng) MySQL 服務(wù)已經(jīng)運行時, 我們可以通過MySQL自帶的客戶端工具登錄到MySQL數(shù)據(jù)庫中, 首先打開命令提示符, 輸入以下格式的命名:

mysql -h 主機名 -u 用戶名 -p

-h :該命令用于指定客戶端所要登錄的MySQL主機名, 登錄當(dāng)前機器該參數(shù)可以省略;

-u :所要登錄的用戶名;

-p :告訴服務(wù)器將會使用一個密碼來登錄, 如果所要登錄的用戶名密碼為空, 可以忽略此選項位隶。

以登錄剛剛安裝在本機的MySQL數(shù)據(jù)庫為例, 在命令行下輸入 mysql -u root -p 按回車確認(rèn), 如果安裝正確且MySQL正在運行, 會得到以下響應(yīng):

Enter password:

若密碼存在, 輸入密碼登錄, 不存在則直接按回車登錄, 按照本文中的安裝方法, 默認(rèn) root 賬號是無密碼的。登錄成功后你將會看到 Welecome to the MySQL monitor... 的提示語开皿。

然后命令提示符會一直以 mysql> 加一個閃爍的光標(biāo)等待命令的輸入, 輸入 exit 或 quit 退出登錄涧黄。

創(chuàng)建一個數(shù)據(jù)庫

使用 create database 語句可完成對數(shù)據(jù)庫的創(chuàng)建, 創(chuàng)建命令的格式如下:

create database 數(shù)據(jù)庫名 [其他選項];

例如我們需要創(chuàng)建一個名為 samp_db 的數(shù)據(jù)庫, 在命令行下執(zhí)行以下命令:

create database samp_db character set gbk;

為了便于在命令提示符下顯示中文, 在創(chuàng)建時通過 character set gbk 將數(shù)據(jù)庫字符編碼指定為 gbk。創(chuàng)建成功時會得到 Query OK, 1 row affected(0.02 sec) 的響應(yīng)赋荆。

注意:MySQL語句以分號(;)作為語句的結(jié)束, 若在語句結(jié)尾不添加分號時, 命令提示符會以 -> 提示你繼續(xù)輸入(有個別特例, 但加分號是一定不會錯的);

提示:可以使用 show databases; 命令查看已經(jīng)創(chuàng)建了哪些數(shù)據(jù)庫笋妥。

選擇所要操作的數(shù)據(jù)庫

要對一個數(shù)據(jù)庫進(jìn)行操作, 必須先選擇該數(shù)據(jù)庫, 否則會提示錯誤:

ERROR 1046(3D000): No database selected

兩種方式對數(shù)據(jù)庫進(jìn)行使用的選擇:

一:在登錄數(shù)據(jù)庫時指定, 命令:mysql -D 所選擇的數(shù)據(jù)庫名 -h 主機名 -u 用戶名 -p

例如登錄時選擇剛剛創(chuàng)建的數(shù)據(jù)庫: mysql -D samp_db -u root -p

二:在登錄后使用 use 語句指定, 命令:use 數(shù)據(jù)庫名;

use 語句可以不加分號, 執(zhí)行 use samp_db 來選擇剛剛創(chuàng)建的數(shù)據(jù)庫, 選擇成功后會提示: Database changed

創(chuàng)建數(shù)據(jù)庫表

使用 create table 語句可完成對表的創(chuàng)建, create table 的常見形式:

create table 表名稱(列聲明);

以創(chuàng)建 students 表為例, 表中將存放 學(xué)號(id)、姓名(name)糠睡、性別(sex)挽鞠、年齡(age)疚颊、聯(lián)系電話(tel) 這些內(nèi)容:

create table students

id int unsigned not null auto_increment primary key,

name char(8) not null,

sex char(4) not null,

age tinyint unsigned not null,

tel char(13) null default "-"

);

對于一些較長的語句在命令提示符下可能容易輸錯, 因此我們可以通過任何文本編輯器將語句輸入好后保存為 createtable.sql 的文件中, 通過命令提示符下的文件重定向執(zhí)行執(zhí)行該腳本狈孔。

打開命令提示符, 輸入:mysql -D samp_db -u root -p < createtable.sql

(提示: 1.如果連接遠(yuǎn)程主機請加上 -h 指令; 2. createtable.sql 文件若不在當(dāng)前工作目錄下需指定文件的完整路徑。)

語句解說:

create table tablename(columns) 為創(chuàng)建數(shù)據(jù)庫表的命令, 列的名稱以及該列的數(shù)據(jù)類型將在括號內(nèi)完成;

括號內(nèi)聲明了5列內(nèi)容, id材义、name均抽、sex、age其掂、tel為每列的名稱, 后面跟的是數(shù)據(jù)類型描述, 列與列的描述之間用逗號(,)隔開;

以 "id int unsigned not null auto_increment primary key" 行進(jìn)行介紹:

"id" 為列的名稱;

"int" 指定該列的類型為 int(取值范圍為 -8388608到8388607), 在后面我們又用 "unsigned" 加以修飾, 表示該類型為無符號型, 此時該列的取值范圍為 0到16777215;

"not null" 說明該列的值不能為空, 必須要填, 如果不指定該屬性, 默認(rèn)可為空;

"auto_increment" 需在整數(shù)列中使用, 其作用是在插入數(shù)據(jù)時若該列為 NULL, MySQL將自動產(chǎn)生一個比現(xiàn)存值更大的唯一標(biāo)識符值油挥。在每張表中僅能有一個這樣的值且所在列必須為索引列。

"primary key" 表示該列是表的主鍵, 本列的值必須唯一, MySQL將自動索引該列。

下面的 char(8) 表示存儲的字符長度為8, tinyint的取值范圍為 -127到128, default 屬性指定當(dāng)該列值為空時的默認(rèn)值深寥。

更多的數(shù)據(jù)類型請參閱《MySQL數(shù)據(jù)類型》:http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html

提示:1. 使用 show tables; 命令可查看已創(chuàng)建了表的名稱; 2. 使用 describe 表名; 命令可查看已創(chuàng)建的表的詳細(xì)信息攘乒。

操作MySQL數(shù)據(jù)庫

向表中插入數(shù)據(jù)

insert 語句可以用來將一行或多行數(shù)據(jù)插到數(shù)據(jù)庫表中, 使用的一般形式如下:

insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);

其中 [] 內(nèi)的內(nèi)容是可選的, 例如, 要給 samp_db 數(shù)據(jù)庫中的 students 表插入一條記錄, 執(zhí)行語句:

insert into students values(NULL, "王剛", "男", 20, "13811371377");

按回車鍵確認(rèn)后若提示 Query Ok, 1 row affected (0.05 sec) 表示數(shù)據(jù)插入成功。 若插入失敗請檢查是否已選擇需要操作的數(shù)據(jù)庫惋鹅。

有時我們只需要插入部分?jǐn)?shù)據(jù), 或者不按照列的順序進(jìn)行插入, 可以使用這樣的形式進(jìn)行插入:

insert into students (name, sex, age) values("孫麗華", "女", 21);

查詢表中的數(shù)據(jù)

select 語句常用來根據(jù)一定的查詢規(guī)則到數(shù)據(jù)庫中獲取數(shù)據(jù), 其基本的用法為:

select 列名稱 from 表名稱 [查詢條件];

例如要查詢 students 表中所有學(xué)生的名字和年齡, 輸入語句 select name, age from students; 執(zhí)行結(jié)果如下:

mysql> select name, age from students;

+--------+-----+

| name? | age |

+--------+-----+

| 王剛? |? 20 |

| 孫麗華 |? 21 |

| 王永恒 |? 23 |

| 鄭俊杰 |? 19 |

| 陳芳? |? 22 |

| 張偉朋 |? 21 |

+--------+-----+

6 rows in set (0.00 sec)

mysql>

也可以使用通配符 * 查詢表中所有的內(nèi)容, 語句: select * from students;

按特定條件查詢:

where 關(guān)鍵詞用于指定查詢條件, 用法形式為:select 列名稱 from 表名稱 where 條件;

以查詢所有性別為女的信息為例, 輸入查詢語句: select * from students where sex="女";

where 子句不僅僅支持 "where 列名 = 值" 這種名等于值的查詢形式, 對一般的比較運算的運算符都是支持的, 例如 =则酝、>、<闰集、>=沽讹、<、!= 以及一些擴展運算符 is [not] null武鲁、in爽雄、like 等等。 還可以對查詢條件使用 or 和 and 進(jìn)行組合查詢, 以后還會學(xué)到更加高級的條件查詢方式, 這里不再多做介紹沐鼠。

示例:

查詢年齡在21歲以上的所有人信息: select * from students where age > 21;

查詢名字中帶有 "王" 字的所有人信息: select * from students where name like "%王%";

查詢id小于5且年齡大于20的所有人信息: select * from students where id<5 and age>20;

更新表中的數(shù)據(jù)

update 語句可用來修改表中的數(shù)據(jù), 基本的使用形式為:

update 表名稱 set 列名稱=新值 where 更新條件;

使用示例:

將id為5的手機號改為默認(rèn)的"-": update students set tel=default where id=5;

將所有人的年齡增加1: update students set age=age+1;

將手機號為 13288097888 的姓名改為 "張偉鵬", 年齡改為 19: update students set name="張偉鵬", age=19 where tel="13288097888";

刪除表中的數(shù)據(jù)

delete 語句用于刪除表中的數(shù)據(jù), 基本用法為:

delete from 表名稱 where 刪除條件;

使用示例:

刪除id為2的行: delete from students where id=2;

刪除所有年齡小于21歲的數(shù)據(jù): delete from students where age<20;

刪除表中的所有數(shù)據(jù): delete from students;

創(chuàng)建后表的修改

alter table 語句用于創(chuàng)建后對表的修改, 基礎(chǔ)用法如下:

添加列

基本形式:alter table 表名 add 列名 列數(shù)據(jù)類型 [after 插入位置];

示例:

在表的最后追加列 address: alter table students add address char(60);

在名為 age 的列后插入列 birthday: alter table students add birthday date after age;

修改列

基本形式:alter table 表名 change 列名稱 列新名稱 新數(shù)據(jù)類型;

示例:

將表 tel 列改名為 telphone: alter table students change tel telphone char(13) default "-";

將 name 列的數(shù)據(jù)類型改為 char(16): alter table students change name name char(16) not null;

刪除列

基本形式:alter table 表名 drop 列名稱;

示例:

刪除 birthday 列: alter table students drop birthday;

重命名表

基本形式:alter table 表名 rename 新表名;

示例:

重命名 students 表為 workmates: alter table students rename workmates;

刪除整張表

基本形式:drop table 表名;

示例:刪除 workmates 表: drop table workmates;

刪除整個數(shù)據(jù)庫

基本形式:drop database 數(shù)據(jù)庫名;

示例:刪除 samp_db 數(shù)據(jù)庫: drop database samp_db;

附錄

修改 root 用戶密碼

按照本文的安裝方式, root 用戶默認(rèn)是沒有密碼的, 重設(shè) root 密碼的方式也較多, 這里僅介紹一種較常用的方式挚瘟。

使用 mysqladmin 方式:

打開命令提示符界面, 執(zhí)行命令:mysqladmin -u root -p password 新密碼

執(zhí)行后提示輸入舊密碼完成密碼修改, 當(dāng)舊密碼為空時直接按回車鍵確認(rèn)即可。

可視化管理工具 MySQL Workbench

盡管我們可以在命令提示符下通過一行行的輸入或者通過重定向文件來執(zhí)行mysql語句, 但該方式效率較低, 由于沒有執(zhí)行前的語法自動檢查, 輸入失誤造成的一些錯誤的可能性會大大增加, 這時不妨試試一些可視化的MySQL數(shù)據(jù)庫管理工具, MySQL Workbench 就是 MySQL 官方 為 MySQL 提供的一款可視化管理工具, 你可以在里面通過可視化的方式直接管理數(shù)據(jù)庫中的內(nèi)容, 并且 MySQL Workbench 的 SQL 腳本編輯器支持語法高亮以及輸入時的語法檢查, 當(dāng)然, 它的功能強大, 絕不僅限于這兩點迟杂。

MySQL Workbench官方介紹:http://www.mysql.com/products/workbench/

MySQL Workbench 下載頁:http://dev.mysql.com/downloads/tools/workbench/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刽沾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子排拷,更是在濱河造成了極大的恐慌侧漓,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件监氢,死亡現(xiàn)場離奇詭異布蔗,居然都是意外死亡,警方通過查閱死者的電腦和手機浪腐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門纵揍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人议街,你說我怎么就攤上這事泽谨。” “怎么了特漩?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵吧雹,是天一觀的道長。 經(jīng)常有香客問我涂身,道長雄卷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任蛤售,我火速辦了婚禮丁鹉,結(jié)果婚禮上妒潭,老公的妹妹穿的比我還像新娘。我一直安慰自己揣钦,他們只是感情好雳灾,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冯凹,像睡著了一般佑女。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谈竿,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天团驱,我揣著相機與錄音,去河邊找鬼空凸。 笑死嚎花,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的呀洲。 我是一名探鬼主播紊选,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼道逗!你這毒婦竟也來了兵罢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤滓窍,失蹤者是張志新(化名)和其女友劉穎卖词,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吏夯,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡此蜈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了噪生。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片裆赵。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖跺嗽,靈堂內(nèi)的尸體忽然破棺而出战授,到底是詐尸還是另有隱情,我是刑警寧澤桨嫁,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布植兰,位于F島的核電站,受9級特大地震影響瞧甩,放射性物質(zhì)發(fā)生泄漏钉跷。R本人自食惡果不足惜弥鹦,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一肚逸、第九天 我趴在偏房一處隱蔽的房頂上張望爷辙。 院中可真熱鬧,春花似錦朦促、人聲如沸膝晾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽血当。三九已至,卻和暖如春禀忆,著一層夾襖步出監(jiān)牢的瞬間臊旭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工箩退, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留离熏,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓戴涝,卻偏偏與公主長得像滋戳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子啥刻,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

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

  • 轉(zhuǎn)載地址http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068...
    BossHuang閱讀 221評論 0 1
  • 更新 修改數(shù)據(jù)庫密碼 1.蘋果->系統(tǒng)偏好設(shè)置->最下邊點mysql 在彈出頁面中 關(guān)閉mysql服務(wù)(點擊sto...
    190CM閱讀 457評論 0 5
  • MySQL的相關(guān)概念介紹 MySQL 為關(guān)系型數(shù)據(jù)庫(Relational Database Management...
    Wantdoyousee閱讀 375評論 1 1
  • 本文內(nèi)容主要來自于21分鐘 MySQL 入門教程奸鸯,本人只做了一些補充,謝謝作者分享 本文包括: MySQL的相關(guān)概...
    ZOnePerson閱讀 228評論 0 3
  • 雖然我寫作還只是起步可帽,但是我覺得這段時間的練習(xí)娄涩,有兩條比較實用的經(jīng)驗。1剛開始可能下筆很困難映跟,就告訴自己先隨便寫寫...
    佐江閱讀 730評論 0 0