?MySQL的相關(guān)概念介紹
MySQL 為關(guān)系型數(shù)據(jù)庫( ),這種所謂的"關(guān)系型"可以理解為"表格"的概念, 一個關(guān)系型數(shù)據(jù)庫由一個或數(shù)個表格組成, 如圖所示的一個表格:
? 表頭():每一列的名稱;
?列(row):具有相同數(shù)據(jù)類型的數(shù)據(jù)的集合;
?行(col):每一行用來描述某個人/物的具體信息;
?值(value):行的具體信息, 每個值必須與該列的數(shù)據(jù)類型相同;
?鍵(key):表中用來識別某個特定的人\物的方法, 鍵的值在當前列中具有唯一性。
?下MySQL的配置
? 配置步驟:
1. 將下載的 mysql--5.1.69-win32.zip 解壓至需要安裝的位置, 如: C:\ Files;
2. 在安裝文件夾下找到 my-small.ini 配置文件, 將其重命名為 my.ini , 打開進行編輯, 在 [] 與 [] 下均添加一行:--set = gbk
3. 打開 環(huán)境變量設(shè)置, 新建變量名 , 變量值為 MySQL 安裝目錄路徑, 這里為 C:\ Files\mysql-5.1.69-win32
4. 在 環(huán)境變量 的 Path 變量中添加;%%\bin;
5. 安裝 MySQL 服務(wù), 打開命令提示符, 執(zhí)行命令: -- MySQL ---file="my.ini"提示" ."表示成功;
對于想學習C/C++的小伙伴而言,學習的氛圍和志同道合的伙伴很重要刪除mysql表中的數(shù)據(jù),筆者強烈推薦我主頁的C語言/C++編程愛好者的聚集地~
?MySQL服務(wù)的啟動、停止與卸載
在 命令提示符下運行:
啟動:net start MySQL
停止:net stop MySQL
卸載:sc MySQL
?MySQL腳本的基本組成
與常規(guī)的腳本語言類似,MySQL也具有一套對字符、單詞以及特殊符號的使用規(guī)定, MySQL通過執(zhí)行 SQL 腳本來完成對數(shù)據(jù)庫的操作刪除mysql表中的數(shù)據(jù),該腳本由一條或多條MySQL語句(SQL語句 + 擴展語句)組成,保存時腳本文件后綴名一般為 .sql。在控制臺下,MySQL 客戶端也可以對語句進行單句的執(zhí)行而不用保存為.sql文件。
?標識符
標識符用來命名一些對象,如數(shù)據(jù)庫、表、列、變量等, 以便在腳本中的其他地方引用。MySQL標識符命名規(guī)則稍微有點繁瑣,這里我們使用萬能命名規(guī)則: 標識符由字母、數(shù)字或下劃線(_)組成,且第一個字符必須是字母或下劃線。
對于標識符是否區(qū)分大小寫取決于當前的操作系統(tǒng),下是不敏感的,但對于大多數(shù) linux\unix 系統(tǒng)來說,這些標識符大小寫是敏感的。
?關(guān)鍵字:
MySQL的關(guān)鍵字眾多,這里不一一列出,在學習中學習。這些關(guān)鍵字有自己特定的含義,盡量避免作為標識符。
?語句:
MySQL語句是組成MySQL腳本的基本單位,每條語句能完成特定的操作,他是由 SQL 標準語句 + MySQL 擴展語句組成。
?函數(shù):
MySQL函數(shù)用來實現(xiàn)數(shù)據(jù)庫操作的一些高級功能,這些函數(shù)大致分為以下幾類: 字符串函數(shù)、數(shù)學函數(shù)、日期時間函數(shù)、搜索函數(shù)、加密函數(shù)、信息函數(shù)。
?MySQL中的數(shù)據(jù)類型
MySQL有三大類數(shù)據(jù)類型,分別為數(shù)字、日期\時間、字符串,這三大類中又更細致的劃分了許多子類型:
? 數(shù)字類型
?整數(shù):、、、int、
?浮點數(shù):float、、real、
?日期和時間
date、time、、、year
?字符串類型
?字符串:char、
?文本:、text、、
?二進制(可用來存儲圖片、音樂等):、blob、、
?使用MySQL數(shù)據(jù)庫
?登錄到MySQL
當 MySQL 服務(wù)已經(jīng)運行時, 我們可以通過MySQL自帶的客戶端工具登錄到MySQL數(shù)據(jù)庫中, 首先打開命令提示符, 輸入以下格式的命名:
mysql -h,主機名 -u,用戶名 -p;
-h :該命令用于指定客戶端所要登錄的MySQL主機名, 登錄當前機器該參數(shù)可以省略;
-u :所要登錄的用戶名;
-p :告訴服務(wù)器將會使用一個密碼來登錄, 如果所要登錄的用戶名密碼為空, 可以忽略此選項。
以登錄剛剛安裝在本機的MySQL數(shù)據(jù)庫為例, 在命令行下輸入 mysql -u root -p 按回車確認, 如果安裝正確且MySQL正在運行, 會得到以下響應(yīng):
Enter :
若密碼存在, 輸入密碼登錄, 不存在則直接按回車登錄, 按照本文中的安裝方法, 默認 root 賬號是無密碼的。登錄成功后你將會看到 to the MySQL ... 的提示語。
然后命令提示符會一直以 mysql> 加一個閃爍的光標等待命令的輸入, 輸入 exit 或 quit 退出登錄。
?創(chuàng)建一個數(shù)據(jù)庫
使用 語句可完成對數(shù)據(jù)庫的創(chuàng)建, 創(chuàng)建命令的格式如下:
數(shù)據(jù)庫名 [其他選項];
例如我們需要創(chuàng)建一個名為 的數(shù)據(jù)庫, 在命令行下執(zhí)行以下命令:
set gbk;
為了便于在命令提示符下顯示中文, 在創(chuàng)建時通過 set gbk 將數(shù)據(jù)庫字符編碼指定為 gbk。創(chuàng)建成功時會得到 Query OK, 1 row (0.02 sec) 的響應(yīng)。
注意:MySQL語句以分號(;)作為語句的結(jié)束, 若在語句結(jié)尾不添加分號時, 命令提示符會以 -> 提示你繼續(xù)輸入(有個別特例, 但加分號是一定不會錯的);
提示:可以使用 show ; 命令查看已經(jīng)創(chuàng)建了哪些數(shù)據(jù)庫。
?選擇所要操作的數(shù)據(jù)庫
要對一個數(shù)據(jù)庫進行操作, 必須先選擇該數(shù)據(jù)庫, 否則會提示錯誤:
ERROR 1046(3D000): No
兩種方式對數(shù)據(jù)庫進行使用的選擇:
一:在登錄數(shù)據(jù)庫時指定, 命令:mysql -D 所選擇的數(shù)據(jù)庫名 -h 主機名 -u 用戶名 -p
例如登錄時選擇剛剛創(chuàng)建的數(shù)據(jù)庫: mysql -D -u root -p
二:在登錄后使用 use 語句指定, 命令:use 數(shù)據(jù)庫名;
use 語句可以不加分號, 執(zhí)行 use 來選擇剛剛創(chuàng)建的數(shù)據(jù)庫, 選擇成功后會提示:
?創(chuàng)建數(shù)據(jù)庫表
使用 table 語句可完成對表的創(chuàng)建, table 的常見形式:
table 表名稱(列聲明);
以創(chuàng)建 表為例, 表中將存放 學號(id)、姓名(name)、性別(sex)、年齡(age)、聯(lián)系電話(tel) 這些內(nèi)容:
對于一些較長的語句在命令提示符下可能容易輸錯,因此我們可以通過任何文本編輯器將語句輸入好后保存為 .sql 的文件中,通過命令提示符下的文件重定向執(zhí)行執(zhí)行該腳本。
打開命令提示符,輸入:mysql -D -u root -p < .sql
(提示: 1.如果連接遠程主機請加上 -h 指令; 2. .sql 文件若不在當前工作目錄下需指定文件的完整路徑。)
?語句解說:
table () 為創(chuàng)建數(shù)據(jù)庫表的命令, 列的名稱以及該列的數(shù)據(jù)類型將在括號內(nèi)完成;
括號內(nèi)聲明了5列內(nèi)容, id、name、sex、age、tel為每列的名稱, 后面跟的是數(shù)據(jù)類型描述, 列與列的描述之間用逗號(,)隔開;
以 "id int not null key" 行進行介紹:
?"id" 為列的名稱;
?"int" 指定該列的類型為 int(取值范圍為 -到), 在后面我們又用 "" 加以修飾, 表示該類型為無符號型, 此時該列的取值范圍為 0到;
?"not null" 說明該列的值不能為空, 必須要填, 如果不指定該屬性, 默認可為空;
?"" 需在整數(shù)列中使用, 其作用是在插入數(shù)據(jù)時若該列為 NULL, MySQL將自動產(chǎn)生一個比現(xiàn)存值更大的唯一標識符值。在每張表中僅能有一個這樣的值且所在列必須為索引列。
?" key" 表示該列是表的主鍵, 本列的值必須唯一, MySQL將自動索引該列。
下面的 char(8) 表示存儲的字符長度為8, 的取值范圍為 -127到128, 屬性指定當該列值為空時的默認值。
提示:1. 使用 show ; 命令可查看已創(chuàng)建了表的名稱; 2. 使用 表名; 命令可查看已創(chuàng)建的表的詳細信息。
?操作MySQL數(shù)據(jù)庫
? 向表中插入數(shù)據(jù)
語句可以用來將一行或多行數(shù)據(jù)插到數(shù)據(jù)庫表中, 使用的一般形式如下:
[into] 表名 [(列名1, 列名2, 列名3, ...)] (值1, 值2, 值3, ...);
其中 [] 內(nèi)的內(nèi)容是可選的, 例如, 要給 數(shù)據(jù)庫中的 表插入一條記錄, 執(zhí)行語句:
into (NULL, "王剛", "男", 20, "");
按回車鍵確認后若提示 Query Ok, 1 row (0.05 sec) 表示數(shù)據(jù)插入成功。 若插入失敗請檢查是否已選擇需要操作的數(shù)據(jù)庫。
有時我們只需要插入部分數(shù)據(jù), 或者不按照列的順序進行插入, 可以使用這樣的形式進行插入:
into (name, sex, age) ("孫麗華", "女", 21);
?查詢表中的數(shù)據(jù)
語句常用來根據(jù)一定的查詢規(guī)則到數(shù)據(jù)庫中獲取數(shù)據(jù), 其基本的用法為:
列名稱 from 表名稱 [查詢條件];
例如要查詢 表中所有學生的名字和年齡, 輸入語句 name, age from ; 執(zhí)行結(jié)果如下:
也可以使用通配符 * 查詢表中所有的內(nèi)容, 語句: * from ;
?按特定條件查詢:
where 關(guān)鍵詞用于指定查詢條件, 用法形式為: 列名稱 from 表名稱 where 條件;
以查詢所有性別為女的信息為例, 輸入查詢語句: * from where sex="女";
where 子句不僅僅支持 "where 列名 = 值" 這種名等于值的查詢形式,對一般的比較運算的運算符都是支持的,例如 =、>、=、 21;
查詢名字中帶有 "王" 字的所有人信息: * from where name like "%王%";
查詢id小于5且年齡大于20的所有人信息: * from where id20;
?更新表中的數(shù)據(jù)
語句可用來修改表中的數(shù)據(jù), 基本的使用形式為:
表名稱 set 列名稱=新值 where 更新條件;
使用示例:
將id為5的手機號改為默認的"-": set tel= where id=5;
將所有人的年齡增加1: set age=age+1;
將手機號為 的姓名改為 "張偉鵬", 年齡改為 19: set, age=19 where tel="";
?刪除表中的數(shù)據(jù)
語句用于刪除表中的數(shù)據(jù), 基本用法為:
from 表名稱 where 刪除條件;
使用示例:
刪除id為2的行: from where id=2;
刪除所有年齡小于21歲的數(shù)據(jù): from where age
刪除表中的所有數(shù)據(jù): from ;
?創(chuàng)建后表的修改
alter table 語句用于創(chuàng)建后對表的修改, 基礎(chǔ)用法如下:
?添加列
基本形式:alter table 表名 add 列名 列數(shù)據(jù)類型 [after 插入位置];
示例:
在表的最后追加列 : alter table add char(60);
在名為 age 的列后插入列 : alter table add date after age;
?修改列
基本形式:alter table 表名 列名稱 列新名稱 新數(shù)據(jù)類型;
示例:
將表 tel 列改名為 : alter table tel char(13) "-";
將 name 列的數(shù)據(jù)類型改為 char(16): alter table name name char(16) not null;
?刪除列
基本形式:alter table 表名 drop 列名稱;
示例:
刪除 列: alter table drop ;
?重命名表
基本形式:alter table 表名 新表名;
示例:
重命名 表為 : alter table ;
?刪除整張表
基本形式:drop table 表名;
示例:
刪除 表: drop table ;
?刪除整個數(shù)據(jù)庫
基本形式:drop 數(shù)據(jù)庫名;
示例:
刪除 數(shù)據(jù)庫: drop ;
————————————————————————————
“我是一名從事了10年開發(fā)在退休邊緣垂死掙扎的高齡程序員,最近我花了一些時間整理了一個完整的學習C語言、C++的路線,項目源碼和工具>>>C/C++編程技術(shù)學習視頻,還有項目源碼和素材筆記哦~對于想學習C/C++的小伙伴而言,學習的氛圍和志同道合的伙伴很重要,筆者強烈推薦主頁的編程愛好者的聚集地~
歡迎初學和進階中的小伙伴。希望你也能憑自己的努力,成為下一個優(yōu)秀的程序員。工作需要、感興趣、為了入行、轉(zhuǎn)行需要學習C/C++的伙伴可以一起學習!”
關(guān)注我,帶你遨游代碼世界!