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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、數(shù)據(jù)庫基礎入門 - 數(shù)據(jù)庫的作用: - 數(shù)據(jù)是數(shù)據(jù)庫中存儲的基本對象 包括:文字、圖形、圖像、聲音 有組織的、可共享的數(shù)據(jù)集合 - 常用的DBMS - MYSQL(oracle、Sun) oracle(oracle) SQL-Server(Microsoft) DB2(IBM) - .如何學習數(shù)據(jù)庫管理系統(tǒng) - .程序員 1、標準語言:SQL(結構化查詢語言) SQL是用于訪問 數(shù)據(jù)庫的最常用標準化語言,他是由ANSI/ISO SQL標準定義的 SQL 的分類 DML:數(shù)據(jù)操作語言(用于檢索或者修改數(shù)據(jù)) DDL:數(shù)據(jù)定義語言(用于定義數(shù)據(jù)的結構,比如創(chuàng)建、修改或者刪除數(shù)據(jù)庫的對象) DCL:

2、數(shù)據(jù)控制語言(用于定義數(shù)據(jù)庫用戶的權限) DML: select:用于檢索數(shù)據(jù) insert:用于增加數(shù)據(jù)到數(shù)據(jù)庫 update:用于從數(shù)據(jù)庫中修改現(xiàn)存的數(shù)據(jù) delete:用于從數(shù)據(jù)庫中刪除數(shù)據(jù) DDL: create table /創(chuàng)建表 alter /修改表 drop table /刪除表 create index /創(chuàng)建索引 drop index /刪除索引 create view /創(chuàng)建視圖 drop view /刪除視圖 DCL: grant /授權 revoke /撤銷授權 set /設置 2、不同數(shù)據(jù)庫的獨特管理方式 .DBA(Database Administrator) 1

3、、標準語言:SQL(結構化查詢語言) 2、不同數(shù)據(jù)庫的獨特管理方式 3、數(shù)據(jù)庫的調優(yōu) 4、精通數(shù)據(jù)庫的備份、回復機制 - MYSQL的安裝與配置 - 安裝:選擇普通安裝類型 .配置 1、選擇配置類型:Detailed Configuration 2、選擇服務器類型:Developer Machine 3、選擇數(shù)據(jù)庫的是使用情況: -多功能數(shù)據(jù)庫(Multifunctional Database) -只是事務處理數(shù)據(jù)庫(Transactional Database Only) -只是非事務處理數(shù)據(jù)庫(Non-Transactional Database Only) 4、InnoDB表空間文件存儲

4、的盤符,默認在c: 5、數(shù)據(jù)庫并發(fā)連接數(shù)配置:Decision support 6、MYSQL服務器端口:默認:3306 7、Enable Strict Mode:是否允許嚴格樣式檢查:取消 8、選擇字符編碼:手工選擇:gb2312,windows下中文支持 9、服務器默認安裝到windows系統(tǒng)服務中,默認服務自啟動,選擇自動配置環(huán)境變量 10、填寫數(shù)據(jù)庫管理系統(tǒng)的管理員密碼 -在mySQL中數(shù)據(jù)庫管理員的用戶名為:root 11、是否允許使用root用戶遠程登錄數(shù)據(jù)庫 12、測試配置是否正確c:c:mysqlbinmysqlshow - MYSQL 的登錄 - .開始-運行-cmd .輸入

5、:mysql -uroot -p,然后輸入密碼 .或者:mysql -uroot -p密碼 .退出quit或者q -不必全在一個行內給出一個命令,較長命令可以輸入到多個行中。mysql通過尋找終止分號而不是輸入行的結束來決定語句在哪兒結束 -等待多行命令的下一行 等待下一行,等待以單引號開始的字符串結束 如果你決定不想執(zhí)行正在輸入過程中的一個命令,輸入c取消它 能夠以大小寫輸入關鍵詞,結果是等價的 - 基本的SQL語句 - 創(chuàng)建數(shù)據(jù)庫-create database school; 查看有哪些數(shù)據(jù)庫-show databases; 刪除數(shù)據(jù)庫-drop database school; - 向

6、數(shù)據(jù)庫中存儲數(shù)據(jù) - 1、首先進入數(shù)據(jù)庫 use dbname; use類似quit,不需要一個分號,寫也無礙 use必須在一個單行上給出 2、查看數(shù)據(jù)庫中的表 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ù)類型 - cha

7、r(M)固定長度字符 用來表示固定長度字符串,字符串的長度是1-255 VARCHAR(M)可變長度字符 具有靈活性的字符數(shù)據(jù)類型,范圍:1-255 處理char類型的數(shù)據(jù)比varchar類型的數(shù)據(jù)要快,有時會快50%(char類型存儲的數(shù)據(jù)的長度是聲明變量時的固定長度,而不管數(shù)據(jù)的實際長度,varchar存儲的是按數(shù)據(jù)的實際長度,從而減小了數(shù)據(jù)文件的大小) int 整數(shù) 有符合的范圍:-2147483648到2147483647,無符號范圍:0到4294967295 - 其他常用的數(shù)據(jù)類型 - DATE-日期類型,顯示YYYY-MM-DD DATETIME-日期和時間的組合,顯示YYYY-M

8、M-DD HH:MM:SS TEXT/BLOB 文本和大對象 TEXT可以保存字符串的長度在255-65535字節(jié)內。BLOB是一個能保存二進制數(shù)據(jù)的大對象,區(qū)別是TEXT不區(qū)分大小寫,而BLOB區(qū)分大小寫。 SQL語句的導入 1、編寫SQL腳本(.sql) 2、導入mysql-uusername -p abc.sql 查看表的結構-desc tablename 修改表中的數(shù)據(jù)-update tablename set colname=value where條件 刪除數(shù)據(jù)-delete from teacher where age=? 刪除表中所有數(shù)據(jù)-delete from teacher;

9、 刪除表-drop table tablename 根據(jù)條件進行過濾查找-select *from tablename where 條件 查找出版社為“清華出版社”的所有書籍-select *from books where pub=清華出版社; 查找出庫存大于50的所有書籍-select *from books where store50; 查找出“西游記”的庫存量-select title,store from books where title=西游記; SQL運算符 大于 =大于等于 =小于等于 !=,不等于 查看數(shù)據(jù)庫的信息-s - mysql常用函數(shù) - 1、查看數(shù)據(jù)庫版本-sel

10、ect versin(); 計算機的時間是存在BIOS() 2、查看當前數(shù)據(jù)庫的日期-select current_date(); 3、查看當前數(shù)據(jù)庫時間-select now(); 4、查看當前連接數(shù)據(jù)庫的用戶-select 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(都需要滿足) 查找學生EQ為80分或90分的學生

11、select * from stu where EQ=80 or EQ=90; 查找學生EQ為90分并且性別為女的學生 select * from stu where EQ=90 and sex=女; in(x,x)返回條件中的記錄與or作用相似 select * from tablename where 條件 in(,); between and返回兩者之間的記錄 查詢年齡在20-30之間的所有學生 select * from stu where age between 20 and 30; like與通配符(%)一起使用,模糊查詢 查找出姓張的學生 select * from stu wh

12、ere name like 張%; 查詢出使用163郵箱的所有學生 select * from stu where email like ; 查詢出郵箱里面含有a的所有學生 select * from stu where email like %a%; order by 實現(xiàn)排序(從小到大)-asc 將學生的年齡從高到低排列 select * from stu order by age desc;(降序) 將學生的年齡從低到高排列 select * from stu order by age asc;(升序) 數(shù)據(jù)默認為升序(從低到高) select * from stu order by a

13、ge ; as為查詢的列起別名 1、查詢所有學生只列出姓名,年齡,性別 select name as 姓名,age as 年齡,sex as 性別 from stu; group by對于查詢出的數(shù)據(jù)結果進行分類(分組) 2、將學生按性別進行分類 select * from stu group by sex; 將學生按年齡進行分類 select * from stu group by age; 3、having 子查詢:對于where查詢出的結果再次進行查詢 查找出年齡大于20歲學生,并且在其中找出姓名等于xxx的學生 select * from stu where age 20 having

14、 name=xxx或 select * from stu where age20 and name=xxx 4、distinct 過濾查詢的重復型記錄,只顯示唯一的記錄 將學生性別過濾 select distinct(sex) from stu; count 查看表中有幾條數(shù)據(jù) select count(*) from stu; select count(distinct(sex) from stu; limit 限制查詢結果的輸出數(shù)量 同時也可以實現(xiàn)數(shù)據(jù)的分頁 查詢EQ前三名的學生 select * from stu order by EQ desc limit 3; 實現(xiàn)查詢記錄的分頁 s

15、elect * from stu limit 0,3; select * from stu limit 3,3; 約束-定義了表級的強制規(guī)則、數(shù)據(jù)的完整性 非空約束(not null) create table test(id int not null); insert into test values(); innodb 會報錯 ,myISAM 會整形默認以0填充 唯一約束(UNIQUE) 不允許列中的數(shù)據(jù)重復 create table test(id int,unique(id); insert into test values(1); 默認約束(default) create table

16、 test(id int not null default111111); insert into test values(); 主鍵約束(primary key)是一個字段或一組字段(組合鍵),用于唯一標識表中的記錄,它可以 確保每個記錄是唯一的。 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,張安); aut

17、o_increment的特點-自增值 當刪除某一值時,他不會自動填充,而是繼續(xù)自增1 create table test(id int not null auto_increment,name varchar(20),primary 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 varcha

18、r(50),tel varchar(50),email varchar(50),primary key(id); insert into people(name,age,sex,email) values(張三,28,男,); 查詢出所有學生的檔案信息 select * from student,school where student.daih=school.id;或 select * from student as a,school as b where a.daih=b.id; 查詢所有學生檔案信息 只需顯示:學生姓名,年齡。畢業(yè)學校,學校地址 select ,s

19、tudent.age,,school.addres s from student, school where student.daih=school.id;或 select ,a.age,,b.address from student as a, school as b where a.daih=b.id; 外鍵約束( foreign key) 如何創(chuàng)建外鍵 foreign key:定義子中的列為外鍵 references:標記外鍵所要參考的父表和列 on delete cascade:允許在刪除父表的列的同時,刪除子表的列 /在InnoDB中支持

20、 create datebase fordb; use fordb; 創(chuàng)建父表 create table school(id int not null auto_increment,name varchar(20),primary key(id)engine=innodb; insert into school(name) values(紫瑯學院); 創(chuàng)建 子表 create table student(id int not null auto_increment,name varchar(20),schoolid int,primary key(id),foreign key(schooli

21、d) references school(id) on delete cascade); insert into student(name,schoolid) values(張三,1); E-R模型 概述:設計數(shù)據(jù)庫時,通常采用實體關系模型“-E-R模型 軟件開發(fā)流程: 需求調研(設計功能,收集數(shù)據(jù)) 與最終用戶進行確定 數(shù)據(jù)庫的設計 控制多余數(shù)據(jù) 那么在最后,數(shù)據(jù)庫設計者確定表、不同表之間的關系以及每個表之間的關系,通常使用”E-R模型“,它將整個系統(tǒng)看作彼此相關的實體組成 實體:通常用于表示 能夠被清晰識別的人、地點、事物、對象、事件 實體關系圖:如果需要 基于E-R模型建立數(shù)據(jù)庫模型,需

22、要標識實體,實體的屬性、以及實體之間的關系。那么通常用E-R圖來表示 實體之間的三種類型:1:1 1:N 或N :1 M:N 數(shù)據(jù)庫設計員確定的實體被轉換為表,而其屬性則成為相應 表中的字段(列) 如何控制冗余數(shù)據(jù): 一般來說通過數(shù)據(jù)庫的范式理論 設計數(shù)據(jù)庫的范式來 控制冗余 共有五個范式,一般達到第三范式即可 第一范式:對于表中的每一行,必須且僅僅有唯一的行值,在一行中的每一列僅有唯一的值并且具有原子性 第二范式 :要求 非主鍵列是主鍵的子集,非 主鍵列活動必須完全依賴整個主鍵。主鍵必須有唯一性的元素,一個主鍵可以由一個或更多的組成唯一值的列組成。一旦創(chuàng)建 ,主鍵 無法改變,外鍵關聯(lián)一個表的

23、主鍵。主外鍵關聯(lián)意味著一對多的關系。 第三范式:要求非主鍵列互不依賴 第四范式:禁止主鍵列和非主鍵列一對多關系不受 約束 第五 范式 :將表分割成盡可能 小的塊,為了排除在表中所有的冗余 MYSQL的聚合函數(shù) 1、最大值 找出EQ最高的學生 select name ,eq from student where eq=(select max(EQ)from student); SELECT MAX(article) AS article FROM shop; 2、最小值 找出EQ最低的學生 select name,min(EQ)from student; count()/統(tǒng)計 查詢出的記錄總數(shù)

24、3、查詢出學生的總條數(shù) select count(name)from student; avg()/求平均值 4、查詢學生EQ的平均值 select avg(EQ) from student; sum()/求和 5、查詢學生EQ的總和 select sum(EQ) from stu; 修改字段類型 alter table student modify sex char(5); 增加列 alter table student add address varchar(50); 刪除列 alter table student drop address; 修改列的名稱 alter table stud

25、ent change name names varchar(20); 修改表的名字 rename table student to stu; MYSQL 之表連接 內鏈接(inner join):又為等值連接,因為他將兩個表中的公共字段有相等的值(記錄)連接起來,這是最常用的連接。一個表引用還被稱為 查詢顯示:訂單編號,顧客姓名,物品名稱 select cases.id,, from cases,user,goods where cases.user_id=user.id and cases.goods_id=goods.id;或 select cases

26、.id,, from cases inner join(user,goods) on(user.id=cases.user_id and goods.id=cases.goods_id);或 select cases.id,, from (cases inner join user on cases.user_id=user.id) inner join goods on cases.goods_id=goods.id;或 select cases.id,, from user i

27、nner join(cases inner join goods on cases.goods_id=goods.id) on user.id=cases.user_id); 左連接:顯示sql語句中l(wèi)eft join 左邊表中的所有記錄,即使在left join 右邊的表中沒有滿足連接條件的數(shù)據(jù)也被顯示。當滿足連接條件時,left join 右邊的表中的相應的記錄與left join左邊表中的相應記錄結合顯示。 查詢出:學生的編號,學生姓名 ,學生學校 select ,student.id, from student left join scho

28、ol on student.school_id=school.id; 右連接:與左連接相對應,他顯示sql語句中right join 右邊表中的記錄,即使在right join 左邊沒有的記錄也被顯示。當滿足條件時。right join左邊表中相應記錄將與right join右邊的表中相應記錄進行結合顯示。通常左連接和右連接顯示的內容是一樣的。 select ,student.id, from student right join school on student.school_id=school.id; left join 以左邊的表查詢?yōu)橹?

29、right join 以右邊的表查詢?yōu)橹?示例: student left join school 那么student就為左表。school就為由表 MYSQL之視圖 視圖:它可以訪問一個或多個表中的數(shù)據(jù),是從一個或多個表中派生出的數(shù)據(jù)對象(虛表) 視圖的特點: 1、將復雜的查詢簡單化 2、提供安全機制,它保證用戶只可以看得到的數(shù)據(jù),系統(tǒng)中真實的表是不可被存取的(現(xiàn)都支持更改數(shù)據(jù)) 創(chuàng)建視圖: create view case_view as select cases.id as 訂單編號, as 顧客姓名, as 物品名稱 from user inner

30、 join(cases inner join goods on cases.goods_id=goods.id) on user.id=cases.user_id; 注意點: 視圖屬于數(shù)據(jù)庫,在默認情況下,將在當前數(shù)據(jù)庫創(chuàng)建新視圖。要想在給定數(shù)據(jù)庫中明確創(chuàng)建視圖。創(chuàng)建時,應將名稱指定為 db_name.view_name mysqlcreate view test.v as select *from t; 視圖必須具有唯一的列名,不得有重復,就像基表那樣。 修改視圖:alter view viewname as SQL; 刪除視圖:drop view viewname; alter view

31、case_view as select cases.id as 編號, as 姓名, as 名稱 from user inner join(cases inner join goods on cases.goods_id=goods.id) on user.id=cases.user_id; 數(shù)據(jù)字典 數(shù)據(jù)庫的數(shù)據(jù)字典-實際上是一個數(shù)據(jù)庫 它記錄著數(shù)據(jù)庫管理系統(tǒng)中的其他數(shù)據(jù)庫的操作 mysql數(shù)據(jù)庫字典:information_schema use information_schema select * from views; - MYSQL的事務與引擎

32、- 什么是 事務(transaction) 所謂事務,它是一個操作序列。這些操作要么都執(zhí)行,要么都不執(zhí)行,他是一個不可分割的工作單位 事務是數(shù)據(jù)庫維護數(shù)據(jù)一致性的單位,在每個事務結束時,都能保持數(shù)據(jù)一致性 mysql表類型: 在mysql中有多種表的類型,但是分為兩類 : 事務類型:InnoDB、BDB 非事務類型:MYISAM、MERGE、MEMORY(HEAP) InnoDB和BDB存儲引擎提供事務安全表。BDB被包含在mac支持它的操作系統(tǒng)發(fā)布的mysql-max二制分發(fā)版里。InnoDB也默認被包括在所有mysql5.1二進制分發(fā)版里 InnoDB是為處理巨大數(shù)據(jù)量時的最大性能設計。它

33、的cpu效率可能是任何其他基于磁盤的關系數(shù)據(jù)庫引擎所有不能匹敵的。 MYISAM管理非事務表。他提供高速存儲和檢索,以及全文搜索能力。 ISAM數(shù)據(jù)表是mysql最原始的數(shù)據(jù)表,有三個文件,分別是: .frm,存放數(shù)據(jù)表的結構定義 .isd,數(shù)據(jù)文件,存放數(shù)據(jù)表中的各個數(shù)據(jù)行的內容 .ism,索引文件,存放數(shù)據(jù)表的所有索引信息。 MYISAM是數(shù)據(jù)表是ISAM數(shù)據(jù)表的繼承者,也是三個文件,分別是: .frm,結構定義文件; .MYD,數(shù)據(jù)文件; .MYI,索引文件。 BDB數(shù)據(jù)表用兩個文件 來表示,分別是; .frm,結構定義文件 .DB,數(shù)據(jù)表數(shù)據(jù)和索引文件 INNODB:由于采用表空間的概

34、念來管理數(shù)據(jù)表,所以他只有一個與數(shù)據(jù)表對應.frm文件,同一目錄下的其他文件表示為空間,存儲數(shù)據(jù)表的數(shù)據(jù)和索引 HEAP數(shù)據(jù)表是一個存在與內存中的表,所以他的數(shù)據(jù)和索引都存在于內存中,文件系統(tǒng)中只有一個.frm文件,及定義結構,當mysql關閉后數(shù)據(jù)都將消失。 定義表的的類型 create table test(id int)engine=heap; 事務表幣非事務表有幾大優(yōu)勢: 更安全。即使mysql崩潰或遇到硬件問題 ,要么自動恢復,要么從備份加事務日志恢復,你可以取回數(shù)據(jù) 你可以合并許多語句,并用commit語句同時接受她們全部(如果autocommit被禁止掉) 你可以執(zhí)行rollba

35、ck來忽略你的改變(如果autocommit被禁止掉) 如果更新失敗,你的所有改變都變回原來。(用非事務安全表,所有發(fā)生的改變都是永久的) 事務安全存儲引擎可以給那些當前用 讀得到許多更新的表提供 更好的部署。 非事務表自身有幾大優(yōu)點: 非事務表自身有幾大優(yōu)點,因為沒有事務開支,所有優(yōu)點都能出現(xiàn): 更快 需要更更少的磁盤空間 執(zhí)行更新需要更少的內存 你可以在同一個語句中合并事務安全和非事務安全表來獲得兩者最好的情況。盡管如此,在autocommit被禁止掉的事務里,變換到非事務安全表依舊即使提交并且不會被回滾 如何在innodb中實現(xiàn)事務: begin:/告知服務器我要開始一個事物 rollb

36、ack:/如果事務發(fā)生異常,那么數(shù)據(jù)回滾 commit:/事務執(zhí)行成功,進行數(shù)據(jù)提交 mysql begin; Query OK, 0 rows affected (0.00 sec) mysql insert into test11 values(1,zhangs); Query OK, 1 row affected (0.00 sec) mysql select * from test11; +-+-+ | id | name | +-+-+ | 1 | zhangs | +-+-+ 1 row in set (0.00 sec) mysql end; ERROR 1064 (42000)

37、: 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 end at line 1 mysql rollback; Query OK, 0 rows affected (0.00 sec) mysql select * from test11; Empty set (0.00 sec) mysql commit; Query OK, 0 rows affected (0.00 se

38、c) mysql select * from test11; Empty set (0.00 sec) 修改表類型 sql語句:alter table tablename engine=innodb; 注意:不可以將mysql系統(tǒng)表比如user或host轉換成innodb類型。系統(tǒng)表必須為myisam類型 對myisam進行事務處理-鎖 lock table tablename(read,write) lock table 可以對表進行加鎖控制,以保證用戶并發(fā)訪問時非事務表的數(shù)據(jù)一致性 unlock tables 釋放鎖 mysql 之index(索引) 什么是索引? 索引被用來快速找出在一個

39、列上用一特定值的行。沒有索引,mysql不得不首先以第一條記錄開始并然后讀完整個表直到他找出相關的行,表越大,花費時間越多。如果表對于查詢的列有一個索引,mysql能快速到達一個位置去搜尋到數(shù)據(jù)文件的中間,沒有必要考慮所有數(shù)據(jù)。 索引的作用: 快速找出匹配一個where子句的行 當執(zhí)行連接時,從其他表檢索行 對特定的索引列找出max()或min()值 mysql中的索引: 索引實際上是一個分離的列表,具有一個指向全表的指針 myisam表,索引被存儲為分離文件 innodb,索引存儲為表空間的一部分 mysql有四種類型的索引:主鍵(primary key)、唯一索引(unique)、全文索引

40、(full index)、普通索引(index) 創(chuàng)建index 1、create index indexname on tablename(columnname); indexname(索引名稱) tablename(表名稱) columnname(要創(chuàng)建索引的字段名稱) 2、alter table tablename add index indexname(columnname); 查看索引-show keys from tablename; 刪除index-alter table tablename drop index indexname; full index(myisam支持) c

41、reate table chat(id int,chat1 text,chat2 text); create fulltext index index_text on tablename(col1,col2); alter table tablename add fulltext(col1,col2); 高效使用索引: 太多的索引,占用空間 每次進行插入或更新時,索引都必須針對變化 重新排序,會導致 很多額外負擔 何處使用索引? 1、where從句中條件匹配的行 select name from student where comment like“a%”; comment域的索引就起到了作用

42、 Explain 分析索引 語法: explain select age from test12; Explain 分析mysql中的索引: table:查詢中涉及的表 type:顯示連接中使用了何種類型 const(最好),eq_ref,fef,range,index和all possible_keys:可能用到的索引 key:實際使用的索引,可以在select語句中使用use index(indexname)來強制使用索引,用ignore index(indexname)來強制忽略索引key_len:使用的索引長度,越短越好; ref(references):顯示索引哪一列被使用了 row

43、s:mysql必須檢查用來返請求數(shù)據(jù)的行數(shù) extra:using temporary(需要臨時表來存儲結果,通常發(fā)生在對不同的列集進行order by),usig 意即mysql根本 不能使用索引 索引的算法:btree bitmap 使用索引注意的事項; 1、合理創(chuàng)建索引,反之會降低數(shù)據(jù)庫的查詢效率,反之創(chuàng)建的索引會失去意義。 mysql的備份方式:backup、 restore 、copy/冷備份、mysqldump、select into backup備份myisam表的 示例: use test; backup table chat to c:db_backup; 只生成 .frm

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

45、打開文件進行查看(創(chuàng)建表備份的sql語句) 2、恢復 #mysql -uroot -p dbname 用select into 備份 備份:mysqlselect *from tablename into outfile c:db_backuptable.dat 刪除表: mysqldelete from tablename; 恢復: mysqlload data infile c:db_backuptable.dat into table tablename; 作業(yè): 1、唯一索引 2、全文索引 要求:理解她們的意思及用途,以及實驗 3、select into備份 MYSQL其他客戶端工具

46、查看數(shù)據(jù)庫中有哪些數(shù)據(jù)庫 mysqlshow -uroot -p 查看數(shù)據(jù)庫中有哪些表 mysqlshow -uroot -p dbname 查看數(shù)據(jù)庫中表的結構 mysqlshow -uroot -p dbname tablename mysqlcheck客戶端可以檢查和修復myisam表,他還可以優(yōu)化和分析表 1、mysqlcheck -uroot -p dbname /檢測 2、mysqlcheck -uroot -p -auto-repair dbname /如碰到有問題的表自動進行修復 3、mysqlcheck -uroot -p -optimize /優(yōu)化表 MYSQL 管理方式

47、連接方式-mysql -hlocalhost -uroot 通過本地主機,以root用戶訪問,無需密碼驗證 mysql -hlocalhost 通過本地主機,匿名用戶訪問,無需密碼驗證 設置密碼-mysqladmin 外部: 1、修改密碼-mysqladmin hlocalhost -uroot -p password newpassword 2、密碼為空-mysqladmin -hlocalhost -uroot -p password 3、設置root用戶遠程訪問密碼-mysqladmin -hremote -uroot -p password 內部設置密碼: 1、設置root用戶本地登錄

48、密碼 set password for rootlocalhost=password(000000); 2、設置root用戶遠程登錄密碼 set password for rootremote=password(newpassword); 加密: mysql use start Database changed mysql create table users(username varchar(50),password varchar(50); Query OK, 0 rows affected (0.16 sec) mysql insert into users values(abcd,123456); Query OK, 1 row affected (0.34 sec) mysql insert into users values(abcdfg,password(123456); Query OK, 1 row affected (0.00 sec) mysql select * from users; select user,host,password form user; +-+- -+ | us

溫馨提示

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

最新文檔

評論

0/150

提交評論