JavaScript 精選14堂課(二)

程式控制結構

選擇結構
如果if及else內的程式敘述只有一行,同樣可以省略大跨號{}。例如:
if (a==1) b=1; else b=2;

也可以用三運算子?來達成,三元運算子格式如下:
條件運算式? 程式敘述1 : 程式敘述2

條件運算式成立就執行敘述1,否則就執行程式敘述2。
上述程式可以改寫為:
b = (a==1 ? 1:2);
加上括號只是為了程式易讀。
重複結構

範例:

<script>
//for
for (i=1; i<=10; i++){
    console.log(i + "平方 = "+ (i*i));
}
console.log("現在 i 值 = " +i);
</script>

範例:

let fruit = ["apple", "tomato", "Strawberry"];
for (let x in fruit) {
	console.log(fruit[x]);
}

範例:

<script>
//forEach
let fruit = ["apple", "tomato", "Strawberry"];
fruit.forEach(function(x){
     console.log(x);
});

範例:

<script>
//while 
let = 1;
while(i<=10){
    console.log(i + "平方 = " + (i*i));
}
console.log("現在i值 = "+ i);
</script>
使用while loop 有兩個重點,提醒您留意:
1.必須先指定變數的起始值。
2.條件式中的變數值的增減,必須寫在while{}內,否則變數i永遠不會改變,迴圈一直執行就會造成無窮迴圈!
<script>
// do....while
let i=1;
do {
   console.log(i + "平方 = "+ (i*i));
   i++;
}while(i<=10)

console.log("現在i值 = "+ i);
</script>
break 和continue 敘述
break跟continue敘述可以用來控制迴圈流程

break敘述的作用是強迫終止迴圈的執行,跳出最靠近的迴圈,直接執行迴圈外的第一行指令。
例如:
if (i>5) break;

continue敘述的作用是馬上回到迴圈的一開始,再繼續執行迴圈。
if(i<7) continue;
<script type="text/javascript">
	for (let a=0; a<=10; a++){
		if (a===3){
			console.log(a);
			continue;
		}
		if (a===8){
			console.log(a);
			break;
		}
		console.log("for loop a="+a);
	}
 </script>

forEach 迴圈不能使用break指令中斷循環

JavaScript 精選14堂課(一)


安裝軟體Node
執行 Node 
在命令提示字元下,執行 node  檔案.js

離開 Node   
輸入 .exit   或 Ctrl+D
console.log()
console.log()
是瀏覽器的開發者工具(web developer tool)顯示括號()內的資料。只要在瀏覽器開啟檔案,按一下F12就會顯示開發者工具並印出console.log()的訊息。
變數宣告
var 宣告變數 
方法: var 變數名稱
1.全域變數
不在函數內的變數都屬於全域範圍變數,此程式文件內都可以使用此一變數。
2.區域變數
當變數在函數之內宣告,那麼只有在這一個函數區域可以使用此一變數。
let 變數宣告
方法: let 變數名稱
var變數宣告的方式,常常讓人詬病。因為關鍵字認定的作用域只有函數,但是程式中的區塊不只有函數。程式的區塊敘述是以一對大跨號{}來界定,像是if、else、for、while等控制結構或是純粹定義範圍的純區塊{}等等都是區塊。
變數 Z 沒有宣告
使用 const 關鍵字宣告常數
Const 跟 Let 關鍵字一樣都是ES6新加入的宣告方式,跟let一樣,具有區塊作用域的概念,Const是用來宣告常數(Constants),也就是不變的常量,因此常數不能重複宣告,而且必須指定初始值,之後也不能再變更它的值。
parseInt():將字串轉換為整數
a = parsInt("35"); // a = 35
b = parsInt("55.87"); // b = 55
c = parsInt("3天"); // c = 3
d = parsInt("page 2"); // d = NaN
parseFloat():將字串轉換成浮點數
a = parsFloat("35.345"); // a = 35.345
b = parsFloat("55.87"); // b = 55.87
Number():將物件或字串轉換為數值
如果物件或字串無法轉換為數值,則傳回 NaN
a = Number("10a"); // a = NaN
b = Number("11.5"); // b = 11.5
c = Number("0x11"); // c = 17
d = Number("true"); // d = 1
e = Number(new Date()); // e = 1553671784021(傳回1970/1/1至今的毫秒)
typeof:傳回資料型別
* typeof 資料
* typeof(資料)

typeof("Eileen"); // 傳回 "string"
typeof 123; // 傳回 "number"
typeof null; // 傳回 "object"
查詢物件的屬性與方法
console.log( Date.prototype)
Chrome瀏覽器中按F12,中控選項(console)

Ubuntu 20.04 安裝 Laravel

Step1. install Apacher Server
sudo apt install apache2

執行apache2伺服器

sudo sytemctl start apache2

開機啟動apache2

sudo systemctl enable apache2 

測試apach2執行情形

sudo systemctl status apache2
Step2. Installing PHP and its additional plugins

安裝PHP

sudo apt install php libapache2-mod-php php-mbstring php-cli php-bcmath php-json php-xml php-zip php-pdo php-common php-tokenizer php-mysql

測試安裝情形

php -v
Step3. creating a database

安裝MariaDB伺服器

sudo apt install mariadb-server

執行Mariadb

sudo mysql -u root -p

執行SQL語法

CREATE DATABASE laravel_db;
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'secretpassword';
GRANT ALL ON laravel_db.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
QUIT;
Step 4: Install Composer

執行”連線到安裝網站,使用PHP安裝”

$ curl -sS https://getcomposer.org/installer | php

安裝完後設定

sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
composer --version
Step 5: Install Laravel 8 on Ubuntu
cd /var/www/html
sudo composer create-project laravel/laravel laravelapp
sudo chown -R www-data:www-data /var/www/html/laravelapp
sudo chmod -R 775 /var/www/html/laravelapp/storage
cd laravelapp
php artisan
Step 6: Configure Apache to serve Laravel

 建立laravel.conf檔案

<VirtualHost *:80>
ServerName example.com
ServerAdmin admin@example.com
DocumentRoot /var/www/html/laravelapp/public
<Directory /var/www/html/laravelapp>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

執行下列兩個指令,讓他們進入Apache rewiter 模組

sudo a2ensite laravel.conf
$ sudo a2enmod rewrite

重新啟動apache2

sudo systemctl restart apache2
Step 7: Run Laravel in a web browser

網站在 /var/www/html/laravelapp/public

使用Laravel8 PHP(一)

類別class

class.php

<?php  //class.php

echo "<head>
  <meta charset='utf-8'>
  <meta name='description' content='Free Web Tutorial'>
  <meta name='author' content='wwesbake'>
</head>
";

class Dog
{
	public $age;

	public function sayAge()
	{
		echo "我的年齡 {$this->age} 歲";
	}
}

$myDog = new Dog();
$myDog->age=1;
$myDog->sayAge();

?>

__condtruct(建構子)以及__destruct(解構子)

class Dog
{
	public $age;
	//規定建立類別一定要給年齡參數
	
	public function __construct($age)
	{
		echo "旺旺旺, 我誕生了!<br>";
		$this->age=$age;
	//前面是類別自身屬性,後方是建立物件時傳入的值
	}

	public function sayAge()
	{
		echo "我的年齡{$this->age} 歲";
	}

	public function __destruct()
	{
		echo "<br/> PHP程式執行結束 Dog Class關閉";
	}
}

$myDog = new Dog(1); //建立實體物件執行__construct()內的動作
$myDog->sayAge();
說明
public $age; 1.<--屬性

public function satAge()
{
echo "我的年齡 $this->age 歲"; 2.<--方法
} 3.使用自身的屬性要加$this關鍵字

注意
要在方法中使用自身類別的屬性,必須使用關鍵字$this來取得屬性值,只使用$age會讀不到值,必須使用$this->age。

繼承(Extends)

<?php  //extend.php

echo "<head>
  <meta charset='utf-8'>
  <meta name='description' content='Free Web Tutorial'>
  <meta name='author' content='wwesbake'>
</head>
";

class Animal
{
	public $age;

	public function sayAge()
	{
		echo "我的年齡 {$this->age} 歲";
	}
}

class Dog extends Animal
{
	//內容為空
}

class Cat extends Animal
{
	//內容為空
}

$myDog = new Dog();
$myDog->age=1;
$myDog->sayAge();
echo "<br/>--HR--<br/>";
//產生了新的物件
$myCat = new Cat();
$myCat->age=2;
$myCat->sayAge();

?>
說明
Animal 類別是 Dog、Cat的父類別,反之Dog、Cat都是Animal的子類別,可以看到子類別的內容都是為空,但Dog、Cat產生實體物件,可以設定年齡以及執行顯示年齡的方法,讓我們不用重複撰寫一樣的程式碼,父子類別它們在意義上是有關係的才使用繼承,以上我們都使用public存取權限,繼承後子類別擁有父類別的所有屬性以及方法。

封裝(Encapsulation)

<?php

echo "<head>
  <meta charset='utf-8'>
  <meta name='description' content='Free Web Tutorial'>
  <meta name='author' content='wwesbake'>
</head>
";

class Animal
{
	public     $name;    //存取權限public
	protected  $age;     //存取權限protected
	private    $weight;  //存取權限private

	public function __construct($name, $age, $weight)
	{
		$this->name = $name;
		$this->age = $age;
		$this->weight = $weight;
	}

	public function animalShowData()
	{
		echo "暱稱: {$this->name} <br>";   //正常讀取
		echo "年齡: {$this->age} <br>";    //正常讀取
		echo "體重: {$this->weight} <br>"; //正常讀取
	}
}

class Dog extends Animal
{
		public function dogShowData()
		{
			echo "暱稱: {$this->name} <br>";   //正常讀取
		  echo "年齡: {$this->age} <br>";    //正常讀取
		  echo "體重: {$this->weight} <br>"; //無法讀取
		}
}


$myDog = new Dog('多多', 3, '3kg');
//$myDog->animalShowData(); //正常顯示屬性

echo $myDog->name;   //正常讀取
echo $myDog->age;    //無法讀取
echo $myDog->weight; //無法讀取

//$myDog->dogShowData();  //無法讀取$weight變數
?>

介面(Interface)

一個類別只能繼承單一類別,但可以實作多個介面,介面用於更抽象的定義,例如狗的類別有年齡的方法,人類也有年齡的方法要實作,但計算方式可能略為不同,可以建立Age介面,在其中定義,讀取年齡的方法...如果類別有年齡的特性,可以於該類別使用Age介面,類別就要實作Age介面中定義的所有方法,也可以建立一個Foot介面定義用腳可以跑步、走路...。
//1.介面 Age 使用interface 宣告介面Age
interface Age
{
	public function getAge();
}

interface Foot
{
	public function run();
	public function walk();
}


//2.Dog 類別使用implrmrnts 實作Age介面的定義
class Dog implements Age, Foot
{
	public $age;

	public function getAge()
	{
		 return $this->age * 7 . "<br>";
	}

	public function run()
	{
		 return "我用四隻腳跑步<br>";
	}

	public function walk()
	{
		 return "我用四隻腳走路<br>";
	}
}

$dog = new Dog();
$dog->age = 1;
echo $dog->getAge(); // 7
echo $dog->run();    // 我用四隻跑步
echo $dog->walk();   // 我用四隻腳走路

注意介面中只能定義常數以及public 存取權限的抽象方法。

SQL指令語法速查手冊(十)

函數語法

彙總函數

AVG

語法
AVG <數值式>

範例
SELECT AVG(price) FROM store;

COUNT

語法
COUNT 欄位

說明
COUNT函數是用來計算指定的欄位中值有多少列的函數,COUNT會計算欄位內非NULL的列數。但是,單純的想要計算所有的列數情況下,要透過「*」指定。在指定「*」的情況下,會將NULL值的列也計算進去。
COUNT中可以指定的指令有ALL與DISTINCT兩種。沒有設定特定指令的話,預設會使用ALL。如果指定DISTNCT的話,在指定欄位中重複的值就只會被計算一次。也就是說可以用來計算多少不同的值。

範例
取得所有的列數目
SELECT COUNT(*) FROM store;

取得有幾種不同的分類
SELECT COUNT(DISTINCT class) FROM store;

MAX

語法
MAX <數值式>

說明
取得指定欄位中最大值。

範例
取得price欄位的最大值
SELECT MAX(price) FROM store;

計算各群組的最大值
SELECT class,MAX(price) FROM store GROUP BY class;

MIN

語法
MIN <數值式>

範例
SELECT MIN(price) FROM store;

SELECT class,MIN(price) FROM store GROUP BY class;

STDDEV

語法
STDDEV <數值式>

說明
STDDEV函數式用來求引數中指定的<數值式>標準差的函數。但是使用者要注意,在PostgreSQL、Oracle式回傳標準差,而MySQL則是回傳母體標準差。

範例
STDDEV函數計算標準差
SELECT STDDEV(price) FROM store;

計算各個群組的標準差
SELECT class,STDDEV(price) FROM store GROUP BY class;

SUM

語法:
SUM <數值式>

說明:
SUM函數是用來求取數值式的總和的函數,SUM會計算在引數內<數值式>中指定數值欄位的總和並回傳。在SUM中也可以指定ALL以及DISTINCT指令。指定DISTINCT的話,在指定的數值欄位中如果有相同的值情況下,只會計算第一個出現的計算對象。ALL的話則會計算所有的值。

範例:
SELECT SUM(price) FROM store;

SELECT class,SUM(price) FROM store GROUP BY class;

VARIANCE  變異數

語法:
VARINCE <數值式>
求指定數值的變異數值。

字串函數

ASCII

語法:
ASCII <字串>

說明:
ASCII函數是用來將指定文字轉為ASCII碼,並傳回ASCII碼的函數。在指定多個字串的情況下,會傳回開頭第一個ASCII碼。

範例:
SELECT name,ASCII(name) FROM store;

CHAR

語法:
CHAR <數值式>

說明:
CHAR函數是用來將引數中指定的ASCII碼轉回對應字元的函數。

範例:
SELECT CHAR(99),CHAR(100),CHAR(101);

SQL指令語法速查手冊(九)

集合運算子

UNION 運算子

語法
<SELECT敘述句> UNION <SELECT敘述句>

說明
UNION 運算子是用來求取聯集的運算子。我們可以使用這個運算子來對多個SELECT敘述句所查詢的結果作聯集處理。
如果只有指定UNION運算子的話,會傳回除去重複部分的聯集。但是若指定是ALL運算子的話,就會傳回沒有除掉重複部分的聯集。在實用上,多個SELECT敘述句由UNION運算子來連結,所以UNION運算子屬於集合運算子。

範例:
SELECT ID FROM homework UNION SELECT ID FROM student;
若加上 UNION ALL 運算子指令,會將進行運算的所有資料顯示出來。

EXCEPT 運算子

語法
<SELECT 敘述句> EXCEPT <SELECT 敘述句>

說明
EXCEPT 運算子是用來求取差集合的運算子。EXCEPT會由左邊指定的查詢果中,除去右邊指定的查詢結果中後傳回差集合。撰寫時,要在EXCEPT運算子左邊撰寫被減去的集合,在右邊撰寫減去的集合。

範例
SELECT ID FROM homework EXCEPT SELECT ID FROM student;

單項運算子

+ 單項運算子

語法
+ <數值式>

範例
SELECT price, +price FROM store;

說明
+ 單項運算子並非加法運算子,他可以用來明確表示數值為正數運算子。但是 + 單項運算子並不會進行任何處理,所以在資料處理上沒有任何意義。

– 單項運算子

語法
- <數值式>

範例
SELECT cost, -cost FROM store;

說明
- 單項運算式用來將數值符號進行反轉的運算子。- 單項運算子可以將正數變為負數,將負數變為正數。

IS (NOT) NULL運算子

語法
式 IS (NOT) NULL

範例
SELECT * FROM store WHERE ID IS NULL;

說明
IS NULL 運算子是用來確認式中的值是否為NULL運算子。NULL在資料庫上是用來表示沒有的值。
比較運算子中的等於以及不等於運算子,並沒有辦法對NULL進行比較,所以沒辦法判斷值是否為NULL。要確認是否為NULL的話,只能使用IS NULL 運算子。
本例為空值。
相反地,設定為非空的話,就會顯示所有值。
SELECT * FORM store where ID IS NOT NULL;

CASE 運算子

語法
CASE 式 WHEN 條件 THEN 輸出 ....END

範例
SELECT ID,CASE WHEN 1 THEN 'first' WHEN 2 THEN 'second' WHEN 3
THEN 'third' ELSE 'other' END FROM store;

說明
CASE 運算子主要是用來轉換值的運算子。在CASE後面指定的式中如有WHEN中指定條件的情形下,會轉換為THEN中所指定的輸出的值。這樣的組合可以重複指定。而最後透過ELSE指令,ELSE指令則是若不是WHEN中指定條件時,則會轉換為ELSE中指定的值。最後要撰寫END用以表示結束。

SQL指令語法速查手冊(八)

邏輯運算子

AND運算子

語法
條件式 AND 條件式
範例:
SELECT * FROM store WHERE class='household' AND price>70;

BETWEEN 運算子

語法
敘述式 BEWTEEN 數值1 AND 數值2
範例:
SELECT * FROM store WHERE price BEWTEEN 10 AND 40;

IN 運算子

語法
敘述式 IN (數值1,數值2)
範例:
SELECT * FROM store WHERE class IN ('office','food')
說明:
IN運算子是用來判斷再子查詢或者清單中具有與指定的值一致的值。在IN運算子前面賦予的值,如果在IN後面子查詢的結果清單中,或者在數值式的清單中具有相同一致的值的話,則會回傳真;如果沒有一致的值的話,則會回傳假。

NOT運算子

語法
NOT 式
範例
SELECT * FROM store WHERE NOT class='food';
說明
NOT 運算子是當右邊的式之值為真時回傳假,為假時回傳真的運算子。

OR運算子

語法
條件式 OR 條件式
範例
SELECT * FROM store WHERE class='food' OR class='office';

ALL 運算子

語法
WHERE 式 比較運算子 ALL (子查詢)
範例
SELECT * FROM store WHERE class = ALL(SELECT class FROM store WHERE class='food');
說明
ALL 運算子是用來由子查詢所傳回來的結果中,滿足所有條件的資料。ALL運算子會依據比較運算子來對每一個值與式子的值進行比較,對所有值都滿足條件時傳回真。例如子查詢的結果傳回三個值,三個值會與比較運算子中指定的條件做判斷,當滿足所有指定條件時回傳真。反之,只要具有任一不滿足的條件則傳回假。傳回真的值會被傳回主查詢中。

ANY運算子

語法
WHERE 式 比較運算子 ANY (子查詢)
範例
SELECT * FROM store WHERE class= ANY (SELECT class FROM store
WHERE class='food');
說明
ANY 運算子是用來求子查詢所傳回結果的值中,滿足任一條件的資料。ANY 運算子會依據比較運算子將每一個值與運算式中的值進行比較,只要滿足其中一條件就會傳回真。例如子查詢傳回三個值得話,這三個值都會對比較運算子中指定的條件進行判斷,只要滿足其中一條件的話就會回傳真。

ANY 與SOME運算子式相同的計算方式。另外如果要求滿足所有條件的時候,則使用ALL運算子。

EXISTS 運算子

語法
WHERE EXISTS (子查詢)
範例
SELECT * FROM store WHERE EXISTS (SELECT class FROM store WHERE class = 'food');

說明
EXISTS 運算子是用來確認子查詢所傳回的結果集合中,是否存在結果的運算子。當存在的情形下則傳回真。

SOME運算子

語法
WHERE 式 比較運算子 SOME(子查詢)
範例
SELECT * FROM store WHERE class = SOME(SELECT class FROM store WHERE class='food');

說明
功能與ANY運算子相同的功能。

LIKE 運算子

語法
式 LIKE<搜尋條件>
範例
SELECT * FROM store WHERE price LIKE '4%';

說明
LIKE運算子又稱為萬用字元搜查。
萬用字元搜查顧明思義就是透過萬用字元%來進行搜尋,語法為(LIKE%xxx%)則會傳回內容包含xxx的值;如果要搜尋開頭為xxx,語法為(LIKExxx%);搜尋結尾為xxx,語法為(LIKE%xxx)。

REGEXP運算子

語法
式 REXGEXP 正規表達式
REXGEXP運算子是用來進行POSIX正規表達式的樣式比對運算子。其與LIKE相同,但是在指定樣式時可以使用正規表示式。
引數為中介字元,有以下幾種:
^ :對字串開頭進行比對
$ :對字串結尾做比對
. :對所有文字進行比對
a* :對連續0個以上的a進行比對
a+ :對連續1個以上的a進行比對
a? :對0個或1個以上的a進行比對
de|abc :對連續的de或abc進行比對
(abc)* :對連續0個以上的abc進行比對
(abc)+ :對連續1個以上的abc進行比對
(abc)- :對0個或1個以上的abc進行比對
{} :指定樣式的重複
[] :指定候選文字的集合

範例
SELECT * FROM store WHERE name REGEXP 'c+';
說明:搜尋字串有c的資料。

範例
SELECT * FROM store WHERE name REGEXP '(tooth)+';
說明:搜尋字串有tooth的資料。

SQL指令語法速查手冊(七)

運算子

加法運算子

數值+數值
日期+數值
字串+字串
範例
:
SELECT INTERVAL 3 MONTH + '2012-12-31' newdate;
說明:
在MYSQL中,在加法運算子的任何一側加上INTERVAL關鍵字,然後接著指定數值以及日期型別,這樣也可以進行針對日期型別與數值型別的加種。本例子中簡單的要求將「2012-12-31」加上三個月後的結果。

減法運算子

數值-數值
日期-數值
字串-字串
範例
:
SELECT a,b,a-b total FROM number;
SELECT '2014-09-01' - INTERVAL 1 HOUR newtime;
說明:
INTERVAL 在減法運算子的右側加上INTERVAL 指令,然後放上數值以及日期類型的話,可以將日期型別的值減去數值型別的值。

乘法運算子

數值*數值
範例
:
SELECT a,a*2 FROM number;

除法運算子

數值/數值
範例
:
SELECT a,a/7 FROM number;

餘數運算子

數值%數值
範例
:
SELECT a,a%5 FROM number;

比較運算子

等於運算子

數值=數值
日期=數值
字串=字串
範例
:
SELECT * FROM number WHERE a=1;
說明:
等於運算子是用來比較左邊與右邊是否相等的判斷式,在相等的情況為真,不相等的情況回傳為假。一般來說,等於運算子在使用WHERE敘述式的條件居多。

大於運算子

數值>數值
日期>數值
字串>字串
範例
:
SELECT * FROM number WHERE a>1;
SELECT * FROM number WHERE a>b;

大於等於運算子

數值>=數值
日期>=數值
字串>=字串
範例
:
SELECT * FROM number WHERE a>=1;

小於運算子

數值<數值
日期<數值
字串<字串
範例
:
SELECT * FROM number WHERE a<b;

不等於運算子

數值<>數值    數值!=數值
日期<>數值 日期!=數值
字串<>字串 字串!=字串
範例
:
SELECT * FROM number WHERE a!=b;
SELECT * FROM number WHERE a<>b;

SQL指令語法速查手冊(六)

INSERT INTO 插入資料
INSERT INTO TABLE(欄位,欄位...)
VALUES (值,值...)
範例
INSERT INTO sample(ID,name,price)
values(001,'cola',30);
INSERT INTO sample(ID,name)
values(001,'tea');
上述SQL敘述,沒有指定price欄位,所以自動補上NULL(空值)。
將SELECT的結果輸出到另一個資料表-INSERT INTO
INSERT INTO TABLE1(欄位,欄位...)
SELECT (欄位名稱) (欄位名稱)...
FROM (表格名稱)
WHERE (搜尋條件)
範例
INSERT INTO people(ID,name,age) SELECT * FROM people;

INSERT INTO people SELECT * FROM people;
INSERT INTO people(age) SELECT sum(age) FROM people;
UPDATE 更新資料
UPDATE TABLE
SET 欄位名稱=更新值, 欄位名稱=更新值...
WHERE (搜尋條件)
範例
UPDATE people set age=34 WHERE ID=6;
DELETE 刪除資料
DELETE FROM TABLE
WHERE (搜尋條件)
 DELETE語法是指定資料表然後刪除符合條件的值。通常使用時,會透過WHERE加入條件判斷,並刪除指定資料。如果沒有加上WHERE指定搜尋條件的情況,則會將資料表中所有資料刪除。另外TRUNCATE TABLE語法也是將資料表清空的指令。
範例
DELETE FORM people WHERE ID=7;

SQL指令語法速查手冊(五)

SELECT 從資料表取得資料
SELECT (欄位名稱) (欄位名稱)....
FROM (表格名稱)
WHERE (搜尋條件)
GROUP BY [HAVING ] (欄位名稱)
ORDER BY (欄位名稱)
範例
SELECT * FORM store;
SELECT name,price,cost FROM store;
SELECT name,price,cost FROM store WHERE price<50;

使用排序順序的查詢-ORDER BY
SELECT name,price,cost FROM store WHERE price<50
ORDER BY cost;

使用別名查詢
SELECT name,price,cost,price-cost FROM store;
SELECT name,price,cost,price-cost profit FROM store;
FROM 指定資料表
SELECT ....
FROM TABLE [TABLE2] [TABLE3]....
範例
SELECT student.name,homework.work FROM homework,student;
SELECT student.name,homework.work
FROM homework,student W=student.ID;
WHERE 指定條件
SELECT ...
FROM TABLE
WHERE (搜尋條件) [OR ,AND] ...
範例
SELECT * FROM student WHERE height>=170;
SELECT * FROM student WHERE height<170 OR weight<70;
SELECT * FROM student WHERE height between 170 AND 190;
GROUP BY 將資料群組化
SELECT ...
FROM TABLE
GROUP BY (欄位名稱)
 在寫GROUP BY 的語法時必須注意,使用的函數都必須是群組計算的概念。如果使用sum函數,將特定欄位計算得出值,就會是群組的總和,而不會是所有的值總和。在群組的語法後面加上WITH ROLLUP可以計算出所有群組的總和,指令中該語法最後一排會出現匯總的值,而該會總列的列名會被指定為NULL。
範例
SELECT * FROM store GROUP BY class;
SELECT class,sum(price),sum(cost) FROM store
GROUP BY class;
SELECT class,sum(price),sum(cost) FROM store
GROUP BY class WITH ROLLUP;
HAVING 對群組化的資料設定條件
SELECT...
FROM TABLE
GROUP BY (欄位名稱)
HAVING (搜尋條件)
  GROUP BY 語法群組化的資料取得時,如果要再進行搜尋條件設定的話,就必須使用HAVING語法。在沒有群組話之前的資料是透過WHERE語法來進行搜尋設定,而在群組化之後的資料就必須透過HAVING語法才能進行搜尋。
範例
SELECT class,sum(price),sum(cost) FROM store
GROUP BY class HAVING sum(cost)<40;
SELECT class,AVG(price),AVG(cost) FROM store
GROUP BY class;
ORDER BY 指定結果的排列方式
SELECT...
FROM TABLE
ORDER BY (欄位名稱)
ASC 由小到大
DESC 由大到小
範例
SELECT * FROM ball ORDER BY price DESC;
SELECT * FROM ball ORDER BY quantity ASC;
LIMIT 限制結果筆數
SELECT...
FROM TABLE
LIMIT (資料筆數)

LIMIT [開始筆數],[資料筆數]
 當我們同時使用WHERE語法指定條件與LIMIT指定筆數時,WHERE指定的條件判斷會被執行,執行完成才會執行LIMIT語法。也就是說WHERE與LIMIT的執行優先順序為WHERE優先於LIMIT。
範例
SELECT * FROM people limit 5;
SELECT * FROM people limit 3,4;