MySQL數(shù)據(jù)庫語言及其編程_第1頁
MySQL數(shù)據(jù)庫語言及其編程_第2頁
MySQL數(shù)據(jù)庫語言及其編程_第3頁
MySQL數(shù)據(jù)庫語言及其編程_第4頁
MySQL數(shù)據(jù)庫語言及其編程_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、項(xiàng)目3 MySQL數(shù)據(jù)庫語言及其編程 當(dāng)面對(duì)一個(gè)陌生的數(shù)據(jù)庫時(shí),通常需要一種方式與它進(jìn)行交互,以完成用戶所需要的各種工作,這個(gè)時(shí)候,就要用到SQL語言了。本項(xiàng)目旨在通過實(shí)際操作,讓讀者學(xué)會(huì)MySQL的SQL語言結(jié)構(gòu)以及數(shù)據(jù)庫與表基本語句的使用,具體任務(wù)包括:(1)MySQL中常量、變量、運(yùn)算符、函數(shù)的使用。(2)學(xué)會(huì)使用SQL語句創(chuàng)建數(shù)據(jù)庫和表。(3)學(xué)會(huì)使用SQL語句對(duì)數(shù)據(jù)庫表進(jìn)行插入、修改和刪除數(shù)據(jù)操作。 本項(xiàng)目詳細(xì)介紹了MySQL中數(shù)據(jù)類型、常量、變量、運(yùn)算符、函數(shù)、表達(dá)式的使用。MySQL安裝好以后,首先需要?jiǎng)?chuàng)建數(shù)據(jù)庫,這是使用MySQL各種功能的前提,數(shù)據(jù)表是數(shù)據(jù)庫中最基本也是最重要

2、的操作對(duì)象,是數(shù)據(jù)存儲(chǔ)的基本單位,對(duì)數(shù)據(jù)庫中的表操作才能完成數(shù)據(jù)的錄入刪除修改。因此本模塊將詳細(xì)介紹MySQL語言中的數(shù)據(jù)庫創(chuàng)建、查看、刪除語句,數(shù)據(jù)庫表的創(chuàng)建、修改、刪除語句,表記錄的插入、修改、更新、刪除語句的詳細(xì)使用。 MySQL數(shù)據(jù)庫語言簡介 SQL是 Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫,最早是IBM的圣約瑟研究實(shí)驗(yàn)室為其關(guān)系數(shù)據(jù)庫管理系統(tǒng)System R開發(fā)的一種查詢語言,它的前身是Square語言。 如今無論是像Oracle、Sybase、Informix、SQL Server這些大型的數(shù)據(jù)庫管理系統(tǒng),還是像Visual Foxpro、Pow

3、erbuilder這些PC上常用的數(shù)據(jù)庫開發(fā)系統(tǒng),都支持SQL語言作為查詢語言。 與其它計(jì)算機(jī)語言相似,MySQL數(shù)據(jù)庫語言包含若干MySQL語句、常量、變量、函數(shù)、運(yùn)算符和表達(dá)式。有關(guān)MySQL數(shù)據(jù)庫語言的幾點(diǎn)說明如下:MySQL語句以分號(hào)結(jié)束,并且SQL處理器忽略空格、制表符和回車符。箭頭(-)代表MySQL語句沒有輸入完。取消MySQL語句使用(C)。Windows下MySQL語句關(guān)鍵字和函數(shù)名不區(qū)分大小寫,但Linux區(qū)分。使用函數(shù)時(shí),函數(shù)名與其后的括號(hào)之間不能有空格。(2)MySQL數(shù)據(jù)庫操作 創(chuàng)建數(shù)據(jù)庫 命令格式:CREATE DATABASE|SCHEMA IF NOT EXIS

4、TS Db_NameCreate_Specification , Create_Specification .; 其中Create_Specification的格式為:DEFAULTCHARACTER SET Charset_Name | DEFAULT COLLATE Collation_Name 提醒:語句中“ ”內(nèi)的內(nèi)容為可選項(xiàng),其它參數(shù)的含義如下:Db_Name:數(shù)據(jù)庫名(不區(qū)分大小寫)。IF NOT EXISTS:創(chuàng)建數(shù)據(jù)庫前先判斷,只有該數(shù)據(jù)庫目前尚不存在時(shí)才執(zhí)行CREATE database操作。如果數(shù)據(jù)庫已經(jīng)存在,發(fā)生一個(gè)錯(cuò)誤。DEFAULT:指定默認(rèn)值。CHARACTER S

5、ET:指定數(shù)據(jù)庫字符集,Charset_Name為字符集名稱。COLLATE:指定字符集的校對(duì)規(guī)則,Collation_Name為校對(duì)規(guī)則名稱。【例3.1】創(chuàng)建數(shù)據(jù)庫Xsks。MySQL CREATE DATABASE Xsks;Query OK, 1 Row Affected MySQL不允許兩個(gè)數(shù)據(jù)庫使用相同的名字,使用IF NOT EXISTS從句可以不顯示錯(cuò)誤信息(假設(shè)test已經(jīng)存在),例如:MySQLcreate database IF NOT EXISTS test;Query OK, 1 Row Affected 查看數(shù)據(jù)庫 一個(gè)MySQL服務(wù)實(shí)例可以同時(shí)承載多個(gè)數(shù)據(jù)庫,查看當(dāng)

6、前MySQL服務(wù)實(shí)例上所有數(shù)據(jù)庫的語句格式為:SHOW DATABASES LIKE Wild;其中:LIKE Wild中的Wild字符串可使用SQL的“%”和“_”通配符?!纠?.2】查看當(dāng)前MySQL服務(wù)實(shí)例上所有數(shù)據(jù)庫。mysql SHOW DATABASES; 選擇數(shù)據(jù)庫 在進(jìn)行數(shù)據(jù)庫操作前,必須選定被操作的數(shù)據(jù)庫,可用USE命令完完成,其格式為:USE db_name;提醒:該語句也可以用來從一個(gè)數(shù)據(jù)庫“跳轉(zhuǎn)”到另一個(gè)數(shù)據(jù)庫,用create database創(chuàng)建的數(shù)據(jù)庫不會(huì)自動(dòng)成為當(dāng)前數(shù)據(jù)庫,需要用USE語句指定當(dāng)前數(shù)據(jù)庫。【例3.3】指定當(dāng)前數(shù)據(jù)庫為Xsks。mysql USE X

7、sks;Database changed 刪除數(shù)據(jù)庫 刪除數(shù)據(jù)庫是將已存在的數(shù)據(jù)庫從磁盤上清除,該數(shù)據(jù)庫的所有表(包括其中的數(shù)據(jù))也將永久刪除,所以要慎用。格式:DROP DATABASE IF EXISTS db_name; 其中:IF EXISTS子句可避免刪除不存在的數(shù)據(jù)庫時(shí)提示MySQL錯(cuò)誤信息?!纠?.4】刪除數(shù)據(jù)庫test。mysql DROP DATABASE test;Query OK, 0 rows affected修改數(shù)據(jù)庫命令格式:ALTER DATABASE | SCHEMA db_name alter_specification;其中:alter_specificat

8、ion的格式如下:DEFAULT CHARACTER SET charset_name|DEFAULT COLLATE collation_name說明:alter database用于更改數(shù)據(jù)庫的全局特性,這些特性儲(chǔ)存在數(shù)據(jù)庫目錄中的db.opt文件中。用戶必須具有對(duì)數(shù)據(jù)庫進(jìn)行修改的權(quán)限,才可以使用該命令。如果語句中數(shù)據(jù)庫名稱忽略,則修改當(dāng)前數(shù)據(jù)庫?!纠?.5】修改數(shù)據(jù)庫Xsks(假設(shè)Xsks已經(jīng)創(chuàng)建)的默認(rèn)字符集和校對(duì)規(guī)則。mysql ALTER DATABASE XsksDefault Character Set Gb2312Default Collate Gb2312_Chinese_

9、Ci;Query OK, 1 row affected(3)MySQL數(shù)據(jù)表操作 創(chuàng)建數(shù)據(jù)表命令格式:CREATE TEMPORARY TABLE IF NOT EXISTS tbl_name (column_definition,.|index_definition) table_option select_statement;參數(shù)說明如下:TEMPORARY:創(chuàng)建臨時(shí)表(不加TEMPORARY創(chuàng)建的表稱為持久表,持久表一旦創(chuàng)建將一直存在,多個(gè)用戶或者多個(gè)應(yīng)用程序可以同時(shí)使用持久表),臨時(shí)表的生命周期短,而且只能對(duì)創(chuàng)建它的用戶可見,當(dāng)斷開與該數(shù)據(jù)庫的連接時(shí),MySQL會(huì)自動(dòng)刪除臨時(shí)表。IF

10、NOT EXISTS:建表前先判斷,用以避免出現(xiàn)表已存在無法再新建錯(cuò)誤。table_name:要?jiǎng)?chuàng)建的表的表名。該表名必須符合標(biāo)志符規(guī)則,如果表名中包含MySQL保留字,則必須用單引號(hào)括起來。column_definition:列定義,包括列名、數(shù)據(jù)類型,可能還有一個(gè)空值聲明和一個(gè)完整性約束。index_definition:表索引項(xiàng)定義,主要定義表的索引、主鍵、外鍵等,具體定義將在第5模塊中討論。table_option:用于描述表的選項(xiàng)。select_statement:可以在CREATE TABLE語句的末尾添加一個(gè)SELECT語句,在一個(gè)表的基礎(chǔ)上創(chuàng)建表。column_definiti

11、on:用于列定義,其格式如下:col_name type NOT NULL | NULL DEFAULT default_valueAUTO_INCREMENT UNIQUE KEY | PRIMARY KEYCOMMENT string reference_definition【例3.6】假設(shè)已經(jīng)創(chuàng)建了數(shù)據(jù)庫Xsks,在該數(shù)據(jù)庫中創(chuàng)建學(xué)生情況表student。mysql USE xsks;mysql CREATE TABLE student (zkzh char(20) not null primary key, namechar(8) not null,majorchar(20)null,

12、birth date not null, sex tinyint(1)not null default 1, scoretinyint(1) null,addresschar(60)not null,phone char(11)not null,picturelongblobnull,note text null) Engine=Innodb; 在例3.6中,每個(gè)字段都包含附加約束或修飾符,這些可以用來增加對(duì)所輸入數(shù)據(jù)的約束?!癙RIMARY KEY”表示將“學(xué)號(hào)”字段定義為主鍵?!癉EFAULT 1”表示“性別”的默認(rèn)值為1?!癊NGINE=InnoDB”表示采用的存儲(chǔ)引擎是InnoDB,I

13、nnoDB是MySQL在Windows平臺(tái)默認(rèn)的存儲(chǔ)引擎,所以“ENGINE=InnoDB”可以省略。 修改數(shù)據(jù)表 用ALTER TABLE語句更改數(shù)據(jù)表的結(jié)構(gòu)。如增加或刪減列、創(chuàng)建或取消索引、更改原字段的類型、重新命名列或表、更改表的評(píng)注和表的類型。 命令格式:ALTER IGNORE TABLE tbl_name alter_specification; 參數(shù)說明:tb1_name:表名。IGNORE:是MySQL相對(duì)于標(biāo)準(zhǔn)SQL的擴(kuò)展。若在修改后的新表中存在重復(fù)關(guān)鍵字,如果沒有指定IGNORE,當(dāng)重復(fù)關(guān)鍵字錯(cuò)誤發(fā)生時(shí)操作失敗。如果指定了IGNORE,則對(duì)于有重復(fù)關(guān)鍵字的行只使用第一行,其

14、他有沖突的行被刪除。alter_specification:用于指定修改的內(nèi)容,其格式如下: ADD COLUMN column_definition FIRST|AFTER col_name | ALTER COLUMN col_name SET DEFAULT literal | DROP DEFAULT | CHANGE COLUMN old_col_name column_definition | MODIFY COLUMN column_definition FIRST | AFTER col_name | DROP COLUMN col_name/*刪除列*/ | RENAME T

15、O new_tbl_name/*重命名該表*/ | ORDER BY col_name/*排序*/ | CONVERT TO CHARACTER SET charset_name COLLATE collation_name | DEFAULT CHARACTER SET charset_name COLLATE collation_name | table_options 其中的參數(shù)含義如下:ADD COLUMN子句:向表中增加新列。column_definition:定義列的數(shù)據(jù)類型和屬性。col_name:指定的列名。FIRST | AFTER col_name:表示在某列的前或后添加,

16、不指定則添加到最后。ALTER COLUMN子句:修改表中指定列的默認(rèn)值。CHANGE COLUMN子句:修改列的名稱。重命名時(shí),需給定舊的和新的列名稱和列當(dāng)前的類型,old_col_name表示舊的列名。column_definition中定義新的列名和當(dāng)前數(shù)據(jù)類型。MODIFY COLUMN子句:修改指定列的類型。DROP子句:從表中刪除列或約束。RENAME子句:修改該表的表名,new_tbl_name是新表名。ORDER BY子句:用于在創(chuàng)建新表時(shí),讓各行按一定的順序排列。注意,在插入和刪除后,表不會(huì)仍保持此順序。在對(duì)表進(jìn)行了大的改動(dòng)后,通過使用此選項(xiàng),可以提高查詢效率。在有些情況下,

17、如果表按列排序,對(duì)于MySQL來說,排序可能會(huì)更簡單。table_options:修改表選項(xiàng),具體定義與CREATE TABLE語句中一樣。 在MySQL中,可以在一個(gè)ALTER TABLE語句里寫入多個(gè)ADD、ALTER、DROP和CHANGE子句,中間用逗號(hào)分開。【例3.7】假設(shè)已經(jīng)在數(shù)據(jù)庫Xsks中創(chuàng)建了表student,向表中增加新列“籍貫”。mysql ALTER TABLE student ADD COLUMN 籍貫 char(20) NULL ;【例3.8】將數(shù)據(jù)庫Xsks中student表的列“name”名稱修改為“姓名”。mysql ALTER TABLE student C

18、HANGE name 姓名 char(8);【例3.9】將數(shù)據(jù)庫Xsks中student表的列“score”的數(shù)據(jù)類型改為INT。mysql ALTER TABLE student MODIFY score INT NOT NULL;【例3.10】將數(shù)據(jù)庫Xsks中student表的“note”列刪除,并增加“age”列。mysql USE Xsks;mysql ALTER TABLE student ADD age Tinyint NULL , DROP COLUMN note;【例3.11】將數(shù)據(jù)庫Xsks中student表test改名為exam。mysql ALTER TABLE tes

19、t RENAME TO exam ; 此外,還可以用RENAME TABLE語句來更改表的名字,其格式為:RENAME TABLE tbl_name TO new_tbl_name , tbl_name2 TO new_tbl_name2; 查看表結(jié)構(gòu) 在創(chuàng)建好數(shù)據(jù)表之后,可用DESCRIBE和SHOW CREATE TABLE語句查看表結(jié)構(gòu)。DESCRIBE的命令格式:DESCRIBE tb1_name col_name; 其中:參數(shù)col_name可以是單列的名稱,也可以是包含“%”和“_”通配符的字符串?!纠?.12】查看表exam的表結(jié)構(gòu)。mysql DESCRIBE exam;+-+

20、-+-+-+-+-+| Field | Type | Null | Key | Default | Extra |+-+-+-+-+-+-+| testid | char(4) | NO | PRI | NULL | | school | char(10) | NO | | NULL | | classroom | char(16) | NO | | NULL | | teacher | char(4) | NO | | NULL | |+-+-+-+-+-+-+4 rows in set此外,也可以用SHOW COLUMNS FROM table_name FROM database_nam

21、e或SHOW COLUMNS FROM database_name.table_name來查看表中各列的信息。 刪除數(shù)據(jù)表 刪除數(shù)據(jù)表就是將數(shù)據(jù)庫中已經(jīng)存在的表從數(shù)據(jù)庫中刪除,注意,在刪除之前,最好對(duì)表中的數(shù)據(jù)做個(gè)備份,以免造成無法挽回的后果。刪除數(shù)據(jù)庫表的命令格式:DROP TEMPORARY TABLE IF EXISTS tbl_name , tbl_name . 其中,tb1_name是要被刪除的表名。IF EXISTS短語可以避免要?jiǎng)h除的表不存在時(shí)出現(xiàn)錯(cuò)誤信息。這個(gè)命令將表的描述、表的完整性約束、索引及和表相關(guān)的權(quán)限等都全部刪除?!纠?.13】刪除Xsks數(shù)據(jù)庫的表test。mysq

22、l USE Xsks;mysql DROP TABLE IF EXISTS test; 復(fù)制數(shù)據(jù)表命令格式:CREATE TEMPORARY TABLE IF NOT EXISTS tbl_name ( ) LIKE old_tbl_name | AS (select_statement);說明:使用LIKE關(guān)鍵字創(chuàng)建一個(gè)與old_table_name表相同結(jié)構(gòu)的新表,列名、數(shù)據(jù)類型、空指定和索引也將復(fù)制,但是表的內(nèi)容不會(huì)復(fù)制,因此創(chuàng)建的新表是一個(gè)空表。使用AS關(guān)鍵字可以復(fù)制表的內(nèi)容,但索引和完整性約束是不會(huì)復(fù)制的。select_statement表示一個(gè)表達(dá)式,例如,可以是一條SELECT語

23、句。ON DUPLICATE KEY UPDATE:使用此選項(xiàng)插入行后,若導(dǎo)致UNIQUE KEY或PRIMARY KEY出現(xiàn)重復(fù)值,則根據(jù)UPDATE后的語句修改舊行(使用此選項(xiàng)時(shí)DELAYED被忽略)。SET子句:SET子句用于給列指定值?!纠?.14】 復(fù)制數(shù)據(jù)庫Xsks的表student,新表名為student_1。mysql CREATE TABLE student_1 LIKE student ;【例3.15】 創(chuàng)建表student的一個(gè)名為student_2的拷貝,并且復(fù)制其內(nèi)容。mysql CREATE TABLE student_2 AS (SELECT * FROM stu

24、dent);(4)MySQL表記錄操作 插入新記錄在MySQL中,向表中添加新記錄的命令是INSERT,其格式為: INSERT LOW_PRIORITY | DELAYED | HIGH_PRIORITY IGNORE INTO tbl_name (col_name,.) VALUES (expr | DEFAULT,.),(.),. | SET col_name=expr | DEFAULT, . ON DUPLICATE KEY UPDATE col_name=expr, . ;參數(shù)說明:tb1_name:被操作的表名。col_name:需要插入數(shù)據(jù)的列名。VALUES子句:包含各列需要

25、插入的數(shù)據(jù)清單,數(shù)據(jù)的順序要與列的順序相對(duì)應(yīng)。LOW_PRIORITY:可以使用在INSERT、DELETE和UPDATE等操作中,當(dāng)原有客戶端正在讀取數(shù)據(jù)時(shí),延遲操作的執(zhí)行,直到?jīng)]有其他客戶端從表中有新的讀取請求(僅適用于MyISAM、MEMORY和ARCHIVE表)。讀取為止。DELAYED:若使用此關(guān)鍵字,則服務(wù)器會(huì)把待插入的行放到一個(gè)緩沖器中,而發(fā)送INSERT DELAYED語句的客戶端會(huì)繼續(xù)運(yùn)行。HIGH_PRIORITY:可用在SELECT和INSERT操作中,使操作優(yōu)先執(zhí)行。IGNORE:使用此關(guān)鍵字,在執(zhí)行語句時(shí)出現(xiàn)的錯(cuò)誤就會(huì)被當(dāng)做警告處理?!纠?.16】 向Xsks數(shù)據(jù)庫的

26、表student(表中列包括zkzh、name、major、birth、sex、score、address、phone、picture、note)中插入如下的一行:140203242,張紅,金融,1997-04-10,0,81,新鄉(xiāng)市建設(shè)路16號(hào)院NULL,NULL使用下列語句:mysql USE xsks;mysql INSERT INTO student VALUES(140203242,張紅,金融,1997-04-10,0,81,新鄉(xiāng)市建設(shè)路16號(hào)院NULL,NULL);Query OK, 1 row affected也可以使用SET子

27、句來實(shí)現(xiàn):mysql INSERT INTO student SET zkzh=140203243,name=張紅, major=金融, birth=1997-04-10,sex=0,score=81, address=新鄉(xiāng)市建設(shè)路16號(hào)院, phoneQuery OK, 1 row affected 另外,MySQL還支持圖片的存儲(chǔ),圖片一般可以以路徑的形式來存儲(chǔ)。也可以直接插入圖片本身,只要用LOAD_FILE函數(shù)即可?!纠?.17】向student表中插入一行數(shù)據(jù):140203244,李亮,英語,1998-02-09,1,85,null,/p>

28、, picture.jpg, NULL。照片路徑為D: IMAGE picture.jpg。使用如下語句:mysql INSERT INTO student VALUES(140203244,李亮,英語,1998-02-09,1,85,null, D:IMAGEpicture.jpg,NULL);下列語句是直接存儲(chǔ)圖片本身:mysql INSERT INTO student VALUES(140203244,李亮,英語,1998-02-09,1,85,null, LOAD_FILE(D:IMAGEpicture.jpg),NULL); 更新表

29、記錄MySQL使用UPDATE命令更新表記錄,命令的格式:UPDATE LOW_PRIORITY IGNORE tbl_name SET col_name1=expr1 , col_name2=expr2 . WHERE where_definition ORDER BY . LIMIT row_count;說明:SET子句:根據(jù)WHERE子句中指定的條件對(duì)符合條件的數(shù)據(jù)行進(jìn)行更新。若語句中不設(shè)定WHERE子句,則更新所有行。col_name1、col_name2為要更新列值的列名,expr1、expr2可以是常量、變量或表達(dá)式??梢酝瑫r(shí)更新所在數(shù)據(jù)行的多個(gè)列值,中間用逗號(hào)隔開?!纠?.18】

30、 將Xsks數(shù)據(jù)庫的student表中的所有學(xué)生的score都增加5。將姓名為“劉圓圓”的同學(xué)的專業(yè)改為“市場營銷”,電話號(hào)改為。mysql UPDATE student SET score = score+5;mysql UPDATE student SET major=市場營銷, phoneWHERE name=劉圓圓;Query OK, 1 row affectedRows matched: 1 Changed: 1 Warnings: 0更新多個(gè)表,基本SQL語法格式為:UPDATE LOW_PRIORITY IGNORE table

31、_referencesSET col_name1=expr1 , col_name2=expr2 . WHERE where_definition說明:table_references中包含了多個(gè)表的聯(lián)合,各表之間用逗號(hào)隔開。【例3.19】表exam和表examinfo中有共同字段testid,并且在表exam中testid為主鍵。當(dāng)表exam和表examinfo中字段testid的值相同并且testid值為1001時(shí),將表exam中對(duì)應(yīng)的teacher值更新為“孟陽”,將表examinfo中對(duì)應(yīng)的course值更新為“java”。mysql UPDATE exam, examinfo SET

32、 exam.teacher=孟陽, examinfo.course=java WHERE exam.testid=examinfo.testid and exam.testid=1001;Query OK, 0 rows affectedRows matched: 5 Changed: 0 Warnings: 0 刪除表記錄從數(shù)據(jù)表中刪除記錄通常用DELETE命令,其格式為:DELETE LOW_PRIORITY QUICK IGNORE FROM tbl_name WHERE where_definition ORDER BY . LIMIT row_count;參數(shù)說明:QUICK:快速刪

33、除。FROM:用于說明從何處刪除數(shù)據(jù),tbl_name為要?jiǎng)h除數(shù)據(jù)的表名。WHERE:where_definition中的內(nèi)容為指定的刪除條件。如果省略WHERE子句則刪除該表的所有行。ORDER BY:各行按照子句中指定的順序進(jìn)行刪除,此子句只在與LIMIT聯(lián)用時(shí)才起作用。LIMIT:被刪除的行的最大值?!纠?.20】將數(shù)據(jù)庫Xsks的student表中姓名為“李光華”的記錄刪除。mysql USE Xsks;mysql DELETE FROM student WHERE name=李光華;【例3.21】將Xsks數(shù)據(jù)庫的student表中成績小于60分的所有行刪除。mysql USE Xs

34、ks; mysql DELETE FROM student WHERE score60; 如果想刪除表中的所有記錄,還可用TRUNCATE TABLE語句。由于TRUNCATE TABLE語句將刪除表中的所有數(shù)據(jù),且無法恢復(fù),因此使用時(shí)必須十分小心。TRUNCATE TABLE的格式:TRUNCATE TABLE table-name;(5)MySQL常量 常量是指在程序運(yùn)行過程中值不變的量。按照數(shù)據(jù)類型,可以將常量分為字符串常量、數(shù)值常量、十六進(jìn)制常量、日期時(shí)間常量、二進(jìn)制常量以及NULL。 字符串常量 字符串常量是指用單引號(hào)或雙引號(hào)括起來的字符序列。大多數(shù)編程語言(例如Java、C)使用雙

35、引號(hào)表示字符串,為了便于區(qū)別,在MySQL數(shù)據(jù)庫中推薦使用單引號(hào)表示字符串。字符串常量分為ASCII字符串常量和Unicode字符串常量。 在字符串中不僅可以使用普通的字符,也可使用轉(zhuǎn)義符(如表3.1所示)。表3.1 字符串轉(zhuǎn)移序列表序列含義0一個(gè)ASCII 0 (NUL)字符N一個(gè)換行符R一個(gè)回車符(Windows中使用RN作為新行標(biāo)志)T一個(gè)定位符B一個(gè)退格符Z一個(gè)ASCII 26字符(CTRL+Z)一個(gè)單引號(hào)(“”)一個(gè)雙引號(hào)(“”)一個(gè)反斜線(“”)%一個(gè)“%”符。它用于在正文中搜索“%”的文字實(shí)例_一個(gè)“_”符。它用于在正文中搜索“_”的文字實(shí)例 數(shù)值常量 數(shù)值常量可以分為整數(shù)常量和

36、小數(shù)常量。整數(shù)常量例如:2015,+14,214。浮點(diǎn)數(shù)常量是使用小數(shù)點(diǎn)的數(shù)值常量,例如:99.5,10.5E3,0.4E5。 時(shí)間日期常量 時(shí)間日期常量是一個(gè)符合特殊格式的字符串。用單引號(hào)將表示日期時(shí)間的字符串括起來構(gòu)成。日期型常量包括年、月、日,數(shù)據(jù)類型為DATE,表示為“2015-06-17”這樣的值。時(shí)間型常量包括小時(shí)數(shù)、分鐘數(shù)、秒數(shù)及微秒數(shù),數(shù)據(jù)類型TIME,表示為“12:30:43.00013”這樣的值。 MySQL還支持日期/時(shí)間的組合,數(shù)據(jù)類型為DATETIME或TIMESTAMP,如“2015-06-03 12:27:43”。需要特別注意的是,MySQL 是按年-月-日的順序

37、表示日期的。中間的間隔符“-”也可以使用如“”、“”或“%”等特殊符號(hào)。 布爾常量 布爾常量只包含:Ture和False。False代表“0”,True代表“1”。 二進(jìn)制常量 二進(jìn)制常量由數(shù)字“0”和“1”組成,二進(jìn)制常量表示方法:前綴為“B”,后面緊跟著一個(gè)“二進(jìn)制”字符串。第二種:前綴為“0 x”,后面緊跟一個(gè)“十六進(jìn)制數(shù)”(不用引號(hào))。 十六進(jìn)制常量 十六進(jìn)制常量由數(shù)字“0”到“9”及字母“A”到“F”組成(字母不分大小寫)。十六進(jìn)制常量有兩種表示方法。第一種:前綴為大寫字母“X”或小寫字母“x”,后面緊跟一個(gè)“十六進(jìn)制”字符串; NULL常量 NULL值可適用于各種字段類型,它通常用

38、來表示“值不確定”、“沒有值”等含義。并且不同于數(shù)字類型的“0”或字符串類型的空字符串。 格式化函數(shù),如:數(shù)據(jù)內(nèi)容格式化函數(shù):FORMAT(X, D),將數(shù)字X的格式寫成#,#,#.#格式,即保留小數(shù)點(diǎn)后D位,而第D位的保留方式為四舍五入,然后將結(jié)果以字符串的形式返回。若D為0,則返回結(jié)果不帶有小數(shù)點(diǎn),或不含小數(shù)部分。(6)MySQL變量 系統(tǒng)變量 在MySQL中,系統(tǒng)變量(以開頭)用于定義當(dāng)前MySQL服務(wù)實(shí)例的屬性、特征。系統(tǒng)變量分為全局系統(tǒng)變量(Global)與會(huì)話系統(tǒng)變量(Session)。 用戶自定義變量 與其它編程語言相似,在用MySQL語言進(jìn)行編程時(shí),使用用戶自定義變量存儲(chǔ)“臨時(shí)

39、結(jié)果”。在MySQL中,用戶自定義變量分為用戶會(huì)話變量(以開頭)以及局部變量(不以開頭)。用戶自定義變量可以由當(dāng)前字符集的字符、“.”、“_”和“$”組成,當(dāng)變量名中需要包含一些特殊符號(hào)(如空格、#等)時(shí),可以使用雙引號(hào)或單引號(hào)將整個(gè)變量括起來。(7)MySQL函數(shù) 數(shù)學(xué)函數(shù),如:絕對(duì)值函數(shù):ABS(X),返回X的絕對(duì)值。 聚合函數(shù),如:求和函數(shù):SUM(DISTINCT Expr ),返回Expr的總和。 字符串函數(shù),如:字符串長度函數(shù):CHAR_LENGTH(str)或LENGTH(str),返回值為字符串str的長度。例如CHAR_LENGTH(你是)=2,但LENGTH(你是)=6。

40、日期和時(shí)間函數(shù),如:日期函數(shù):CURDATE()、CURRENT_DATE(),按照年月日格式返回當(dāng)前日期。 加密函數(shù),如:密碼字符串生成函數(shù):PASSWORD(Str):創(chuàng)建一個(gè)經(jīng)過加密的密碼字符串。(8)MySQL運(yùn)算符 算術(shù)運(yùn)算符 算術(shù)運(yùn)算符有:+(加)、(減)、*(乘)、/(除)、%(求模)和DIV(整除)等6種運(yùn)算。注意就+(加)、(減)、*(乘)而言, 若兩個(gè)參數(shù)均為正數(shù),則其計(jì)算結(jié)果的精確度為BIGINT (64比特),若其中一個(gè)參數(shù)為無符號(hào)整數(shù),而其它參數(shù)也是整數(shù), 則結(jié)果為無符號(hào)整數(shù)。 比較運(yùn)算符 比較運(yùn)算符(又稱關(guān)系運(yùn)算符),用于比較兩個(gè)表達(dá)式的值,其運(yùn)算結(jié)果為邏輯值,可以

41、為三種之一:1(真)、0(假)及 NULL(不確定)。MySQL的比較運(yùn)算符以及含義如表3.2所示。表3.2 MySQL的比較運(yùn)算符以及含義一覽表運(yùn)算符運(yùn)算符含義含義運(yùn)算符運(yùn)算符含義含義=等于大于、!=不等于小于相等或都等于空=大于等于 邏輯運(yùn)算符 邏輯運(yùn)算符用于對(duì)某個(gè)條件進(jìn)行測試,運(yùn)算結(jié)果為TRUE(1)或FALSE(0)。MySQL提供的邏輯運(yùn)算符及其運(yùn)算規(guī)則如表3.3所示。表3.3 邏輯運(yùn)算符及其運(yùn)算規(guī)則一覽表運(yùn)算符運(yùn)算符運(yùn)算規(guī)則運(yùn)算規(guī)則運(yùn)算符運(yùn)算符運(yùn)算規(guī)則運(yùn)算規(guī)則NOT或!邏輯非OR或|邏輯或AND或&邏輯與XOR邏輯異或 位運(yùn)算符 位運(yùn)算符在兩個(gè)表達(dá)式之間執(zhí)行二進(jìn)制位操作,這兩個(gè)表達(dá)

42、式的類型可為整型或與整型兼容的數(shù)據(jù)類型,如字符型(不能為Image類型)。位運(yùn)算符及其運(yùn)算規(guī)則如表3.4所示。表3.4 位運(yùn)算符及其運(yùn)算規(guī)則一覽表運(yùn)算符運(yùn)算符運(yùn)算規(guī)則運(yùn)算規(guī)則運(yùn)算符運(yùn)算符運(yùn)算規(guī)則運(yùn)算規(guī)則&位AND位取反|位OR位右移位XORb。當(dāng)表達(dá)式的結(jié)果是由不同類型數(shù)據(jù)組成的一行值,這種表達(dá)式叫做行表達(dá)式。例如,(081101,王林,計(jì)算機(jī),500)。當(dāng)表達(dá)式的結(jié)果為0個(gè)、1個(gè)或多個(gè)行表達(dá)式的集合,那么這個(gè)表達(dá)式就叫做表表達(dá)式。 表達(dá)式一般用在SELECT及SELECT語句的WHERE子句中,具體用法在后繼項(xiàng)目中講述。 本項(xiàng)目主要介紹了MySQL中數(shù)據(jù)庫級(jí)的SQL語句、數(shù)據(jù)庫表級(jí)的SQL語句、表記錄的SQL語句的具體用法,詳細(xì)介紹了MySQL在SQL語句中各種基本元素如常量、變量、運(yùn)算符、表達(dá)式、函數(shù)的具體使用,掌握這些知識(shí)要點(diǎn)為下一步深入學(xué)習(xí)MySQL打下了堅(jiān)實(shí)的基礎(chǔ)。(1)MySQL復(fù)雜運(yùn)算 關(guān)系運(yùn)算 關(guān)系的基本運(yùn)算有兩類:一類是傳統(tǒng)的集合運(yùn)算(并、差、交等),另一類是專門的關(guān)系運(yùn)算(選擇、投影、連接等)。 在MySql只支持Union(并集)集合運(yùn)算, 是在MySql4.0以后才有的;但是對(duì)于交集Intersect、差集Except,就沒有實(shí)現(xiàn)了。 在MySql的Union(并集)運(yùn)算有union和union all兩個(gè),主

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論