如何學習SQL語法? 該學習MySQL或是MS SQL?

SQL (Structured Query Language) 語法有很多種,例如ANSI-SQL、MySQL、Transact-SQL (Microsoft)、PostgreSQL、PL/SQL (Oracle) 等。各種SQL不一定完全遵循標準,因此有些SQL之間會有些微差異,特別是在日期時間語法、字串連接等處理。

因此在學習SQL時,我們應該以哪種為主呢? 其實就是以你會經常使用的為主,然後再去注意跟其他SQL不同的地方。

例如 : 

Transact-SQL會這麼寫

SELECT TOP 10 (*) FROM users ORDER BY age;

MySQL則會這麼寫

SELECT * FROM users ORDER BY age LIMIT 10;

例如 : 

Transact-SQL會這麼寫

SELECT ISNULL(0, age) FROM users;

但是MySQL會這麼寫

SELECT CASE
     WHEN age IS NULL THEN '0' 
     ELSE age END AS age
FROM users;

不過學習這些語法,並不是透過死記,而是由理解開始,以及知道基本知識

例如SQL語法有哪四大類型? DDL (資料定義語言)、DML (資料處理語言)、DCL (資料控制語言)、TCL (交易控制語言)。各類型的SQL語法包含哪些? 如果連這些都不知道,那就會鬧笑話了。

參考資料 : https://www.mysql.tw/2017/03/sql.html

詳細的語法只需要可以查到即可。只要你經常使用,自然就會背起來,就算忘了,再去查詢就好了。

例如太久沒用,可能只記得插入資料是INSERT INTO,但是忘了後面是什麼? 查詢一下就又記得語法應該是 :

INSERT INTO table_name (column1, column2, column3...) VALUES (value1, value2, value3...);

或是

INSERT INTO table_name VALUES (value1, value2, value3...);
如果沒有寫欄位,表示要依序插入所有欄位。

MySQL或是各種SQL都是case insensitive (沒有大小寫之分),所以你寫 :

SELECT * FROM student;

或是

select * from student;

其實都是一樣的。

以下是一些SQL語法的參考來源 :

https://dev.mysql.com/doc/refman/8.0/en/sql-statements.html
https://www.w3schools.com/mysql/mysql_sql.asp
https://www.1keydata.com/tw/sql/sql.html
https://www.codecademy.com/article/sql-commands
https://www.fooish.com/sql/syntax.html
https://www.tutorialspoint.com/sql/index.htm

以及線上編譯服務 :

https://sqliteonline.com/
https://onecompiler.com/mysql
https://paiza.io/en/languages/mysql

除了SQL語法之外,還需要知道資料型態 (Data Type)。

例如 : 

MS SQL 的整數資料型態有int、tinyint、smallint、bigint

MySQL 的整數資料型態則有integer、int、tinyint、smallint、mediumint、bigint

以下是參考來源 :

https://www.w3schools.com/sql/sql_datatypes.asp
https://dev.mysql.com/doc/refman/8.0/en/data-types.html
https://www.mysqltutorial.org/mysql-data-types.aspx

另外,還需要知道字元集,以下是參考來源 :

https://www.mysql.tw/2013/03/mysql-character-set-collation.html

接著就是要知道Stored Procedure/Function/Trigger,以下是參考來源 :

https://www.mysql.tw/2018/06/mysql-stored-procedurestored_3.html
https://www.mysqltutorial.org/mysql-triggers/mysql-after-insert-trigger/
https://www.mysqltutorial.org/mysql-stored-procedure-tutorial.aspx
https://ithelp.ithome.com.tw/articles/10267932
https://www.sqlshack.com/learn-mysql-the-basics-of-mysql-stored-procedures/

除此之外,SQL最終就是要與程式結合,所以再來就是要知道SQL如何與各程式語言界接,以下是PHP的參考來源 :

https://www.mysql.tw/2021/12/mysql-php-example.html
https://www.mysql.tw/2021/11/mysql-php.html
https://ithelp.ithome.com.tw/articles/10254637
https://hackmd.io/@Heidi-Liu/note-be101-php-and-mysql

除了以上的學習資源之外,當然還有人工智慧的學習助理,一個是大家熟悉的ChatGPT助教,另一個是專門協助替大家在SQL上解答問題的SQLchat.ai

以上就是學習SQL的整個應該知道的東西,後續文章再來談上述相關實作。

張貼留言

0 留言