數(shù)據(jù)庫學(xué)習(xí)入門數(shù)據(jù)庫基礎(chǔ)_第1頁
數(shù)據(jù)庫學(xué)習(xí)入門數(shù)據(jù)庫基礎(chǔ)_第2頁
數(shù)據(jù)庫學(xué)習(xí)入門數(shù)據(jù)庫基礎(chǔ)_第3頁
數(shù)據(jù)庫學(xué)習(xí)入門數(shù)據(jù)庫基礎(chǔ)_第4頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、數(shù)據(jù)庫學(xué)習(xí)入門數(shù)據(jù)庫基礎(chǔ)數(shù)據(jù)庫學(xué)習(xí)入門數(shù)據(jù)庫基礎(chǔ)數(shù)據(jù)庫學(xué)習(xí)入門數(shù)據(jù)庫基礎(chǔ)V:1.0精細整理,僅供參考 數(shù)據(jù)庫學(xué)習(xí)入門數(shù)據(jù)庫基礎(chǔ)日期:20 xx年X月數(shù)據(jù)庫基礎(chǔ)入門 - 數(shù)據(jù)庫的作用: - 數(shù)據(jù)是數(shù)據(jù)庫中存儲的基本對象 包括:文字、圖形、圖像、聲音 有組織的、可共享的數(shù)據(jù)集合 - 常用的DBMS - MYSQL(oracle、Sun) oracle(oracle) SQL-Server(Microsoft) DB2(IBM) - .如何學(xué)習(xí)數(shù)據(jù)庫管理系統(tǒng) - .程序員 1、標(biāo)準(zhǔn)語言:SQL(結(jié)構(gòu)化查詢語言) SQL是用于訪問 數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言,他是由ANSI/ISO SQL標(biāo)準(zhǔn)定義的 S

2、QL 的分類 DML:數(shù)據(jù)操作語言(用于檢索或者修改數(shù)據(jù)) DDL:數(shù)據(jù)定義語言(用于定義數(shù)據(jù)的結(jié)構(gòu),比如創(chuàng)建、修改或者刪除數(shù)據(jù)庫的對象) DCL:數(shù)據(jù)控制語言(用于定義數(shù)據(jù)庫用戶的權(quán)限) DML: select:用于檢索數(shù)據(jù) insert:用于增加數(shù)據(jù)到數(shù)據(jù)庫 update:用于從數(shù)據(jù)庫中修改現(xiàn)存的數(shù)據(jù) delete:用于從數(shù)據(jù)庫中刪除數(shù)據(jù) DDL: create table BA(Database Administrator) 1、標(biāo)準(zhǔn)語言:SQL(結(jié)構(gòu)化查詢語言) 2、不同數(shù)據(jù)庫的獨特管理方式 3、數(shù)據(jù)庫的調(diào)優(yōu) 4、精通數(shù)據(jù)庫的備份、回復(fù)機制 - MYSQL的安裝與配置 - 安裝:選擇普

3、通安裝類型 .配置 1、選擇配置類型:Detailed Configuration 2、選擇服務(wù)器類型:Developer Machine 3、選擇數(shù)據(jù)庫的是使用情況: -多功能數(shù)據(jù)庫(Multifunctional Database) -只是事務(wù)處理數(shù)據(jù)庫(Transactional Database Only) -只是非事務(wù)處理數(shù)據(jù)庫(Non-Transactional Database Only) 4、InnoDB表空間文件存儲的盤符,默認在c: 5、數(shù)據(jù)庫并發(fā)連接數(shù)配置:Decision support 6、MYSQL服務(wù)器端口:默認:3306 7、Enable Strict Mode

4、:是否允許嚴格樣式檢查:取消 8、選擇字符編碼:手工選擇:gb2312,windows下中文支持 9、服務(wù)器默認安裝到windows系統(tǒng)服務(wù)中,默認服務(wù)自啟動,選擇自動配置環(huán)境變量 10、填寫數(shù)據(jù)庫管理系統(tǒng)的管理員密碼 -在mySQL中數(shù)據(jù)庫管理員的用戶名為:root 11、是否允許使用root用戶遠程登錄數(shù)據(jù)庫 12、測試配置是否正確c:c:mysqlbinmysqlshow - MYSQL 的登錄 - .開始-運行-cmd .輸入:mysql -uroot -p,然后輸入密碼 .或者:mysql -uroot -p密碼 .退出quit或者q -不必全在一個行內(nèi)給出一個命令,較長命令可以輸入

5、到多個行中。mysql通過尋找終止分號而不是輸入行的結(jié)束來決定語句在哪兒結(jié)束 -等待多行命令的下一行 等待下一行,等待以單引號開始的字符串結(jié)束 如果你決定不想執(zhí)行正在輸入過程中的一個命令,輸入c取消它 能夠以大小寫輸入關(guān)鍵詞,結(jié)果是等價的 - 基本的SQL語句 - 創(chuàng)建數(shù)據(jù)庫-create database school; 查看有哪些數(shù)據(jù)庫-show databases; 刪除數(shù)據(jù)庫-drop database school; - 向數(shù)據(jù)庫中存儲數(shù)據(jù) - 1、首先進入數(shù)據(jù)庫 use dbname; use類似quit,不需要一個分號,寫也無礙 use必須在一個單行上給出 2、查看數(shù)據(jù)庫中的表

6、show tables; 3、在數(shù)據(jù)庫中創(chuàng)建表 create table student (name varchar(20),age int,sex char(2); 4、向表中插入數(shù)據(jù)-insert into dbname values(張三,18,男); 5、查看表中所有的數(shù)據(jù)-select * from student; 只查看姓名和年齡-select name,age from student; - 常用的數(shù)據(jù)類型 - char(M)固定長度字符 用來表示固定長度字符串,字符串的長度是1-255 VARCHAR(M)可變長度字符 具有靈活性的字符數(shù)據(jù)類型,范圍:1-255 處理char

7、類型的數(shù)據(jù)比varchar類型的數(shù)據(jù)要快,有時會快50%(char類型存儲的數(shù)據(jù)的長度是聲明變量時的固定長度,而不管數(shù)據(jù)的實際長度,varchar存儲的是按數(shù)據(jù)的實際長度,從而減小了數(shù)據(jù)文件的大小) int 整數(shù) 有符合的范圍:-48到47,無符號范圍:0到95 - 其他常用的數(shù)據(jù)類型 - DATE-日期類型,顯示YYYY-MM-DD DATETIME-日期和時間的組合,顯示YYYY-MM-DD HH:MM:SS TEXT/BLOB 文本和大對象 TEXT可以保存字符串的長度在255-65535字節(jié)內(nèi)。BLOB是一個能保存二進制數(shù)據(jù)的大對象,區(qū)別是TEXT不區(qū)分大小寫,而BLOB區(qū)分大小寫。

8、SQL語句的導(dǎo)入 1、編寫SQL腳本(.sql) 2、導(dǎo)入mysql-uusername -p 查看表的結(jié)構(gòu)-desc tablename 修改表中的數(shù)據(jù)-update tablename set colname=value where條件 刪除數(shù)據(jù)-delete from teacher where age= 刪除表中所有數(shù)據(jù)-delete from teacher; 刪除表-drop table tablename 根據(jù)條件進行過濾查找-select *from tablename where 條件 查找出版社為“清華出版社”的所有書籍-select *from books where p

9、ub=清華出版社; 查找出庫存大于50的所有書籍-select *from books where store50; 查找出“西游記”的庫存量-select title,store from books where title=西游記; SQL運算符 大于 =大于等于 =小于等于 !=,不等于 查看數(shù)據(jù)庫的信息-s - mysql常用函數(shù) - 1、查看數(shù)據(jù)庫版本-select versin(); 計算機的時間是存在BIOS() 2、查看當(dāng)前數(shù)據(jù)庫的日期-select current_date(); 3、查看當(dāng)前數(shù)據(jù)庫時間-select now(); 4、查看當(dāng)前連接數(shù)據(jù)庫的用戶-select

10、user();localhost:代表是本機 create table user(id int,name varchar(20),bir date,dea datetime); insert into user values(1,zhangsan,now(),now(); or和and查詢 or(滿足一個條件) and(都需要滿足) 查找學(xué)生EQ為80分或90分的學(xué)生 select * from stu where EQ=80 or EQ=90; 查找學(xué)生EQ為90分并且性別為女的學(xué)生 select * from stu where EQ=90 and sex=女; in(x,x)返回條件中的

11、記錄與or作用相似 select * from tablename where 條件 in(,); between and返回兩者之間的記錄 查詢年齡在20-30之間的所有學(xué)生 select * from stu where age between 20 and 30; like與通配符(%)一起使用,模糊查詢 查找出姓張的學(xué)生 select * from stu where name like 張%; 查詢出使用163郵箱的所有學(xué)生 select * from stu where email like ; 查詢出郵箱里面含有a的所有學(xué)生 select * from stu where ema

12、il like %a%; order by 實現(xiàn)排序(從小到大)-asc 將學(xué)生的年齡從高到低排列 select * from stu order by age desc;(降序) 將學(xué)生的年齡從低到高排列 select * from stu order by age asc;(升序) 數(shù)據(jù)默認為升序(從低到高) select * from stu order by age ; as為查詢的列起別名 1、查詢所有學(xué)生只列出姓名,年齡,性別 select name as 姓名,age as 年齡,sex as 性別 from stu; group by對于查詢出的數(shù)據(jù)結(jié)果進行分類(分組) 2、將

13、學(xué)生按性別進行分類 select * from stu group by sex; 將學(xué)生按年齡進行分類 select * from stu group by age; 3、having 子查詢:對于where查詢出的結(jié)果再次進行查詢 查找出年齡大于20歲學(xué)生,并且在其中找出姓名等于xxx的學(xué)生 select * from stu where age 20 having name=xxx或 select * from stu where age20 and name=xxx 4、distinct 過濾查詢的重復(fù)型記錄,只顯示唯一的記錄 將學(xué)生性別過濾 select distinct(sex)

14、from stu; count 查看表中有幾條數(shù)據(jù) select count(*) from stu; select count(distinct(sex) from stu; limit 限制查詢結(jié)果的輸出數(shù)量 同時也可以實現(xiàn)數(shù)據(jù)的分頁 查詢EQ前三名的學(xué)生 select * from stu order by EQ desc limit 3; 實現(xiàn)查詢記錄的分頁 select * from stu limit 0,3; select * from stu limit 3,3; 約束-定義了表級的強制規(guī)則、數(shù)據(jù)的完整性 非空約束(not null) create table test(id

15、int not null); insert into test values(); innodb 會報錯 ,myISAM 會整形默認以0填充 唯一約束(UNIQUE) 不允許列中的數(shù)據(jù)重復(fù) create table test(id int,unique(id); insert into test values(1); 默認約束(default) create table test(id int not null default111111); insert into test values(); 主鍵約束(primary key)是一個字段或一組字段(組合鍵),用于唯一標(biāo)識表中的記錄,它可以

16、確保每個記錄是唯一的。 create table test(id int,primary key(id); insert into test valuse(1); id主鍵自增,減 create table test (id int,name varchar(20),primary key(id)); insert into test values(1,張安); auto_increment的特點-自增值 當(dāng)刪除某一值時,他不會自動填充,而是繼續(xù)自增1 create table test(id int not null auto_increment,name varchar(20),prima

17、ry key(id); insert into test(name)values(xxx); 創(chuàng)建一個有合理約束的表 create table people(id int not null auto_increment,name varchar(20) not null,age int not null,sex char(2) not null,pcode varchar(50),tel varchar(50),email varchar(50),primary key(id); insert into people(name,age,sex,email) values(張三,28,男,);

18、查詢出所有學(xué)生的檔案信息 select * from student,school where =;或 select * from student as a,school as b where =; 查詢所有學(xué)生檔案信息 只需顯示:學(xué)生姓名,年齡。畢業(yè)學(xué)校,學(xué)校地址 select , s from student, school where =;或 select , from student as a, school as b where =; 外鍵約束( foreign key) 如何創(chuàng)建外鍵 foreign key:定義子中的列為外鍵 references:標(biāo)記外鍵所要參考的父表和列 on

19、 delete cascade:允許在刪除父表的列的同時,刪除子表的列 rm,存放數(shù)據(jù)表的結(jié)構(gòu)定義 .isd,數(shù)據(jù)文件,存放數(shù)據(jù)表中的各個數(shù)據(jù)行的內(nèi)容 .ism,索引文件,存放數(shù)據(jù)表的所有索引信息。 MYISAM是數(shù)據(jù)表是ISAM數(shù)據(jù)表的繼承者,也是三個文件,分別是: .frm,結(jié)構(gòu)定義文件; .MYD,數(shù)據(jù)文件; .MYI,索引文件。 BDB數(shù)據(jù)表用兩個文件 來表示,分別是; .frm,結(jié)構(gòu)定義文件 .DB,數(shù)據(jù)表數(shù)據(jù)和索引文件 INNODB:由于采用表空間的概念來管理數(shù)據(jù)表,所以他只有一個與數(shù)據(jù)表對應(yīng).frm文件,同一目錄下的其他文件表示為空間,存儲數(shù)據(jù)表的數(shù)據(jù)和索引 HEAP數(shù)據(jù)表是一個

20、存在與內(nèi)存中的表,所以他的數(shù)據(jù)和索引都存在于內(nèi)存中,文件系統(tǒng)中只有一個.frm文件,及定義結(jié)構(gòu),當(dāng)mysql關(guān)閉后數(shù)據(jù)都將消失。 定義表的的類型 create table test(id int)engine=heap; 事務(wù)表幣非事務(wù)表有幾大優(yōu)勢: 更安全。即使mysql崩潰或遇到硬件問題 ,要么自動恢復(fù),要么從備份加事務(wù)日志恢復(fù),你可以取回數(shù)據(jù) 你可以合并許多語句,并用commit語句同時接受她們?nèi)浚ㄈ绻鸻utocommit被禁止掉) 你可以執(zhí)行rollback來忽略你的改變(如果autocommit被禁止掉) 如果更新失敗,你的所有改變都變回原來。(用非事務(wù)安全表,所有發(fā)生的改變都是永

21、久的) 事務(wù)安全存儲引擎可以給那些當(dāng)前用 讀得到許多更新的表提供 更好的部署。 非事務(wù)表自身有幾大優(yōu)點: 非事務(wù)表自身有幾大優(yōu)點,因為沒有事務(wù)開支,所有優(yōu)點都能出現(xiàn): 更快 需要更更少的磁盤空間 執(zhí)行更新需要更少的內(nèi)存 你可以在同一個語句中合并事務(wù)安全和非事務(wù)安全表來獲得兩者最好的情況。盡管如此,在autocommit被禁止掉的事務(wù)里,變換到非事務(wù)安全表依舊即使提交并且不會被回滾 如何在innodb中實現(xiàn)事務(wù): ,那么數(shù)據(jù)回滾 ,進行數(shù)據(jù)提交 mysql begin; Query OK, 0 rows affected sec) mysql insert into test11 values(

22、1,zhangs); Query OK, 1 row affected sec) mysql select * from test11; +-+-+ | id | name | +-+-+ | 1 | zhangs | +-+-+ 1 row in set sec) mysql end; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near e

23、nd at line 1 mysql rollback; Query OK, 0 rows affected sec) mysql select * from test11; Empty set sec) mysql commit; Query OK, 0 rows affected sec) mysql select * from test11; Empty set sec) 修改表類型 sql語句:alter table tablename engine=innodb; 注意:不可以將mysql系統(tǒng)表比如user或host轉(zhuǎn)換成innodb類型。系統(tǒng)表必須為myisam類型 對myisam

24、進行事務(wù)處理-鎖 lock table tablename(read,write) lock table 可以對表進行加鎖控制,以保證用戶并發(fā)訪問時非事務(wù)表的數(shù)據(jù)一致性 unlock tables 釋放鎖 mysql 之index(索引) 什么是索引 索引被用來快速找出在一個列上用一特定值的行。沒有索引,mysql不得不首先以第一條記錄開始并然后讀完整個表直到他找出相關(guān)的行,表越大,花費時間越多。如果表對于查詢的列有一個索引,mysql能快速到達一個位置去搜尋到數(shù)據(jù)文件的中間,沒有必要考慮所有數(shù)據(jù)。 索引的作用: 快速找出匹配一個where子句的行 當(dāng)執(zhí)行連接時,從其他表檢索行 對特定的索引列

25、找出max()或min()值 mysql中的索引: 索引實際上是一個分離的列表,具有一個指向全表的指針 myisam表,索引被存儲為分離文件 innodb,索引存儲為表空間的一部分 mysql有四種類型的索引:主鍵(primary key)、唯一索引(unique)、全文索引(full index)、普通索引(index) 創(chuàng)建index 1、create index indexname on tablename(columnname); indexname(索引名稱) tablename(表名稱) columnname(要創(chuàng)建索引的字段名稱) 2、alter table tablename

26、add index indexname(columnname); 查看索引-show keys from tablename; 刪除index-alter table tablename drop index indexname; full index(myisam支持) create table chat(id int,chat1 text,chat2 text); create fulltext index index_text on tablename(col1,col2); alter table tablename add fulltext(col1,col2); 高效使用索引: 太

27、多的索引,占用空間 每次進行插入或更新時,索引都必須針對變化 重新排序,會導(dǎo)致 很多額外負擔(dān) 何處使用索引 1、where從句中條件匹配的行 select name from student where comment like“a%”; comment域的索引就起到了作用 Explain 分析索引 語法: explain select age from test12; Explain 分析mysql中的索引: table:查詢中涉及的表 type:顯示連接中使用了何種類型 const(最好),eq_ref,fef,range,index和all possible_keys:可能用到的索引 k

28、ey:實際使用的索引,可以在select語句中使用use index(indexname)來強制使用索引,用ignore index(indexname)來強制忽略索引key_len:使用的索引長度,越短越好; ref(references):顯示索引哪一列被使用了 rows:mysql必須檢查用來返請求數(shù)據(jù)的行數(shù) extra:using temporary(需要臨時表來存儲結(jié)果,通常發(fā)生在對不同的列集進行order by),usig filesort 意即mysql根本 不能使用索引 索引的算法:btree bitmap 使用索引注意的事項; 1、合理創(chuàng)建索引,反之會降低數(shù)據(jù)庫的查詢效率,反

29、之創(chuàng)建的索引會失去意義。 mysql的備份方式:backup、 restore 、copyrm 和 .myd,可以在數(shù)據(jù)庫恢復(fù)后重建索引 drop table chat; restore table chat from c:db_backup; copy備份 1、停止mysql服務(wù)器一避免 在備份的時候有用戶進行數(shù)據(jù)庫的訪問 1、復(fù)制數(shù)據(jù)庫的文件夾 用mysqldump備份 備份庫 1、備份 #mysqldump -uroot -p dbname 再打開查看(創(chuàng)建表備份的sql語句) 2、恢復(fù) #mysql -uroot -p dbname 備份某個表 1、備份 #mysqldump -uro

30、ot -p dbname tablename 再打開文件進行查看(創(chuàng)建表備份的sql語句) 2、恢復(fù) #mysql -uroot -p dbname 用select into 備份 備份:mysqlselect *from tablename into outfile c:db_backup 刪除表: mysqldelete from tablename; 恢復(fù): mysqlload data infile c:db_backup into table tablename; 作業(yè): 1、唯一索引 2、全文索引 要求:理解她們的意思及用途,以及實驗 3、select into備份 MYSQL其他客戶端工具 查看數(shù)據(jù)庫中有哪些數(shù)據(jù)庫 mysqlshow -uroot -p 查看數(shù)據(jù)庫中有哪些表 mysqlshow -uroot -p dbname 查看數(shù)據(jù)庫中表的結(jié)構(gòu) mysqlshow -uroot -p dbname tablename mysqlcheck客戶端可以檢查和修復(fù)myisam表,他還

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論