自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL:我能玩出這花樣兒?

數(shù)據(jù)庫(kù) SQL Server
官方解釋: SQL (Structured Query Language:結(jié)構(gòu)化查詢語(yǔ)言) 是用于管理關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)。

[[405138]]

本文轉(zhuǎn)載自微信公眾號(hào)「杰哥的IT之旅」,作者三笠 。轉(zhuǎn)載本文請(qǐng)聯(lián)系菜杰哥的IT之旅公眾號(hào)。

前言

SQL是什么?

官方解釋: SQL (Structured Query Language:結(jié)構(gòu)化查詢語(yǔ)言) 是用于管理關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)。

SQL能用來(lái)干什么?

通俗的講: 讓您可以訪問(wèn)和處理數(shù)據(jù)庫(kù),包括數(shù)據(jù)插入、查詢、更新和刪除。

SQL

下面讓我們看看小美是如何零基礎(chǔ)學(xué)習(xí)SQL的:

女:Lucifer,最新領(lǐng)導(dǎo)讓我負(fù)責(zé)數(shù)據(jù)庫(kù)開(kāi)發(fā),需要寫(xiě)SQL,但是我零基礎(chǔ)沒(méi)學(xué)過(guò),有辦法快速入門(mén)嗎?

男:小美啊,SQL語(yǔ)言其實(shí)入門(mén)不難,我先來(lái)教你最簡(jiǎn)單的增刪改查基礎(chǔ)吧。

女:好的,我試試看,奧力給。

男:Ok,那我們先來(lái)一個(gè)最簡(jiǎn)單常用的SQL語(yǔ)句DUAL查詢:SELECT SYSDATE FROM DUAL;

sysdate

使用這個(gè)SQL語(yǔ)句可以查看數(shù)據(jù)庫(kù)當(dāng)前時(shí)間,當(dāng)然也可以把 SYSDATE 換成任意東西。

例如:

計(jì)算器:SELECT 365 * 24 FROM dual;

計(jì)算器

這個(gè)SQL我們?cè)陂_(kāi)發(fā)中會(huì)經(jīng)常用到,作為入門(mén)第一個(gè)SQL輕松有趣。小美,你覺(jué)得難嗎?

女:這個(gè)太實(shí)用了,以后計(jì)算器和日歷都可以省了,哈哈哈。

男:是的,其實(shí)我們剛剛已經(jīng)不經(jīng)意的學(xué)習(xí)了SQL語(yǔ)言增刪改查中的 查 操作了。接下來(lái),我要介紹一個(gè)新的對(duì)象:表 :是相關(guān)的數(shù)據(jù)項(xiàng)的集合,它由列和行組成。通俗的講,數(shù)據(jù)庫(kù)相當(dāng)于圖書(shū)館,表就類似于其中的一個(gè)個(gè)書(shū)架,表數(shù)據(jù)就類似于一本本書(shū)。我們查詢數(shù)據(jù)庫(kù)表的數(shù)據(jù),就好比我們進(jìn)入圖書(shū)館去找一本喜歡的書(shū)。我這么說(shuō),你能理解嗎?

查 的基本語(yǔ)法:select * from 表名;

女:可以可以,這個(gè)比喻我一下子就聽(tīng)懂了,原來(lái)數(shù)據(jù)庫(kù)查詢是這樣的,那表是怎么創(chuàng)建的呢?

男:不要著急,先來(lái)介紹一下數(shù)據(jù)庫(kù)中最常用的3個(gè)數(shù)據(jù)類型:NUMBER,VARCHAR2,DATE,分別為數(shù)字型,字符型,日期型。顧名思義,即用來(lái)定義表中列字段用來(lái)存放數(shù)據(jù)的類型。

數(shù)據(jù)類型

 

女:嗯嗯,這個(gè)能理解,跟java,C 好像有些相似。

男:嗯嗯。理解了這個(gè),就可以開(kāi)始建表了,現(xiàn)在來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的圖書(shū)館書(shū)架表。

  1. CREATE TABLE bookshelf 
  2. BOOK_ID NUMBER, 
  3. BOOK_NAME VARCHAR2(100), 
  4. BOOK_TYPE VARCHAR2(100), 
  5. AUTHOR VARCHAR2(100), 
  6. INTIME DATE 
  7. ); 

表名為:bookshelf,有列:圖書(shū)id,圖書(shū)名稱,圖書(shū)類型,作者,入庫(kù)時(shí)間。通過(guò)上面學(xué)習(xí)的 SELECT語(yǔ)法,來(lái)查詢一下這張表:

SELECT * FROM bookshelf;

查詢圖書(shū)表

可以發(fā)現(xiàn),新建的bookshelf表沒(méi)有任何記錄?,F(xiàn)在,圖書(shū)館里已經(jīng)增加一個(gè)空的書(shū)架,是不是需要將書(shū)放入書(shū)架上呢?這時(shí)就需要用到 增 操作了。

女:嗯嗯,很形象,感覺(jué)自己就像個(gè)圖書(shū)管理員一樣,哈哈哈。

男:哈哈,沒(méi)錯(cuò),我們數(shù)據(jù)庫(kù)管理員跟圖書(shū)管理員可以說(shuō)是異曲同工。好了,繼續(xù)說(shuō)放書(shū)吧,現(xiàn)在假設(shè)有一本書(shū)《飄》,作者:瑪格麗特·米切爾,類型:長(zhǎng)篇小說(shuō)?,F(xiàn)在通過(guò) INSERT 將這本書(shū)放入書(shū)架上:

  1. INSERT INTO bookshelf  
  2. (book_id, 
  3. book_name, 
  4. book_type, 
  5. author, 
  6. intime) 
  7. VALUES 
  8. (1, 
  9. '飄'
  10. '長(zhǎng)篇小說(shuō)'
  11. '瑪格麗特·米切爾'
  12. SYSDATE); 
  13. COMMIT

增 的基本語(yǔ)法:insert into 表名 (需要插入的列名,用逗號(hào)隔開(kāi)) values (對(duì)應(yīng)列名的值);

插入數(shù)據(jù)

通過(guò)sql查詢發(fā)現(xiàn),這本書(shū)《飄》已經(jīng)放入了書(shū)架上,可供大家借用和查看。

女:太形象了,那如果我把書(shū)的作者寫(xiě)錯(cuò)了,那怎么辦呢?再插入一條嗎?

男:這個(gè)問(wèn)題問(wèn)的很好,因?yàn)槿藶榈牟僮骺倳?huì)存在誤差,因此提出了 改 和 刪 兩種操作。

改 的基本語(yǔ)法:UPDATE 表名 SET 列名 = 新的值;

刪 的基本語(yǔ)法:DELETE FROM 表名;

現(xiàn)在來(lái)模擬一下場(chǎng)景:

1、修改作者名:

  1. UPDATE bookshelf SET author='Margaret Mitchell'
  2. COMMIT

修改作者名

2、下架圖書(shū):

  1. DELETE FROM bookshelf; 
  2. COMMIT

圖書(shū)下架

通過(guò)以上兩個(gè)場(chǎng)景,演示了 改 和 刪 兩種操作。

女:lucifer,你講的很明了,我現(xiàn)在已經(jīng)懂了增刪改查四種操作了,迫不及待想要?jiǎng)邮珠_(kāi)始操作了!

男:小美,先別急,你沒(méi)有發(fā)現(xiàn)一個(gè)嚴(yán)重的問(wèn)題嗎?如果書(shū)架上不止一本書(shū)呢?那你怎么對(duì)指定的那本書(shū)進(jìn)行操作呢?有思考過(guò)嗎?

女:對(duì)哦,上面都是演示的一本書(shū),如果有多本書(shū),是不是也有對(duì)應(yīng)的操作可以來(lái)篩選呢?

男:沒(méi)錯(cuò),很聰明?,F(xiàn)在隆重有請(qǐng) WHERE 查詢條件登場(chǎng)。正如上面所說(shuō),WHERE 子句用于提取那些滿足指定條件的記錄

先上架3本書(shū):

  1. INSERT INTO bookshelf (book_id,book_name,book_type,author,intime) VALUES (1,'飄','長(zhǎng)篇小說(shuō)','瑪格麗特·米切爾',SYSDATE); 
  2. INSERT INTO bookshelf (book_id,book_name,book_type,author,intime) VALUES (2,'傾城之戀','愛(ài)情小說(shuō)','張愛(ài)玲',SYSDATE); 
  3. INSERT INTO bookshelf (book_id,book_name,book_type,author,intime) VALUES (3,'從你的全世界路過(guò)','短篇小說(shuō)','張嘉佳',SYSDATE); 
  4. COMMIT

插入數(shù)據(jù)

查看《傾城之戀》:

  1. SELECT * FROM bookshelf WHERE BOOK_NAME = '傾城之戀'

查看《傾城之戀》

更新《飄》:

  1. UPDATE bookshelf SET author='Margaret Mitchell' WHERE book_name = '飄'
  2. COMMIT

更新《飄》

刪除《從你的全世界路過(guò)》:

  1. DELETE FROM bookshelf WHERE book_name = '從你的全世界路過(guò)'
  2. COMMIT

刪除《從你的全世界路過(guò)》

通過(guò)上面的幾個(gè)栗子??,應(yīng)該能很好的理解 WHERE 查詢條件的使用了。

女:懂了懂了,lucifer,我現(xiàn)在是不是可以去開(kāi)發(fā)了?好像練練手啊!!!

男:嗯?,F(xiàn)在只能說(shuō)是入門(mén)了,會(huì)簡(jiǎn)單的增刪改查是數(shù)據(jù)庫(kù)開(kāi)發(fā)的第一部,所有的數(shù)據(jù)庫(kù)操作都是基于SQL語(yǔ)言的。

女:好的好的。有問(wèn)題了,我在繼續(xù)問(wèn)你,謝謝lucifer!!!Thanks?(?ω?)?。

另外,這跟大家分享三個(gè)一句SQL畫(huà)圖的趣味小玩意兒:

五角星:

  1. WITH a AS 
  2.  (SELECT DISTINCT round(SUM(x) over(ORDER BY n)) x, 
  3.                   round(SUM(y) over(ORDER BY n)) y 
  4.     FROM (SELECT n, 
  5.                  cos(trunc(n / 20) * (1 - 1 / 5) * 3.1415926) * 2 x, 
  6.                  sin(trunc(n / 20) * (1 - 1 / 5) * 3.1415926) y 
  7.             FROM (SELECT rownum - 1 n 
  8.                     FROM all_objects 
  9.                    WHERE rownum <= 20 * 5))) 
  10. SELECT REPLACE(sys_connect_by_path(point, 
  11.                                    '/'), 
  12.                '/'
  13.                NULL) star 
  14.   FROM (SELECT b.y, 
  15.                b.x, 
  16.                decode(a.x, 
  17.                       NULL
  18.                       ' '
  19.                       '*') point 
  20.           FROM a, 
  21.                (SELECT * 
  22.                   FROM (SELECT rownum - 1 + (SELECT MIN(x) 
  23.                                                FROM a) x 
  24.                           FROM all_objects 
  25.                          WHERE rownum <= (SELECT MAX(x) - MIN(x) + 1 
  26.                                             FROM a)), 
  27.                        (SELECT rownum - 1 + (SELECT MIN(y) 
  28.                                                FROM a) y 
  29.                           FROM all_objects 
  30.                          WHERE rownum <= (SELECT MAX(y) - MIN(y) + 1 
  31.                                             FROM a))) b 
  32.          WHERE a.x(+) = b.x 
  33.            AND a.y(+) = b.y) 
  34.  WHERE x = (SELECT MAX(x) 
  35.               FROM a) 
  36.  START WITH x = (SELECT MIN(x) 
  37.                    FROM a) 
  38. CONNECT BY y = PRIOR y 
  39.        AND x = PRIOR x + 1; 

五角星

調(diào)整期中數(shù)字5, 你還可以輸出7角星, 9角星。

奧運(yùn)五環(huán):

  1. WITH a AS 
  2.  (SELECT DISTINCT round(a.x + b.x) x, 
  3.                   round(a.y + b.y) y 
  4.     FROM (SELECT (SUM(x) over(ORDER BY n)) x, 
  5.                  round(SUM(y) over(ORDER BY n)) y 
  6.             FROM (SELECT n, 
  7.                          cos(n / 30 * 3.1415926) * 2 x, 
  8.                          sin(n / 30 * 3.1415926) y 
  9.                     FROM (SELECT rownum - 1 n 
  10.                             FROM all_objects 
  11.                            WHERE rownum <= 30 + 30))) a, 
  12.          (SELECT n, 
  13.                  (SUM(x) over(ORDER BY n)) x, 
  14.                  round(SUM(y) over(ORDER BY n)) y 
  15.             FROM (SELECT n, 
  16.                          cos(m / 3 * 3.1415926) * 2 * 15 x, 
  17.                          sin(m / 3 * 3.1415926) * 15 y 
  18.                     FROM (SELECT CASE 
  19.                                    WHEN rownum <= 2 THEN 
  20.                                     3 
  21.                                    WHEN rownum = 3 THEN 
  22.                                     -2 
  23.                                    ELSE 
  24.                                     -6 
  25.                                  END m, 
  26.                                  rownum - 1 n 
  27.                             FROM all_objects 
  28.                            WHERE rownum <= 5))) b) 
  29. SELECT REPLACE(sys_connect_by_path(point, 
  30.                                    '/'), 
  31.                '/'
  32.                NULL) star 
  33.   FROM (SELECT b.y, 
  34.                b.x, 
  35.                decode(a.x, 
  36.                       NULL
  37.                       ' '
  38.                       '*') point 
  39.           FROM a, 
  40.                (SELECT * 
  41.                   FROM (SELECT rownum - 1 + (SELECT MIN(x) 
  42.                                                FROM a) x 
  43.                           FROM all_objects 
  44.                          WHERE rownum <= (SELECT MAX(x) - MIN(x) + 1 
  45.                                             FROM a)), 
  46.                        (SELECT rownum - 1 + (SELECT MIN(y) 
  47.                                                FROM a) y 
  48.                           FROM all_objects 
  49.                          WHERE rownum <= (SELECT MAX(y) - MIN(y) + 1 
  50.                                             FROM a))) b 
  51.          WHERE a.x(+) = b.x 
  52.            AND a.y(+) = b.y) 
  53.  WHERE x = (SELECT MAX(x) 
  54.               FROM a) 
  55.  START WITH x = (SELECT MIN(x) 
  56.                    FROM a) 
  57. CONNECT BY y = PRIOR y 
  58.        AND x = PRIOR x + 1; 

奧運(yùn)五環(huán)

打印當(dāng)月日歷:

  1. SELECT MAX(decode(dow, 
  2.                   1, 
  3.                   d, 
  4.                   NULL)) sun, 
  5.  
  6.        MAX(decode(dow, 
  7.                   2, 
  8.                   d, 
  9.                   NULL)) mon, 
  10.  
  11.        MAX(decode(dow, 
  12.                   3, 
  13.                   d, 
  14.                   NULL)) tue, 
  15.  
  16.        MAX(decode(dow, 
  17.                   4, 
  18.                   d, 
  19.                   NULL)) wed, 
  20.  
  21.        MAX(decode(dow, 
  22.                   5, 
  23.                   d, 
  24.                   NULL)) thu, 
  25.  
  26.        MAX(decode(dow, 
  27.                   6, 
  28.                   d, 
  29.                   NULL)) fri, 
  30.  
  31.        MAX(decode(dow, 
  32.                   7, 
  33.                   d, 
  34.                   NULL)) sat 
  35.  
  36.   FROM (SELECT rownum d, 
  37.  
  38.                rownum - 2 + to_number(to_char(trunc(SYSDATE, 
  39.                                                     'MM'), 
  40.                                               'D')) p, 
  41.  
  42.                to_char(trunc(SYSDATE, 
  43.                              'MM') - 1 + rownum, 
  44.                        'D') dow 
  45.  
  46.           FROM all_objects 
  47.  
  48.          WHERE rownum <= 
  49.  
  50.                to_number(to_char(last_day(to_date(SYSDATE)), 
  51.                                  'DD'))) 
  52.  
  53.  GROUP BY trunc(p / 7) 
  54.  
  55.  ORDER BY sun NULLS FIRST

打印日歷

 

責(zé)任編輯:武曉燕 來(lái)源: 杰哥的IT之旅
相關(guān)推薦

2019-11-26 14:11:52

互聯(lián)網(wǎng)裁員員工

2021-01-19 05:29:41

代碼Git 工作流

2021-03-26 10:48:14

代碼語(yǔ)言提交

2024-06-11 09:52:39

2021-10-11 08:21:23

@Valuespringspring框架

2022-05-09 08:01:23

countdistinctMySQL

2021-08-04 12:26:00

Postman工具頻率

2022-09-14 12:00:51

React路由庫(kù)前端

2021-09-01 05:41:03

Promise CLI項(xiàng)目

2025-03-28 10:39:17

C++宏定義語(yǔ)言

2016-05-27 17:56:35

互聯(lián)網(wǎng)

2017-05-22 15:50:38

ICT華為生態(tài)之行

2017-08-02 17:33:09

互聯(lián)網(wǎng)

2017-05-09 15:53:43

VR創(chuàng)新AR

2020-11-04 07:32:01

AI技術(shù)

2024-06-18 08:46:06

2022-04-11 11:38:44

Python代碼游戲

2020-03-03 13:55:38

騰訊手機(jī)QQ
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)