MySQL學習筆記_第1頁
MySQL學習筆記_第2頁
MySQL學習筆記_第3頁
MySQL學習筆記_第4頁
MySQL學習筆記_第5頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、MySQL學習筆記(1)1,數據庫管理概論(1)關系型數據模型:特性是利用表(Table)來呈現數據,將表視為一個集合。以關系型數據模型為基礎的數據庫稱為關系型數據庫(Relational DataBase,RDB)。在RDB中有許多表。表由行(Row)及字段(Column)組成,每一行有時稱為一筆記錄(record),每一行的字段中,都分別存儲著值(Value)。每一個字段都會有一個字段名稱(Field Name)。這個表也稱為關系(Relation),行稱為群組(Tupple),字段名稱稱為屬性(Attribute)。(2)表中擁有特別意義的字段稱為鍵(Key)。主鍵(Primary Ke

2、y):字段內容接不相同,可以用來指出表中的每一行。候選鍵(Condidate Key):有資格成為主鍵的字段。連接鍵(Concatenated Key):一個以上的字段組合而稱為主鍵。外部鍵(Foreign Key):一個表的字段與另一個表產生關聯,但是這個字段不是主鍵。(3)關聯的類型一對一:兩個表之間存在一對一的關聯一對多或多對一多對多:難以維護,不建議使用(4)集合運算與關系運算集合運算:并(Union)、差(Difference)、交(Intersection)、笛卡爾積(Cartesian Product)關系運算:選取(Select):取出與條件相符合的行(Row)投影(Proje

3、ct):取出與條件相符合的字段(field)結合(Join):以共同的字段為中介,讓多個表結合起來,建立一個新表。先執行笛卡爾積,再進行選取除法(Division):選取被除數表中有除數表字段值的行,并且去除公共部分2,SQL概述(1)目前的SQL標準:SQL92。多數數據庫軟件使用不具有兼容性的擴展版本,Oracle:PL/SQL,微軟:T-SQLSQL是關系型數據庫專用語言,非過程語言。語句末尾要有分號“;”注釋以兩個負號“-”開始,直到行結束。也支持和#。SQL關鍵字不區分大小寫(2)SQL語言的功能分類數據定義語言(DDL):CREATE(建立數據庫或表),ALTER(更改數據庫或表的

4、結構),DROP(刪除數據庫或表)數據操作語言(DML):SELECT(搜索數據),INSERT(增加數據),UPDATE(更新數據),DELETE(刪除數據)數據控制語言(DCL):GRANT(授予用戶操作數據的權限),REVOKE(撤銷用戶操作數據的權限),COMMIT(確定數據的更改),ROLLBACK(取消數據的更改)3,數據庫的定義步驟(1)使用CREATE DATABASE語句定義數據庫(2)確定字段的名稱與數據類型(3)建立表,用CREATE TABLE語句(4)插入數據,用INSERT語句(5)搜索數據庫,SELECT FORM ;4,建立數據庫(1)CREATE語句CREAT

5、E DATABASE database_name;(2)USE語句剛建立完成,或者擁有很多數據庫,指定需要使用的數據庫。USE db_name(3)DROP語句DROP db_name5,增加數據庫用戶MySQL有一個內置的數據庫mysql,用戶相關數據存在user、host、db這三個表中。host:可以訪問數據庫的主機及其相關信息,例如主機地址、主機名稱user:可訪問表中用戶的相關信息db:來自特定主機的特定用戶,可訪問數據庫的相關權限用如下語句,可以查看指定的表:use mysql;show columns from host;可以通過向這三個表插入數據增加用戶及其權限:讓MySQL數

6、據庫知道是哪一部主機在訪問db_name數據庫:INSERT INTO host VALUES(localhost,db_name,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y);(10xY)增加用戶到user表:INSERT INTO user VALUES(localhost,user_name,PASSWORD(password),Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,0,0,0,0);增加用戶的權限到db表:INSERT INTO db VALUES(localhost,db_name,

7、user_name,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y);MySQL學習筆記(2)1,MySQL的數據類型:數值數據數值類型內存空間TINYINT1BSMALLINT2BMEDIUMINT3BINT或INTEGER4BBIGINT8BFLOAT(M,D)8BFLOAT4BDOUBLE(M,D)M+2DECIMAL(M,D)M+2注意事項:處理數值類型的數據速度是最快的,要想加快查詢速度,盡量將字段設置為數值類型(M,D)中M表示數據的長度,D表示小數的位數聲明過大的數值數據會降低效率使用數值類型字段作為主鍵,可以使數據具有唯一性,加快存取數據的速度DECIM

8、AL可以根據所存入的數據大小調整如果數據超界,MySQL只存最大值2,數據字段修飾符(1)自動增量設置:AUTO_INCREMENT每增加一筆新紀錄會自動加一,存入改屬性的字段值必須存入NULL、0、空白、沒有用過的一個數字。用LAST_INSERT_ID()函數可以取得最新插入的AUTO_INCREMENT數值例子:CREATE TABLE TEST1(FIELD1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);INSERT INTO TEST1 (FIELD1) VALUES (NULL);INSERT INTO TEST1 (FIELD1) VALUE

9、S (0);INSERT INTO TEST1 (FIELD1) VALUES ();(2)自動補齊0修飾符:ZEROFILL會在數值之前補齊0,例如1234存入聲明為INT(6)ZEROFILL的字段時,存放的數據會變為001234(3)無符號數:UNSIGNED只適用于整數型字段3,MySQL的數據類型:字符或字符串各種類型最大長度CHAR(X)255BVARCHAR(X)255BTINYTEXT255BTEXT65535BMEDIUMTEXT16777215BLONGTEXT4294967295BTINYBLOB255BBLOB65535BMEDIUMBLOG16777215BLONGB

10、LOB4294967295B(1)CHAR、VARCHAR聲明:CHAR(X),VARCHAR(X)CHAR是固定長度的,VARCHAR變長。如果定義類型時混用,MySQL可能統一轉換成VARCHAR,除非聲明的長度小于4,則會統一轉換成CAHR例如:CREATE TABLE TEST(FIELD1 CHAR(5), FIELD2 VARCHAR(10)相當于:CREATE TABLE TEST(FIELD1 VARCHAR(5), FIELD2 VARCHAR(10)CREATE TABLE TEST(FIELD1 VARCHAR(2)相當于CREATE TABLE TEST(FIELD1

11、VARCHAR(2)()TEXT和BLOB類型這兩種字段通常用來存放聲音、圖像、大量文字這類存儲長度不固定的數據。可以看成非常大的VARCHAR。4,MySQL的數據類型:其他類型(1)ENUM類型(多選一)可以為NULL。值只可以是列表中的一項,如果不在列表中,就為空白。如果設置DEFAULT修飾符,則如果沒有輸入任何數據就用DEFAULT后面的值作為其值。例:CREATE TABLE TEST(FIELD1 ENUM(AM,PM) DEFAULT AM, FIELD2 ENUM(G,B,R);(2)SET類型(多選多)可以是列表中的各個項目。列表最多64個項目。例:CREATE TABLE

12、 TEST5(FIELD1 SET (BLACK,WHITE,GRAY,GREEN,RED);INSERT INTO TEST5 (FIELD1) VALUES (RED,GRAY);5,MySQL的數據類型:字段修飾符適用數據類型AUTO_INCREMENTINTBINARYCHAR、VARCHARDEFAULT除了BLOG、TEXTNOT NULL所有數據類型NULL所有數據類型PRIMARY KEY所有數據類型UNIQUE所有數據類型UNSIGNEDINTZEROFILL所有數值類型例子:mysql create table test1 (- id int auto_increment

13、not null primary key,- salary int zerofill unsigned,- address varchar(200),- job enum(工程師,教師,商人,農夫) default 工程師,- domain set(西安,廣州,天津,上海,合肥)- );MySQL學習筆記(3)1,建立表與索引(1)CREATE的參數與命名參數:IF NOT EXISTS作用:要建立的表不存在時才建立表例子:CREATE TABLE IF NOT EXISTS Table_Name(Column_Name Data_Type)命名規范:表名用復數,字段名稱用單數復合名稱中間用下

14、劃線所有數據庫對象名稱盡量前后保持一致(2)使用Script建立數據庫把語句復制到文本文件中,存成*.sql(3)更改現有表的相關信息更改表名稱:ALTER TABLE customers RENAME customer_table;更改字段名稱:ALTER TABLE customer_table CHANGE name customer_name VARCHAR(30);更改字段類型:ALTER TABLE customer_table CHANGE customer_name VARCHAR(50);刪除表:DROP TABLE table_name;刪除部分字段:ALTER TABLE

15、 table_name DROP field_name;刪除Primary Key:ALTER TABLE table_name DROP PRIMARY KEY;增加字段:ALTER TABLE table_name ADD column_name data_type;(4)使用數據庫索引索引可以加快SELECT的速度,但是會降低INSERT、UPDATA、DELETE的速度。通常選擇WHERE子句常出現的字段或者值不會重復的字段(Key)來建立索引。默認情況下,MySQL自動為表中的Primary Key建立索引。增加索引:CREATE INDEX index_name ON table_

16、name (column_list);或者:ALTER TABLE table_name ADD INDEX(column_name);刪除索引:DROP INDEX index_name ON table_name;或者:ALTER TABLE table_name DROP INDEX column_name;2,數據庫的增加刪除操作(1)INSERT 插入數據INSERT INTO的語法如下:INSERT INTO LOW_PRIORITY | DELAYED Tbl_Name (Column_name,.) VALUES (expression,.);其中字符串類型需要用或者“”包圍。

17、轉義字符:0,n,t,r,b,%,_數字類型,如果在浮點域插于整數值,會自動轉換。如果插入有唯一性的字段(PRIMARY KEY, AUTO_INCREMENT, UNIQUE),發生重復,則INSERT被忽略。以下REPLACE語句即使遇到唯一性字段重復也會覆蓋:REPLEACE LOW_PRIORITY | DELAYED Tbl_Name (Column_name,.) VALUES (expression,.);(2)UPDATE 更新數據語法:UPDATE LOW_PRIORITY Tbl_Name SET col_name1=expr1, col_name1=expr1,. WHE

18、RE expr LIMIT #LIMIT #限制最多只有#個數據行更新。(3)DELETE 刪除數據語法:DELETE LOW_PRIORITY FROM tbl_name WHERE expr LIMIT #如果不加上WHERE,整個表被刪除可以先用SELECT查看有多少筆數據可以刪除DELETE只是將數據的連接刪除,空間實際上沒有從硬盤釋放。可以用下列命令釋放:OPTIMIZE TABLE tbl_name;3,表達式與相關函數(1)常用數學函數:ABS(X)SIGN(X)MOD(N,M)FLOOR(X)CEILING(X)ROUND(X)ROUND(X,D):四舍五入到小數第D位EXP(

19、X)LOG(X):求ln(x)LOG10(X)POW(X,Y) OR POWER(X,Y)SQRT(X)PI()SIN(X),COS(X),TAN(X),ASIN(X),ACOS(X),ATAN(X)ATAN2(X,Y):求y/x的ARCTAN函數COT(X)RAND(N)LEAST(N1,N2,N3,.):在參數間比較,返回最小值GREATEST(N1,N2,N3,.)DEGREE(X):弧度轉化為角度RADIANS(X):角度轉化為弧度TRUNCATE(X,D):將X的小數以下D位舍去(2)比較運算=(相等)!= OR (不等于)IS NULLIS NULL(exp)IS NOT NULL

20、BETWEEN A AND BIN(Value1,Value2,.)NOT IN(Value1,Value2,.)COLESCE(LIST):在LIST的所有項目中,找出第一個不是NULL值的數據INTERVAL(N,N1,N2,.):N小于Nk時,返回k,否則返回0.(3)邏輯運算符AND,OR,NOTLIKE運算符和通配符%:可以替代任何字符_或?:可替代一個字符例如:mysql select * from customers where address like *5;(4)字符串函數ASCII(X):返回字符串最左邊字符的ASCII值CONV(N,FROM_BASE,TO_BASE):

21、N為底的FROM_BASE轉成TO_BASE,N為字符串或數字BIN(N):十進制N轉化為二進制OCT(N)HEX(N)CHAR(N,.):將ASCII字符N轉換為對應的字符CONCAT(S1,S2,.)LENGTH(STRING)INSTR(S1,S2) 或 LOCATE(S1,S2):s1在s2第一次出現的位置LPAN(STRING,LEN,PANSTR):將PANSTR從左邊填入,再加上STRING,總長度為LENRPAN(STRING,LEN,PANSTR):將PANSTR從右邊填入,再加上STRING,總長度為LENLEFT(STR,LEN):從STR左邊取LEN長度的字符串RIGH

22、T(STR,LEN)SUBSTRING(STR,POS,LEN)SUBSTRING_INDEX(STR,DELIM,COUNT):將STR用DELIM切成數個字符串,取出COUNT返回,COUNT為負數時,從字符串結尾開始LTRIM(STR):刪除STR開頭的空白RTRIM(STR)TRIM(BOTH | LEADING | TRAILING REMSTR FROM STR):刪除STR中的REMSTR,默認是BOTHSPACE(N):產生N個空白字符REPLACE(STRING,FROM_STR,TO_STR):用TO_STR替代FROM_STRREPEAT(STR,COUNT):產生COU

23、NT個STRREVERSE(STR)INSERT(STR,POS,LEN,NEWSTR):STR的POS之后插入長度為LEN的NEWSTRELT(N,S1,S2,.):根據N選擇S1,S2,.中的第N個返回FIELD(STRING,S1,S2,.):STRING與后面的比較,第幾個相同則返回幾,否則返回0FIND_IN_SET(STRING,STR_LIST):找出STRING是STR_LIST中的第幾個,STR_LIST之間用,分割LCASE(STR) 或 LOWER(STR)UCASE(STR) 或 UPPER(STR)4,數據庫的查詢操作(1)SELECT語法:SELECT column

24、1,column2,.FROM table1,table2,. WHERE conditions LIMIT #可以用*代表所有字段用LIMIT # 限制只返回前#個結果如果同一個字段出現在FROM后一個以上的表中時,要顯示的指明選取哪個表的哪個字段。例如:SELECT order.order_ID FROM orders, customers WHERE customers.tustomer_ID = orders.customer_ID可以將SQL語句中表的名稱用別名(Alias)代替,可以介紹重復的輸入,例如:SELECT order.order_ID FROM orders AS O, customers AS CWHERE C.tustomer_ID = O.customer_ID可以將別名與內部函數連用,結果顯示在以別名為field_name的列中,例如:mysql select max(id) as maxid from customers(2)ORDER BYSELECT的結果以建立的時間

溫馨提示

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

評論

0/150

提交評論