如何用mysql创建orders表_《MySQL必知必会》学习笔记
本書所用的表:
68.png
67.png
66.png
65.png
64.png
63.png
第一章:了解SQL
數(shù)據(jù)庫:保存有組織的數(shù)據(jù)的容器(通常是一個文件或一組文件)。
數(shù)據(jù)庫軟件:DBMS(數(shù)據(jù)庫管理系統(tǒng)),如MySQL等。
表:某種特定類型數(shù)據(jù)的結(jié)構(gòu)化清單。
表名:表名的唯一性取決于多個因素,如數(shù)據(jù)庫名和表名等的結(jié)合。
模式:關(guān)于數(shù)據(jù)庫和表的布局及特性的信息。
列:表中的一個字段。所有表都是由一個或多個列組成的。每個列都有相應(yīng)的數(shù)據(jù)類型。
數(shù)據(jù)類型:所容許的數(shù)據(jù)的類型。限制可存儲在列中的數(shù)據(jù)種類。
行:表中的一個記錄。表中的數(shù)據(jù)是按行存儲的。
主鍵(primary key):一列(或一組列),其值能夠唯一區(qū)分表中的每個行。
SQL:結(jié)構(gòu)化查詢語言(Structured Query Language),用來與數(shù)據(jù)庫通信。
第二章:MySQL簡介
MySQL是一種DBMS,即它是一種數(shù)據(jù)庫軟件。
DBMS可分為兩類:一類為基于共享文件系統(tǒng)的DBMS,另一類為基于客戶機-服務(wù)器的DBMS。MySQL、Oracle以及Microsoft SQL Server等數(shù)據(jù)庫是基于客戶機-服務(wù)器的數(shù)據(jù)庫。
客戶機是與用戶打交道的軟件,與數(shù)據(jù)文件打交道的只有服務(wù)器軟件??蛻魴C軟件通過網(wǎng)絡(luò)與服務(wù)器軟件交流。
第三章:使用MySQL
連接MySQL,需要以下信息:
1.主機名——如果連接到本地MySQL服務(wù)器,為localhost
2.端口(如果使用默認(rèn)端口3306之外的端口)
3.一個合法的用戶名
4.用戶口令(如果需要)
選擇數(shù)據(jù)庫可使用use關(guān)鍵字,例如:use dbone;
了解數(shù)據(jù)庫和表:
1.show databases;返回可用數(shù)據(jù)庫的一個列表
2.show tables;返回一個數(shù)據(jù)庫內(nèi)的表的列表
3.show columns from customers;顯示表的列的信息
4.show status;用于顯示廣泛的服務(wù)器狀態(tài)信息
5.show create database;顯示創(chuàng)建特定數(shù)據(jù)庫的MySQL語句
6.show create table;顯示創(chuàng)建特定表的MySQL語句
7.show grants;顯示授予用戶的安全權(quán)限
8.show errors;和show warnings;顯示服務(wù)器錯誤或警告信息
第四章:檢索數(shù)據(jù)
本章介紹如何使用select語句從表中檢索一個或多個數(shù)據(jù)列
檢索單個列:select cust_address from customers;
檢索多個列:select cust_address,cust_city,cust_zip from customers;
檢索所有列:select * from customers;
檢索不同的行: select distinct cust_country from customers; distinct關(guān)鍵字指示MySQL只返回不同的值。
限制結(jié)果:select cust_address from customers limit 5;
select cust_address from customers limit 2,3;
5.png
6.png
7.png
8.png
9.png
10.png
第五章:排序檢索數(shù)據(jù)
本章講授如何使用select語句的order by子句
排序數(shù)據(jù):select cust_zip from customers order by cust_zip;
按多個列排序:select cust_id,cust_zip,cust_contact from customers order by cust_zip,cust_contact;
指定排序方向:select cust_id,cust_zip,cust_contact from customers order by cust_zip desc,cust_contact;倒序 desc關(guān)鍵字只應(yīng)用到直接位于其前面的列名。
13.png
12.png
11.png
第六章:過濾數(shù)據(jù)
本章使用where子句指定索引條件
where子句操作符
說明
=
等于
<>
不等于
!=
不等于
<
小于
<=
小于等于
>
大于
>=
大于等于
between
在指定的兩個值之間
17.png
16.png
14.png
第七章:數(shù)據(jù)過濾
本章講授如何組合where子句,使用and,or,not,in操作符
and:用在where子句中的關(guān)鍵字,用來指示檢索滿足所有給定條件的行。
or: where子句中使用的關(guān)鍵字,用來表示檢索匹配任一給定條件的行。
where子句中使用圓括號分組操作符
in:where子句中用來指定要匹配值的清單的關(guān)鍵字,功能與or相當(dāng)。
not:where子句中用來否定后跟條件的關(guān)鍵字。
23.png
22.png
21.png
20.png
19.png
18.png
第八章:用通配符進行過濾
本章介紹什么是通配符,如何使用通配符,如何使用like操作符。
通配符:用來匹配值的一部分的特殊字符
搜索模式:由字面值、通配符或兩者組合構(gòu)成的搜索條件
百分號(%) 通配符:表示任何字符出現(xiàn)任意次數(shù)。
下劃線(_) 通配符:下劃線的用途與%一樣,但下劃線只匹配單個字符而不是多個字符
使用通配符的技巧:
1.不要過度使用通配符。
2.在確實需要使用通配符,除非絕對有必要,否則不要把他們用在搜索模式的開始處。
3.仔細(xì)注意通配符的位置。
27.png
26.png
25.png
24.png
第九章:用正則表達式進行搜索
本章將學(xué)習(xí)如何在MySQL where子句內(nèi)使用正則表達式來控制數(shù)據(jù)過濾。
正則表達式是用來匹配文本的特殊的串(字符集合)。
MySQL僅支持多數(shù)正則表達式實現(xiàn)的一個很小的自己。MySQL中的正則表達式匹配不分區(qū)大小寫,regexp后所跟的東西作為正則表達式處理。
like匹配整個列,regexp在列值內(nèi)進行匹配
基本字符匹配
or匹配:使用|
匹配幾個字符之一:[]
匹配范圍:[0-9] [a-z]
匹配特殊字符:\. \\
匹配字符類
匹配多個實例
定位符
字符類
說明
[:alnum:]
任意字母和數(shù)字(同[a-zA-Z0-9])
[:alpha:]
任意字符(同[a-zA-Z])
[:blank:]
空格和制表(同[\t])
[:cntrl:]
ASCII控制字符(ASCII 0到31和127)
[:digit:]
任意數(shù)字(同[0-9])
[:graph:]
與[:print:]相同,但不包括空格
[:lower:]
任意小寫字母(同[a-z])
[:print:]
任意可打印字符
[:punct:]
既不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:]
包括空格在內(nèi)的任意空白字符(同[\f\n\r\t\v])
[:upper:]
任意大寫字母(同[A-z])
[:xdigit:]
任意十六進制數(shù)字(同[a-fA-f0-9])
重復(fù)元字符
說明
*
0個或多個匹配
+
一個或多個匹配(等于{1,})
?
0個或1個匹配(等于{0,1})
{n}
指定數(shù)目的匹配
{n,}
不少于指定數(shù)目的匹配
{n,m}
匹配數(shù)目的范圍(m不超過255)
定位元字符
說明
^
文本的開始
$
文本的結(jié)尾
[[:<:>
詞的開始
[[:>:]]
詞的結(jié)尾
37.png
36.png
35.png
34.png
33.png
32.png
30.png
29.png
28.png
第十章:創(chuàng)建計算字段
字段基本上與列的意思相同,經(jīng)?;Q使用,不過數(shù)據(jù)庫列一般稱為列,而術(shù)語字段通常用在計算字段的連接上。
拼接:將值聯(lián)結(jié)到一起構(gòu)成單個值??墒褂肅oncat()函數(shù)來拼接兩個列。
別名:a as b
RTrim()函數(shù):去除數(shù)據(jù)右側(cè)多余的空格
執(zhí)行算術(shù)計算:+ - * /
38.png
39.png
40.png
第十一章:使用數(shù)據(jù)處理函數(shù)
本章介紹什么是函數(shù),MySQL支持何種函數(shù),以及如何使用這些函數(shù)。
SQL支持利用函數(shù)來處理數(shù)據(jù)。函數(shù)一般是在數(shù)據(jù)上執(zhí)行的,它給數(shù)據(jù)的轉(zhuǎn)換和處理提供了方便。
大多數(shù)SQL實現(xiàn)支持以下類型的函數(shù):
1.用于處理文本串(如刪除或填充值,轉(zhuǎn)換值為大寫或小寫)的文本函數(shù)。
2.用于在數(shù)值數(shù)據(jù)上進行算術(shù)操作(如返回絕對值,進行代數(shù)運算)的數(shù)值函數(shù)。
3.用于處理日期和時間值并從這些值中提取特定成分(例如,返回兩個日期之差,檢查日期有效性等)的日期和時間函數(shù)。
4.返回DBMS正使用的特殊信息(如返回用戶登錄信息,檢查版本細(xì)節(jié))的系統(tǒng)函數(shù)。
常用的文本處理函數(shù)
說明
Left()
返回串左邊的字符
Length()
返回串的長度
Locate()
找出串的一個子串
Lower()
將串轉(zhuǎn)換為小寫
LTrim()
去掉串左邊的空格
Right()
返回串右邊的字符
RTrim()
去掉串右邊的空格
Soundex()
返回串的SOUNDEX值
SubString()
返回子串的字符
Upper()
將串轉(zhuǎn)換為大寫
常用日期和時間處理函數(shù)
說明
AddDate()
增加一個日期(天、周等)
AddTime()
增加一個時間(時、分等)
CurDate()
返回當(dāng)前日期
CurTime()
返回當(dāng)前時間
Date()
返回日期時間的日期部分
DateDiff()
計算兩個日期之差
Date_Add()
高度靈活的日期運算函數(shù)
Date_Format()
返回一個格式化的日期或時間串
Day()
返回一個日期的天數(shù)部分
DayOfWeek()
對于一個日期,返回對應(yīng)的星期幾
Hour()
返回一個時間的小時部分
Minute()
返回一個時間的分鐘部分
Month()
返回一個日期的月數(shù)部分
Now()
返回當(dāng)前日期和時間
Second()
返回一個時間的秒部分
Time()
返回一個日期時間的時間部分
Year()
返回一個日期的年份部分
常用數(shù)值處理函數(shù)
說明
Abs()
返回一個數(shù)的絕對值
Cos()
返回一個角度的余弦
Exp()
返回一個數(shù)的指數(shù)值
Mod()
返回除操作的余數(shù)
Pi()
返回圓周率
Rand()
返回一個隨機數(shù)
Sin()
返回一個角度的正弦
Sqrt()
返回一個數(shù)的平方根
Tan()
返回一個角度的正切
45.png
44.png
43.png
42.png
41.png
第十二章:匯總數(shù)據(jù)
本章介紹什么是SQL的聚集函數(shù)以及如何利用它們匯總表的數(shù)據(jù)。
聚集函數(shù):運行在行組上,計算和返回單個值的函數(shù)。
SQL聚集函數(shù)
說明
AVG()
返回某列的平均值
COUNT()
返回某列的函數(shù)
MAX()
返回某列的最大值
MIN()
返回某列的最小值
SUM()
返回某列值之和
52.png
51.png
50.png
49.png
48.png
47.png
46.png
第十三章:分組數(shù)據(jù)
本章介紹如何分組數(shù)據(jù),以便能匯總表內(nèi)容的子集,這涉及兩個新select語句子句,分別是group by子句和having子句
分組允許把數(shù)據(jù)分為多個邏輯組,以便能對每個組進行聚集計算。
分組是在select語句的group by子句中建立的,group by子句指示MySQL分組數(shù)據(jù),然后對每個組而不是整個結(jié)果集進行聚集。
在具體使用group by子句前,需要知道一些重要的規(guī)定。
1.group by子句可以包含任意數(shù)目的列。這使得能對分組進行嵌套,為數(shù)據(jù)分組提供更細(xì)致的控制。
2.如果在group by子句中嵌套了分組,數(shù)據(jù)將在最后規(guī)定的分組上進行匯總。換句話說,在建立分組時,指定的所有列都一起計算。
3.group by子句中列出的每個列都必須是檢索列或有效的表達式。如果在select中使用表達式,則必須在group by子句中指定相同的表達式。不能使用別名。
4.除聚集計算語句外,select語句中的每個列都必須在group by子句中給出。
5.如果分組列中具有null值,則null將作為一個分組返回。如果列中有多行null值,它們將分為一組。
6.group by子句必須出現(xiàn)在where子句之后,order by子句之前。
使用with rollup關(guān)鍵字,可以得到每個分組以及每個分組匯總級別的值。
使用having子句過濾分組。
where在數(shù)據(jù)分組前進行過濾,having在數(shù)據(jù)分組后進行過濾。
以下二者區(qū)別:
order by
group by
排序產(chǎn)生的輸出
分組行。但輸出可能不是分組的順序
任意列都可以使用
只可能使用選擇列或表達式列,而且必須使用每個選擇列表達式
不一定需要
如果與聚集函數(shù)一起使用列,則必須使用
select子句及其順序:
select子句
說明
是否必須使用
select
要返回的列或表達式
是
from
從中檢索數(shù)據(jù)的表
僅在從表選擇數(shù)據(jù)時使用
where
行級過濾
否
group by
分組說明
僅在按組計算聚集時使用
having
組級過濾
否
order by
輸出排序順序
否
limit
要檢索的行數(shù)
否
59.png
58.png
57.png
56.png
55.png
54.png
53.png
第十四章:使用子查詢
本章介紹什么是子查詢以及如何使用它們。
子查詢:即嵌套在其他查詢中的查詢。
利用子查詢進行過濾。
在where子句中使用子查詢,應(yīng)該保證select語句具有與where子句中相同數(shù)目的列。通常,子查詢將返回單個列并且與單個列匹配,但如果需要也可以使用多個列。
作為計算字段使用子查詢。
相關(guān)子查詢:涉及外部查詢的子查詢。
子查詢最常見的使用是在where子句的in操作符中,以及用來填充計算列。
例子一:列出訂購物品tnt2的所有客戶:
1.檢索包含物品tnt2的所有訂單的編號
2.檢索具有前一步驟列出的訂單編號的所有客戶的ID。
3.檢索前一步驟返回的所有客戶ID的客戶信息。
例子二:顯示customers表中每個客戶的訂單總數(shù)。
1.從customers表中檢索客戶列表。
2.對于檢索出的每個客戶,統(tǒng)計其在orders表中的訂單數(shù)目。
61.png
62.png
第十五章:聯(lián)結(jié)表
本章介紹什么是聯(lián)結(jié),為什么要使用聯(lián)結(jié),如何編寫使用聯(lián)結(jié)的select語句。
關(guān)系表的設(shè)計就是要保證把信息分解成多個表,一類數(shù)據(jù)一個表。各表通過某些常用的值(即關(guān)系設(shè)計中的關(guān)系)互相關(guān)聯(lián)。
外鍵:外鍵為某個表中的一列,它包含另一個表的主鍵值,定義了兩個表之間的關(guān)系。
可伸縮性:能夠適應(yīng)不斷增加的工作量而不失敗。設(shè)計良好的數(shù)據(jù)庫或應(yīng)用程序稱之為可伸縮性好。
聯(lián)結(jié)是一種機制,用來在一條select語句中關(guān)聯(lián)表。
創(chuàng)建聯(lián)結(jié):規(guī)定要聯(lián)結(jié)的所有表以及它們?nèi)绾侮P(guān)聯(lián)即可。
完全限定列名:在引用的列可能出現(xiàn)二義性時,必須使用完全限定列名(用一個點分隔的表名和列名)。
笛卡爾積:由沒有聯(lián)結(jié)條件的表關(guān)系返回的結(jié)果為笛卡爾積。檢索出的行的數(shù)目將是第一個表中的行數(shù)乘以第二個表中的行數(shù)。
等值聯(lián)結(jié):基于兩個表之間的相等測試,也稱為內(nèi)部聯(lián)結(jié)。
72.png
71.png
70.png
69.png
第十六章:創(chuàng)建高級聯(lián)結(jié)
本章講解另外一些聯(lián)結(jié)類型,介紹如何對被聯(lián)結(jié)的表使用表別名和聚集函數(shù)。
別名除了用于列名和計算字段外,SQL還允許給表名起別名。理由:
1.縮短SQL語句。
2.允許在單條select語句中多次使用相同的表。
表別名不僅能用于where子句,它還可以用于select的列表、order by子句以及語句的其他部分。
自聯(lián)結(jié):自聯(lián)結(jié)通常作為外部語句用來替代從相同表中檢索數(shù)據(jù)時使用的子查詢語句。
自然聯(lián)結(jié):只能選擇那些唯一的列。通過對表使用通配符(select *),對所有其他表的列使用明確的子集來完成。
外部聯(lián)結(jié):聯(lián)結(jié)包含了那些在相關(guān)表中沒有關(guān)聯(lián)行的行。包括左外聯(lián)結(jié)和右外聯(lián)結(jié)。它們之間的唯一差別是所關(guān)聯(lián)的表的順序不同。
使用帶聚集函數(shù)的聯(lián)結(jié)。
關(guān)于聯(lián)結(jié)及其使用的某些要點:
1.注意所使用的聯(lián)結(jié)類型。一般我們使用內(nèi)部聯(lián)結(jié),但使用外部聯(lián)結(jié)也是有效的。
2.保證使用正確的聯(lián)結(jié)條件,否則將返回不正確的數(shù)據(jù)。
3.應(yīng)該總是提供聯(lián)結(jié)條件,否則會得出笛卡爾積。
4.在一個聯(lián)結(jié)中可以包含多個表,甚至對于每個聯(lián)結(jié)可以采用不同的聯(lián)結(jié)類型。雖然這樣做是合法的,一般也很有用,但應(yīng)該在一起測試它們前,分別測試每個聯(lián)結(jié)。這將使故障排除更為簡單。
77.png
76.png
75.png
74.png
73.png
第十七章:組合查詢
本章講述如何利用union操作符將多條select語句組合成一個結(jié)果集。
MySQL也允許執(zhí)行多個查詢,并將結(jié)果作為單個查詢結(jié)果集返回。這些組合查詢稱為并(union)或復(fù)合查詢。
有兩種基本情況,其中需要使用組合查詢:
1.在單個查詢中從不同的表返回類似結(jié)構(gòu)的數(shù)據(jù)
2.對單個表執(zhí)行多個查詢,按單個查詢返回數(shù)據(jù)。
使用union可極大地簡化復(fù)雜的where子句,簡化從多個表中檢索數(shù)據(jù)的工作。
union規(guī)則:
1.union必須由兩條或兩條以上的select語句組成,語句之間用關(guān)鍵字union分隔。
2.union中的每個查詢必須包含相同的列、表達式或聚集函數(shù)。
3.列數(shù)據(jù)類型必須兼容:類型不必完全相同,但必須是DBMS可以隱含地轉(zhuǎn)換的類型
使用union all,MySQL不取消重復(fù)的行。
80.png
79.png
78.png
第十八章:全文本搜索
第十九章:插入數(shù)據(jù)
第二十章:更新和刪除數(shù)據(jù)
第二十一章:創(chuàng)建和操縱表
第二十二章:使用視圖
第二十三章:使用存儲過程
第二十四章:使用游標(biāo)
第二十五章:使用觸發(fā)器
第二十六章:管理事務(wù)處理
第二十七章:全球化和本地化
第二十八章:安全管理
第二十九章:數(shù)據(jù)庫維護
第三十章:改善性能
總結(jié)
以上是生活随笔為你收集整理的如何用mysql创建orders表_《MySQL必知必会》学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云服务器apache mysql php
- 下一篇: java comp env 区别_加和不