MySQL 系列第一天這篇文章是黑馬程序員 MySQL 教程的筆記,好好學習哦。
和 MySQL 數據庫的交互
客戶端單向連接認證:連接服務器,認證身份。
MySQL 數據庫屬於 C/S 架構,所以開啟服務器程序后,需要通過客戶端連接它。MySQL 會自帶一個客戶端程序,可以直接輸入賬號和密碼即可連接。
如果你是在 Windows 系統上使用 MySQL ,那么可以通過 cmd 命令打開命令行窗口,輸入以下指令,同樣可以連接上 MySQL 服務器程序。首先要配置 Path 環境變量,這樣就可以不用輸入 mysql.exe 的完整路徑,操作系統也能找到這個可執行文件。mysql -hlocalhost -p3306 -uroot -p //此時回車,緊接着輸入密碼再回車,就可以連接上 MySQL 服務器了。
//其中 -h 表示 MySQL 服務器程序所在主機的地址, -p 表示應用程序所使用的端口號, -u 表示用戶名, -p 表示密碼
客戶端發送 SQL 指令 show databases; //查詢所有數據庫
服務器端接受指令,處理指令並返回結果
客戶端接受結果,並顯示結果。
客戶端斷開連接,釋放資源,SQL 指令為 exit
全程截圖如下:
SQL 基本操作
在學習sql 指令使可以按照操作對象分為三類:數據庫操作指令,數據表操作指令,數據操作指令。
庫操作指令
新增數據庫:
create database 數據庫名字 [庫選項]create database newdatabase cahrset utf8;
執行新增操作后,MySQL 服務器程序會在它的 data 文件夾中創建一個以數據庫名字命名的文件夾,文件夾內還有一個 db.opt 文件,里面保存的是庫選項,內容如下:default-character-set=utf8 //默認字符集是 utf8
default-collation=utf8_general_ci //默認校對集是 utf8_general_ci
//字符集很好理解,這里的校對集是什么呢?通常從數據庫中查詢數據時候,需要進行數據的比對,比如按照價格升序取出,這個校對集就是一種規定如何進行比對的規范
查詢數據庫:show databases; //查詢 DBMS 中所有的數據庫
show databases like 'my%' //這是模糊查詢的方式,如果有轉義字符,不要忘了轉義
show create database newdatabase; //查詢創建某個數據庫的 sql 語句
//此處查詢后發現和自己寫的 sql 語句不一樣,只是因為 MySQL 在執行指令前,會先優化 sql 語句,再執行。
更新數據庫:
數據庫的修改僅限於修改庫選項:alter database 數據庫名 charset 字符集 collate 校對集alter database newdatabase charset gbk
//此指令執行后,db.opt 文件的字符集選項同時會立即更改,因為校對集依賴於字符集,所以它也會隨之改變
刪除數據庫:drop database newdatabase;
// 刪除指令執行后,它在磁盤上的文件也會刪除
表操作指令
新增數據表:
create table [if not exists] 表名 (字段名字 數據類型 ,字段名字 數據類型 )[表選項] ;create table student(
name varchar(11),
gender varchar(11),
number varchar(11),
age int
)
//數據庫執行此操作后,默認會生成一個對應的表文件
查看數據表:show tables; //查看次數據庫所有表
show tables like 's%'; //模糊查詢
show create student; //查看表創建語句
show columns from student //查看表結構,也就是查看表的字段名
修改數據表:
表本身可以修改,修改表名和表選項rename table student to ne_student; //修改表名
alter table ne_student chaeset gbk; //修改表選項
項目寫着就發現數據庫設計的不夠合理,需要更改,掌握修改字段真的很重要。
alter table ne_student add id int first;//添加 id 字段到表的第一個位置、
alter table ne_student add phone varchar(11) after age; //添加 phone 字段到 age 后面
alter table ne_student modify gender varchar(10); //修改 gender 字段的數據長度
alter table ne_student change gender sex varchar(10); //重命名 gender 為 sex
alter table ne_student drop sex; //刪除 sex 字段
刪除數據表drop table student; //刪除 student 單張表
drop table ne_student,ne_teacher; //刪除多張表
數據操作指令
插入數據:insert into ne_student(id,name) values(1,'kk'); //這種插入操作只要字段名和值對應就可以了,並不需要全部字段都寫上。
insert into ne_student values(2,'kkk','male','123'); //這種插入操作,就必須要按照表中字段的順序,每一個字段都插入相對應的值。
查看數據:select * from ne_student; //查看所有數據
select * from ne_student where name like 'k%'; //限制查詢條件
//關於查詢的操作非常多,這里只是簡單展示下
更新數據:
update 表名 set 字段 = 值 [where條件];update ne_student set id = 3 where name = 'kkk'; //將 kkk 的 id 改為 3
刪除數據:delete form ne_student where name='kkk';//刪除名字為 kkk 的這條記錄
//這里之所以能夠查詢,是因為校對集在起作用
講到這里,對於數據庫、表、,表中字段以及數據的增刪改查都已經展示完了。主要還是起到一個建立框架的作用,明確數據庫中有哪些對象,針對這些對象來進行相應操作。
庫選項的相關介紹
學習編程時,通常會遇到中文亂碼問題。其實總結下來,就是因為編碼和解碼采用不同的字符集,產生了亂碼。MySQL 數據庫自然不能免俗啊。
通過show charsets; 可以查看 MySQL 支持的所有字符集,它默認采用的是 utf-8 編碼,只要同一字符集就不會出現亂碼問題。
通過show collation; 可以查看 MySQL 支持的所有校對集,有 129 種,不要驚訝,這是因為校對集是依賴於字符集的,每種字符集都有幾種校對集。
校對集有三種格式:
_bin: binary 二進制比較, 取出二進制位,一位一位的比較, 區分大小寫。例如,數據庫會認為 aaa 不等於 Aaa;
_cs: case sensitive 大小寫敏感, 區分大小寫。例如,數據庫會認為 aaa 不等於 Aaa;
_ci: case insensitice 大小寫不敏感,不區分大小寫。例如,數據庫會認為 aaa 等於 Aaa;
所以,我們要根據實際情況,選擇對應的校對集。