mysql教程76751PPT課件_第1頁
mysql教程76751PPT課件_第2頁
mysql教程76751PPT課件_第3頁
mysql教程76751PPT課件_第4頁
mysql教程76751PPT課件_第5頁
已閱讀5頁,還剩144頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、MySQL數(shù)據(jù)庫,MySQL數(shù)據(jù)庫,數(shù)據(jù)庫概述數(shù)據(jù)庫基礎(chǔ)知識SQL語言MySQL數(shù)據(jù)庫基礎(chǔ)操作,第一部分:數(shù)據(jù)庫概述,數(shù)據(jù)庫基本概念什么是MySQL數(shù)據(jù)庫MySQL基本操作,數(shù)據(jù)庫基本概念,數(shù)據(jù)(Data)數(shù)據(jù)庫(Database)數(shù)據(jù)庫管理系統(tǒng)(DBMS)數(shù)據(jù)庫系統(tǒng)(DBS),數(shù)據(jù),數(shù)據(jù)(Data)的定義:對客觀事物的符號表示,如圖形符號、數(shù)字、字母等,數(shù)據(jù)是數(shù)據(jù)庫中存儲的基本對象。在日常生活中,人們直接用語言來描述事物;在計算機中,為了存儲和處理這些事物,就要將事物的特征抽象出來組成一個記錄來描述。數(shù)據(jù)的種類文字、圖形、圖象、聲音數(shù)據(jù)的特點數(shù)據(jù)與其語義是不可分的,數(shù)據(jù)舉例,學(xué)生檔案中的學(xué)生

2、記錄(崔文華,男,1984,上海,計算機系,1990)數(shù)據(jù)的形式不能完全表達其內(nèi)容數(shù)據(jù)的解釋語義:學(xué)生姓名、性別、出生年月、籍貫、所在系別、入學(xué)時間解釋:崔文華是個大學(xué)生,1984年出生,上海人,2003年考入計算機系,數(shù)據(jù)庫,數(shù)據(jù)庫(Database,簡稱DB)的定義:“按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫”J.Martin給數(shù)據(jù)庫下了一個比較完整的定義:數(shù)據(jù)庫是存儲在一起的相關(guān)數(shù)據(jù)的集合,這些數(shù)據(jù)是結(jié)構(gòu)化的,無有害的或不必要的冗余,并為多種應(yīng)用服務(wù),數(shù)據(jù)庫的發(fā)展史,人工管理階段人力手工整理存儲數(shù)據(jù)文件系統(tǒng)階段使用磁盤文件來存儲數(shù)據(jù)數(shù)據(jù)庫系統(tǒng)階段關(guān)系型數(shù)據(jù)庫高級數(shù)據(jù)庫階段“關(guān)系-對象”型

3、數(shù)據(jù)庫,數(shù)據(jù)庫的類型,純文本數(shù)據(jù)庫:純文本數(shù)據(jù)庫是只用空格符、制表符和換行符來分割信息的文本文件。適用于小型應(yīng)用,對于大中型應(yīng)用來說它存在諸多限制:只能順序訪問,不能進行隨機訪問。查找數(shù)據(jù)和數(shù)據(jù)關(guān)系或多用戶同時訪問進行寫操作時非常困難。關(guān)系數(shù)據(jù)庫:由于純文本數(shù)據(jù)庫存在諸多局限,所以人們開始研究數(shù)據(jù)模型,設(shè)計各種類型的使用方便的數(shù)據(jù)庫。在數(shù)據(jù)庫的發(fā)展史上,最具影響的數(shù)據(jù)庫模型有:層次模型、網(wǎng)狀模型和關(guān)系模型。其中,關(guān)系模型是目前應(yīng)用最廣泛和最有發(fā)展前途的一種數(shù)據(jù)模型,其數(shù)據(jù)結(jié)構(gòu)簡單,當前主流的數(shù)據(jù)庫系統(tǒng)幾乎都采用關(guān)系模型。,數(shù)據(jù)庫的優(yōu)點,數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和儲存可為各種用戶共享冗余度

4、較小,節(jié)省存儲空間易擴展,編寫有關(guān)數(shù)據(jù)庫應(yīng)用程序,數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem)是一種操縱和管理數(shù)據(jù)庫的大型軟件,是用于建立、使用和維護數(shù)據(jù)庫,簡稱DBMS。關(guān)系型數(shù)據(jù)庫管理系統(tǒng)稱為RDBMS,R指RelationDBMS的作用它對數(shù)據(jù)庫進行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫的安全性和完整性。,DBMS的主要功能For程序員,數(shù)據(jù)定義功能:提供數(shù)據(jù)定義語言(DDL)定義數(shù)據(jù)庫中的數(shù)據(jù)對象數(shù)據(jù)操縱功能:提供數(shù)據(jù)操縱語言(DML)操縱數(shù)據(jù)實現(xiàn)對數(shù)據(jù)庫的基本操作(查詢、插入、刪除和修改),DBMS的主要功能For數(shù)據(jù)庫管理員,數(shù)據(jù)庫的運行管理保證數(shù)據(jù)的

5、安全性、完整性、多用戶對數(shù)據(jù)的并發(fā)使用發(fā)生故障后的系統(tǒng)恢復(fù)數(shù)據(jù)庫的建立和維護功能(實用程序)數(shù)據(jù)庫數(shù)據(jù)批量裝載數(shù)據(jù)庫轉(zhuǎn)儲介質(zhì)故障恢復(fù)數(shù)據(jù)庫的重組織性能監(jiān)視等,時下流行的DBMS,Oracle應(yīng)用廣泛、功能強大,分布式數(shù)據(jù)庫系統(tǒng)“關(guān)系-對象”型數(shù)據(jù)庫MySQL快捷、可靠開源、免費、與PHP組成經(jīng)典的LAMP組合SQLServer針對不同用戶群體的五個特殊的版本易用性好DB2應(yīng)用于大型應(yīng)用系統(tǒng),具有較好的可伸縮性,數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)庫系統(tǒng)(DatabaseSystem,簡稱DBS)是一個實際可運行的存儲、維護和應(yīng)用系統(tǒng)提供數(shù)據(jù)的軟件系統(tǒng)數(shù)據(jù)庫系統(tǒng)構(gòu)成DBMSDB應(yīng)用軟件數(shù)據(jù)庫管理員用戶,數(shù)據(jù)庫系統(tǒng)的

6、使用,數(shù)據(jù)庫服務(wù)器,響應(yīng)和提供數(shù)據(jù),應(yīng)用程序,數(shù)據(jù)庫,操作和查詢,MySQL數(shù)據(jù)庫,什么是MySQLMySQL是一個小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQLAB公司。目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。,MySQl特征,性能快捷、優(yōu)化SQL語言容易使用多線程和可靠性多用戶支持可移植性和開放源代碼遵循國際標準和國際化支持為多種編程語言提供API,MySQL5特性,子查詢視圖存儲過程觸發(fā)器事務(wù)處理熱備份二進制Bit類型等等,MySQ

7、L不足,不能直接處理XML數(shù)據(jù)一些功能上支持的不夠完善和成熟不能提供任何OLAP(實時分析系統(tǒng))功能等等.,MySQL應(yīng)用,MySQL的官方網(wǎng)站引述MySQL是“世界上最受歡迎的開放源代碼數(shù)據(jù)庫”。這不是狂妄之語,數(shù)字可以證明它:目前,有超過1000萬份的MySQL被安裝用于支付高負荷的網(wǎng)站和其他關(guān)鍵商業(yè)應(yīng)用,包括像阿爾卡特、愛立信、朗訊、亞馬遜、Google、紐約證券交易所、迪斯尼、Yahoo、美國宇航局等這樣的產(chǎn)業(yè)領(lǐng)袖。在下述網(wǎng)頁你還能查看到MySQL和它競爭對手進行了短兵相接的比較。,MySQL基本操作,mysql、mysqladmin和mysqldumpMySQL管理工具和用戶操作界面

8、,mysql命令,mysql命令mysql-hhost_name-uuser_nameppasswordh:當連接MySQL服務(wù)器不在同臺主機時,填寫主機名或IP地址u:登錄MySQL的用戶名p:登錄MySQL的密碼注意:密碼如果寫在命令行的時候一定不能有空格。如果使用的系統(tǒng)為linux并且登陸用戶名字與MySQL的用戶名相同即可不用輸入用戶名密碼,linux默認是以root登陸,windows默認用戶是ODBC,mysql程序常用命令,選定默認數(shù)據(jù)庫:usedbname;顯示所有數(shù)據(jù)庫:showdatabases;顯示默認數(shù)據(jù)庫中所有表:showtables;放棄正在輸入的命令:c顯示命令清

9、單:h退出mysql程序:q查看MySQL服務(wù)器狀態(tài)信息:s,處理SQL文件,mysql命令處理存放在文件里的SQL命令格式:mysqloptiondbnamebackuptmp.sql備份出來的是一個文本文件,默認為utf-8字符集,如果想使用另外一種字符集,必須使用-default-character-set=gbk選項來設(shè)置,附加工具,MySQLCC,總結(jié),MySQL是一種功能非常強大的關(guān)系型客戶服務(wù)器數(shù)據(jù)庫系統(tǒng),它的安全性和穩(wěn)定性足以滿足許多應(yīng)用程序的要求,而且有著非常高的性價比。,第二部分:數(shù)據(jù)庫基礎(chǔ)知識,數(shù)據(jù)庫基礎(chǔ)知識概述SQL概述SQL語言,數(shù)據(jù)庫基礎(chǔ)知識,數(shù)據(jù)庫由一批數(shù)據(jù)構(gòu)成的

10、有序集合,這些數(shù)據(jù)被分門別類地存放在一些結(jié)構(gòu)化的數(shù)據(jù)表(table)里,而數(shù)據(jù)表之間又往往存在交叉引用的關(guān)系,這種關(guān)系使數(shù)據(jù)庫又被稱為關(guān)系型數(shù)據(jù)庫檔案柜=數(shù)據(jù)庫抽屜=表文件=記錄,數(shù)據(jù)庫,數(shù)據(jù)表存儲過程視圖.,產(chǎn)品數(shù)據(jù)庫,表,數(shù)據(jù)表,35,數(shù)據(jù)在表中的存放,存在冗余,為減少數(shù)據(jù)查找的麻煩,允許數(shù)據(jù)有一定的冗余,數(shù)據(jù)存儲的完整性,存在不正確、不準確的數(shù)據(jù),數(shù)據(jù)庫“失去了完整性”,數(shù)據(jù)的完整性,數(shù)據(jù)完整性,+,=,完整性分類,數(shù)據(jù)實體完整性字段完整性引用完整性自定義完整性,數(shù)據(jù)實體完整性,約束方法:唯一約束、主鍵約束、標識列,字段完整性,約束方法:限制數(shù)據(jù)類型、檢查約束、外鍵約束、默認值、非空約束

11、,引用完整性,約束方法:外鍵約束,自定義完整性,約束方法:規(guī)則、存儲過程、觸發(fā)器,完整性包括,輸入的類型是否正確?年齡必須是數(shù)字輸入的格式是否正確?身份證號碼必須是18位是否在允許的范圍內(nèi)?性別只能是”男”或者”女”是否存在重復(fù)輸入?學(xué)員信息輸入了兩次是否符合其他特定要求?信譽值大于5的用戶才能夠加入會員列表,創(chuàng)建數(shù)據(jù)庫表完畢!,輸入數(shù)據(jù)項,驗證主鍵、主外鍵關(guān)系、檢查約束,SQL概述,什么是SQL?SQL是StructuredQueryLanguage(結(jié)構(gòu)化查詢語言)的縮寫。SQL是專為數(shù)據(jù)庫而建立的操作命令集,是一種功能齊全的數(shù)據(jù)庫語言。在使用它時,只需要發(fā)出“做什么”的命令,“怎么做”是

12、不用使用者考慮的。,SQL語法組成,DML(DataManipulationLanguage數(shù)據(jù)操作語言)查詢、插入、刪除和修改數(shù)據(jù)庫中的數(shù)據(jù);SELECT、INSERT、UPDATE、DELETE等;DCL(DataControlLanguage數(shù)據(jù)控制語言)用來控制存取許可、存取權(quán)限等;GRANT、REVOKE等;DDL(DataDefinitionLanguage數(shù)據(jù)定義語言)用來建立數(shù)據(jù)庫、數(shù)據(jù)庫對象和定義其列CREATETABLE、DROPTABLE、ALTERTABLE等功能函數(shù)日期函數(shù)、數(shù)學(xué)函數(shù)、字符函數(shù)、系統(tǒng)函數(shù)等,MySQL中使用SQL語言幾點說明,屬于一個SQL語句,使用分

13、號(;)結(jié)尾,否則mysql認為語句沒有輸入完。箭頭(-)代表SQL語句沒有輸入完取消SQL語句使用(c)SQL語句關(guān)鍵字和函數(shù)名不區(qū)分大小寫(Linux區(qū)分,Windows不區(qū)分)使用函數(shù)時,函數(shù)名和后面的括號之間不能有空格,MySQL數(shù)據(jù)類型,數(shù)據(jù)類型種類數(shù)值列類型字符串列類型日期和時間列類型,數(shù)據(jù)類型種類,數(shù)值型分為整型和浮點型整型:可以由十進制和十六進制表示整數(shù)由數(shù)字序列組成,如:1,100。由十六進制表示方法:0 x且后面加19和AF的任意數(shù)字或字母,并且0 x中的X不能大寫。浮點型:浮點數(shù)由一個數(shù)字加一個小數(shù)點再加上一個數(shù)字組成。兩個數(shù)字序列不能同時為空。,字符串:由單引號或者雙引

14、號括起來的字符或者數(shù)字。如:”abc”,abc10字符串中要用轉(zhuǎn)義字符才能表示的特殊符號,日期和時間值是存儲如“2005-1-1”或者“12:00:00”這樣的數(shù)值的值。在MySQL中日期是按”年-月-日”的順序。NULL值是一種無類型的值,表示“空,什么也沒有”。,數(shù)值列類型,MySQL為除了NULL值外的所有通用數(shù)據(jù)類型提供了列類型。列類型是一種手段,通過這種手段可以描述表的列可以包含什么樣類型的值。數(shù)值列類型所有數(shù)值列類型的類型名及其說明和所占的字節(jié)數(shù)見下表:,數(shù)值列類型包括整型和浮點型說明:TINYINT,SAMLLINT,MEDIUMINT,INT,BIGINT每個數(shù)據(jù)類型的取值范圍

15、不同,故分別可以表示不同的數(shù)值范圍。在定義整型列時,可以指定可選的顯示尺寸M(見上表),M是從1到255的值,它表示顯示列中值的字符數(shù)。,例如:INT(4)意思是指定了一個具有4個字符顯示寬度的INT列。如果定義了一個沒有明確寬度的整數(shù)列,則會分配缺省的寬度,缺省值為每種類型的最長值的長度。對于每種浮點型,可指定一個最大的顯示尺寸M和小數(shù)位數(shù)D,M的取值應(yīng)該是0-30,但小于M-2。M和D對于DECIMAL是必須的。,AUTO_INCREMENT自動標識列,在需要產(chǎn)生唯一標志符號或者順序值時候,可用此屬性。值一般從1開始,每行增加1,在插入NULL到一個AUTO_INCREMENT列時,MyS

16、QL會插入一個比該列中當前最大值大1的值,一個表中最多能有一個有此屬性的列。對于想使用此屬性的列應(yīng)該定義為NOTNULL,并定義為PRIMARYKEY或者定義為UNIQUE鍵。舉例:createtablet(idintauto_incrementnotnullprimarykey);UNSIGNED無符號,此屬性禁用負值,將數(shù)值的取值范圍從零開始。舉例:createtablet(numtinyint,num2tinyintunsigned);,數(shù)值列的完整性約束,NULL和NOTNULL默認為NULL,即插入值時沒有在此字段插入值時自動填NULL,如果指定了NOTNULL,則必須在插入值時在此

17、字段添入值,不允許插入NULL值。DEFAULT可以通過此屬性來指定一個缺省值,即如果沒有在此列添加值,那么默認添加DEFAULT后指定值。ZEROFILL前導(dǎo)零填充數(shù)值類型值以達到列的顯示寬度。舉例:createtabletest2(num1intdefault1,num2intzerofill);,字符串列類型所有字符串列類型及其說明和所占的字節(jié)數(shù)見下表:,說明:對于可變長的字符串類型,其長度取決于實際存放在列中的值的長度。此長度在上表中用L來表示。附加若干額外字節(jié),用來記錄字符串長度,也就是說總長度等于Ln(n1、2、3、4、8),CHAR和VARCHAR類型CHAR類型和VARCHAR

18、類型長度范圍都是0255之間的大小。他們之間的差別在于MySQL處理存儲的方式:CHAR把這個大小視為值的準確大小(用空格填補比較短的值)。VARCHAR類型把它視為最大值并且只使用了存儲字符串實際上需要的字節(jié)數(shù)(增加了一個額外的字節(jié)記錄長度)。因而,較短的值當被插入一個語句為VARCHAR類型的字段時,將不會用空格填補(然而,較長的值仍然被截短)。,BLOB和TEXT類型BLOB是二進制大對象,如果想存儲二進制數(shù)BLOB將是最佳選擇,而TEXT與之相同,只是BOLOB按照二進制編碼排序(區(qū)分大小寫),TEXT按照字符文本模式排序(不區(qū)分大小寫)。ENUM和SET類型是特殊的串類型,其列值必須

19、從固定的串集中選擇,二者差別為前者必須是只能選擇其中的一個值,而后者可以多選。(不推薦使用),字符串列類型的可選屬性BINARY使用此屬性可以使列值作為二進制串處理,即看成BLOB類型。NULL和NOTNULL同數(shù)值型功能相同DEFAULT同數(shù)值型功能相同,日期和時間列類型所有時間和日期列類型的類型名及其說明和所占的字節(jié)數(shù)見下表:,說明:每個時間和日期列類型都有一個零值,當插入非法數(shù)值時就用零值來添加表示日期時必須先按:年,月,日的順序給出DATE,TIME,DATETIME分別是存儲日期,時間與日期和時間的組合,其格式為“YYYY-MM-DD”,“hh:mm:ss”和“YYYY-MM-DDh

20、h:mm:ss”,對于DATETIME類型,日期和時間部分都需要TIMESTAMP時間戳列類型以YYYYMMDDhhmmss的格式來表示值,其取值范圍是19700101000000到2037年的某個時間,主要用于記錄更改或創(chuàng)建某個記錄,總結(jié):常用數(shù)據(jù)類型,創(chuàng)建數(shù)據(jù)庫,建立數(shù)據(jù)庫操作:語法:createdatabase數(shù)據(jù)庫名敘述:創(chuàng)建一個具有指定名稱的數(shù)據(jù)庫。如果要創(chuàng)建的數(shù)據(jù)庫已經(jīng)存在,或者沒有創(chuàng)建它的適當權(quán)限,則此語句失敗。例:建立一個student庫。mysqlcreatedatabasestudent;,建立表操作:語法:createtable表名(列名1列類型,列名2列類型,.);敘述

21、:在當前數(shù)據(jù)庫下新創(chuàng)建一個數(shù)據(jù)表。列類型:表示該列的數(shù)據(jù)類型。例:建立一個表school,其由兩列組成,第一列屬性為非空,并做為主鍵,并自增createtableschool(school_idint(10)notnullauto_incrementprimarykey,school_namevarchar(20);,創(chuàng)建表,常見完整性約束:PRIMARYKEY主碼約束(主鍵)UNIQUE唯一性約束NOTNULL非空值約束AUTO_INCREMENT用于整數(shù)列默認自增1UNSIGNED無符號整數(shù)DEFAULTdefault_value默認值約束DEFAULTcur_timestamp創(chuàng)建新記錄

22、時默認保存當前時間(僅適用timestamp數(shù)據(jù)列)ONUPDATEcur_timestamp修改記錄時默認保存當前時間(僅適用timestamp數(shù)據(jù)列)CHARACTERSETname指定字符集(僅適用字符串),數(shù)據(jù)表類型,在創(chuàng)建一個新的MySQL數(shù)據(jù)表時,可以為它設(shè)置一個類型,其中最重要的3種類型是MyISAM:成熟、穩(wěn)定和易于管理InnoDB:加入事物、數(shù)據(jù)行級鎖定機制、外鍵約束條件、崩潰恢復(fù)等新功能HEAP:只存在于內(nèi)存中,可做臨時表createtabletmp()ENGINE=MyISAM,主鍵與外鍵,數(shù)據(jù)表之間的關(guān)聯(lián)/引用關(guān)系是依靠具體的主鍵(primarykey)和外鍵(fore

23、ignkey)建立起來的。主鍵:幫助MySQL以最快的速度把一條特點的數(shù)據(jù)記錄的位置確定下來。主鍵必須是唯一的主鍵應(yīng)該是緊湊的,因此整數(shù)類型比較適合外鍵:引用另外一個數(shù)據(jù)表的某條記錄。外鍵列類型盡可能與主鍵列類型保持一致外鍵列應(yīng)該加上NOTNULL,主鍵createtablestudent(sidintnotnullauto_increment,namevarchar(20)notnull,primarykey(sid);外鍵(自動檢查外鍵是否匹配,僅適用InnoDB)createtablescore(cidintnotnullauto_incrementprimarykey,scoreint

24、,sidint,foreignkey(sid)referencesstudent(sid);,主表和從表,1、當主表中沒有對應(yīng)的記錄時,不能將記錄添加到子表成績表中不能出現(xiàn)在學(xué)員信息表中不存在的學(xué)號;2、不能更改主表中的值而導(dǎo)致子表中的記錄孤立把學(xué)員信息表中的學(xué)號改變了,學(xué)員成績表中的學(xué)號也應(yīng)當隨之改變;3、子表存在與主表對應(yīng)的記錄,不能從主表中刪除該行不能把有成績的學(xué)員刪除了4、刪除主表前,先刪子表先刪學(xué)員成績表、后刪除學(xué)員信息表,思考,電話號碼一般使用什么數(shù)據(jù)類型存儲?性別一般使用什么數(shù)據(jù)類型存儲?年齡信息一般使用什么數(shù)據(jù)類型存儲?照片信息一般使用什么數(shù)據(jù)類型存儲?薪水一般使用什么數(shù)據(jù)類型

25、存儲?,思考,學(xué)員姓名允許為空嗎?家庭地址允許為空嗎?電子郵件信息允許為空嗎?考試成績允許為空嗎?,思考,在主鍵列輸入的數(shù)值,允許為空嗎?不允許一個表可以有多個主鍵嗎?不可以在一個學(xué)校數(shù)據(jù)庫中,如果一個學(xué)校內(nèi)允許重名的學(xué)員,但是一個班級內(nèi)不允許學(xué)員重名,可以組合班級和姓名兩個字段一起來作為主鍵嗎?,選擇主鍵的原則,最少性盡量選擇單個鍵作為主鍵穩(wěn)定性盡量選擇數(shù)值更新少的列作為主鍵,思考,標識列允許為字符數(shù)據(jù)類型嗎?INT如果標識列A的初始值為1,則輸入三行數(shù)據(jù)以后,再刪除兩行,下次再輸入數(shù)據(jù)行的時候,標識值從多少開始?四,例:建立一個學(xué)生信息表(student)定義列sno學(xué)號,類型為5位定長字

26、符串,非空,主鍵定義列sname姓名,類型為8位定長字符串,非空定義列ssex性別,取值1或0定義列sage年齡,類型為短整型定義列sdept系名,數(shù)據(jù)類型為20位變長字符串例:建立一個課程信息表(course)定義列courseid課程號,類型為整型,非空,自動增長,主鍵定義列cname課程名,類型為16位變長字符串,非空例:建立一個學(xué)生考試成績信息表(sc)定義列g(shù)rade成績,類型為整型要求把表字段補充完整,可以通過學(xué)號查看學(xué)生相關(guān)課程的成績,顯示表結(jié)構(gòu)操作,語法:describe表名;desc表名;敘述:用于顯示表的創(chuàng)建結(jié)構(gòu)。,刪除數(shù)據(jù)庫或表操作,刪除表操作語法:droptableif

27、existstab_name,tab_name.敘述:從數(shù)據(jù)庫中刪除給定的表。如果給出ifexists子句,則刪除不存在的表不會出錯。刪除數(shù)據(jù)庫操作語法:dropdatabaseifexistsdb_name敘述:刪除給定的數(shù)據(jù)庫。在刪除一個數(shù)據(jù)庫后,它就永遠沒有了,因此要特別小心。如果給出ifexists子句,則刪除不存在的數(shù)據(jù)庫不會出錯。,更改表結(jié)構(gòu)操作,語法:altertable表名action;說明:action可以是如下語句:add列名建表語句first|after列名可以為表添加一列,如果沒指定first或者after,則在列尾添加一列,否則在指定列添加新列addprimaryke

28、y(列名)為表添加一個主鍵,如果主鍵已經(jīng)存在,則出現(xiàn)錯誤addforeignkey(列名)references表名(列名)為表添加一個外鍵alter列名setdefault默認值可以更改指定列默認值,change舊列名新列名first|after列名可以更改列類型和列名稱,如果原列的名字和新列的名字相同modify列名first|after列名和change的作用相同drop列名/可以刪除一列dropprimarykey/可以刪除主鍵engine類型名/可以改變表類型renameas新表名/可以將表名更改,舉例1:向people表中添加字段address2,類型為varchar,最大長度為10

29、0altertablepeopleaddaddress2varchar(100);舉例2:將people表中的name列默認值改為100:altertablepeoplealternamesetdefault100;舉例3:向student表增加“入學(xué)時間”列,其數(shù)據(jù)類型為日期型。altertablestudentaddscomedate;注:無論基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值。舉例4:將年齡的數(shù)據(jù)類型改為半字長整數(shù)。altertablestudentmodifysagesmallint;注:修改原有的列定義有可能會破壞已有數(shù)據(jù),MySQL運算符,算數(shù)運算符比較運算符邏輯運算符

30、位運算符,算數(shù)運算符,用字符串表示的數(shù)字在任何可能便于計算的地方都被自動地轉(zhuǎn)換為數(shù)字。當執(zhí)行轉(zhuǎn)換時,MySQL遵循兩個基本規(guī)則:如果第一位是數(shù)字的字符串被用于一個算數(shù)運算中,那么它被轉(zhuǎn)換為這個數(shù)字的值。如果一個包含字符和數(shù)字混合的字符串不能被正確的轉(zhuǎn)換為數(shù)字,那么它被轉(zhuǎn)換成0。,字符串自動轉(zhuǎn)換數(shù)字,比較運算符比較運算符允許我們對表達式的左邊和右邊進行比較。一個比較運算符的結(jié)果總是1(真),0(假),或是為NULL(不能確定)。比較運算符可以用于比較數(shù)字和字符串。數(shù)字作為浮點值比較,而字符串以不區(qū)分大小寫的方式進行比較(除非使用特殊的BINARY二進制關(guān)鍵字),對于運算符,如果表達式兩邊不相等返

31、回真值,相等返回假值。還可以比較字符串,BETWEEN運算符用于檢驗一個值(或者一個求值表達式)是否存在一個指定的范圍內(nèi):,運算符用于檢驗一個值(或者一個求值表達式)是否包含在一個指定的值集合中。,可以使用ISNULL或者ISNOTNULL運算符來測定是否為空??梢允褂锰厥獾倪\算符,MySQL稱為”NULL安全的等于”運算符。這意味著即使當包含在比較運算符中的表達式含有一個NULL值時,MySQL也會為比較運算符返回一個真值或假值。,如果想執(zhí)行通配符數(shù)據(jù)搜索,應(yīng)該使用LIKE運算符。它通過在表達式中允許使用專門的通配字符,可以找出與指定搜索字符串全部或部分匹配的記錄。,默認情況下,比較是不區(qū)分

32、大小寫的方式執(zhí)行的。然而,以前我們注意到,可以添加BINARY關(guān)鍵字讓MySQL執(zhí)行區(qū)分大小寫的比較。,MySQL數(shù)據(jù)庫中的通配符,“%”(百分號)代表任意長度(長度可以為0)的字符串舉例:a%b表示以a開頭,以b結(jié)尾的任意長度的字符串。如acb,addgb,ab等都滿足該匹配串“_”(下橫線)代表任意單個字符舉例:a_b表示以a開頭,以b結(jié)尾的長度為3的任意字符串。如acb,afb等都滿足該匹配串,REGEXP運算符允許我們執(zhí)行更復(fù)雜的字符串比較運算,在這里使用UNIX正則表達式。,邏輯運算符,位運算符,如下表所示:“”表示按位取反。“”表示異或。,插入記錄操作,語法:敘述:如果表名后面沒寫

33、字段名,則默認是向所有的字段添加值,另外字符串值應(yīng)該用或“”引號括起來舉例1:向people表中添加一條記錄:insertintopeople(name,age)values(“zhangsan”,20);,INSERTINTO列名VALUES,插入案例,創(chuàng)建一張學(xué)生信息表,往表中插入數(shù)據(jù)createtablestudents(scodeintnotnullauto_increment,snamevarchar(20)notnull,saddressvarchar(20)default未知,sgradeint,semailvarchar(20),ssexbit,primarykey(scode

34、);,插入數(shù)據(jù)行1,注意事項1:每次插入一行數(shù)據(jù),不可能只插入半行或者幾列數(shù)據(jù),因此,插入的數(shù)據(jù)是否有效將按照整行的完整性的要求來檢驗;,插入數(shù)據(jù)行2,注意事項2:每個數(shù)據(jù)值的數(shù)據(jù)類型、精度和小數(shù)位數(shù)必須與相應(yīng)的列匹配;,插入數(shù)據(jù)行3,注意事項4:如果在設(shè)計表的時候就指定了某列不允許為空,則必須插入數(shù)據(jù);,插入數(shù)據(jù)行4,注意事項6:具有缺省值的列,可以使用DEFAULT(缺省)關(guān)鍵字來代替插入的數(shù)值,INSERTINTOStudents(SName,SAddress,SGrade,SEmail,SSEX)VALUES(張青裁,DEFAULT,6,ZQCS,0),插入多行數(shù)據(jù),INSERTINT

35、O(列名)VALUES(),(),(),插入多行數(shù)據(jù),INSERTINTO(列名)SELECTFROM,學(xué)生、課程、成績插入數(shù)據(jù),學(xué)生信息95001,洛燕妮,女,20,信息系95002,歐陽炎,男,19,計算機系95003,何東升,男,21,美術(shù)系95004,劉晨,男,18,計算機系95005,沙明華,女,21,美術(shù)系95006,歐陽寶寶,男,19,美術(shù)系課程信息1,JAVA2,C3,.NET成績信息95001,1,9895002,1,5095004,1,7095003,4,9595005,4,4095006,4,7795001,2,8095002,3,5895006,2,70,更改記錄操作,

36、語法:敘述:where子句是判斷語句,用來設(shè)定條件,限制只更新匹配的行,如果不帶where子句,則更新所有行數(shù)據(jù)。舉例:將student表中的所有學(xué)生名稱為Alex的改為Tom:updatestudentsetsname=Tomwheresname=Alex;,UPDATESETWHERE,更新數(shù)據(jù)行,刪除記錄操作,語法:敘述:此語句刪除表中的行,如果不帶where子句,則刪除整個表中的記錄,但是表不被刪除。舉例:刪除student表中的所有年齡小于18歲的記錄:deletefromstudentwheresage18;,DELETEFROMWHERE,補充說明,刪除學(xué)生編號為95005的學(xué)生

37、信息包括成績信息deletefromstudent,scusingstudent,scwherestudent.sno=sc.studentidandstudent.sno=95005;說明:表和字段的引用方式有兩種:絕對引用和相對引用絕對引用:數(shù)據(jù)庫名.表名(.字段名)相對引用:表名.(字段名),刪除數(shù)據(jù)行,什么是查詢?,客戶程序,SQLSERVER,SELECT*FROMSALES,查詢產(chǎn)生一個虛擬表,看到的是表形式顯示的結(jié)果,但結(jié)果并不真正存儲,每次執(zhí)行查詢只是現(xiàn)從數(shù)據(jù)表中提取數(shù)據(jù),并按照表的形式顯示出來,怎么查的?,SQL語法,SELECTDISTINCT|DISTINCTROW|AL

38、Lselect_expression,.FROMtable_referencesWHEREwhere_definitionGROUPBYcol_name,.HAVINGwhere_definitionORDERBYunsigned_integer|col_name|formulaASC|DESC,.LIMIToffset,rowsPROCEDUREprocedure_name,查詢記錄操作,from子句:指定查詢數(shù)據(jù)的表where子句:查詢數(shù)據(jù)的過濾條件groupby子句:對匹配where子句的查詢結(jié)果進行分組having子句:對分組后的結(jié)果進行條件限制orderby子句:對查詢結(jié)果結(jié)果進行排

39、序,后面跟desc降序或asc升序(默認)。limit子句:對查詢的顯示結(jié)果限制數(shù)目procedure子句:查詢存儲過程返回的結(jié)果集數(shù)據(jù),查詢舉例,SELECTFROMWHEREORDERBYASC或DESC,舉例1:查詢?nèi)w學(xué)生的學(xué)號與姓名。selectsno,snamefromstudent;舉例2:查詢?nèi)w學(xué)生的詳細記錄。selectsno,sname,ssex,sage,sdeptfromstudent;或select*fromstudent;舉例3:查全體學(xué)生的姓名及其出生年份。selectsname,2008-sagefromstudent;舉例4:查詢?nèi)w學(xué)生的姓名、出生年份和所

40、有系,要求用小寫字母表示所有系名。selectsname,yearofbirth:,2008-sage,islower(sdept)fromstudent;舉例5:查詢選修了課程的學(xué)生學(xué)號(去掉重復(fù)的記錄)selectdistinctstudentidfromsc;,舉例6:查詢?nèi)w學(xué)生的學(xué)號與姓名,用中文顯示列名。selectsnoas編號,snameas姓名fromstudent;舉例7:給表設(shè)置別名。selects.sno,s.snamefromstudentass;舉例8:查詢年齡在20以下的學(xué)生的姓名。selectsnamefromstudentwheresage70;,在WHERE

41、子句中使用謂詞:BETWEENAND:在兩數(shù)之間NOTBETWEENAND:不在兩數(shù)之間IN:是否在特定的集合里(枚舉)NOTIN:與上面相反LIKE:是否匹配于一個模式ISNULL(為空的)或ISNOTNULL(不為空的)REGEXP:檢查一個值是否匹配一個常規(guī)表達式。,舉例17:查詢年齡在2023歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡。selectsname,sdept,sagefromstudentwheresagebetween20and23;舉例18:查詢年齡不在2023歲之間的學(xué)生姓名、系別和年齡。selectsname,sdept,sagefromstudentwheresagenotbetween20and23;舉例19:查詢信息系、美術(shù)系和計算機系學(xué)生的姓名和性別。selectsname,ssexfromstudentwheresdeptin(信息系,美術(shù)系,計算機系);,舉例20:查詢學(xué)號為95001的學(xué)生的詳細情況。select*fromstud

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論