sql語句學(xué)習(xí)總結(jié)

先總結(jié)

sql語句按W3Cschool上分類有數(shù)據(jù)庫操作語言和數(shù)據(jù)庫定義語言兩個部分組成徽曲,根據(jù)那那種分法可以讓我們更好的理解SQL陷谱,另外自己在網(wǎng)上找到一張圖片绞惦,可以讓我更好的寫出SQL語句易核。在后期的學(xué)習(xí)中在一一在每條SQL語句下補上學(xué)習(xí)心得狼电。

mysql執(zhí)行順序.png

               mysql執(zhí)行順序

SQL包括兩個部分:數(shù)據(jù)操作語言 (DML) 和 數(shù)據(jù)定義語言 (DDL)。

DML部分:
  • SELECT - 從數(shù)據(jù)庫獲取數(shù)據(jù)
  • UPDATE - 更新數(shù)據(jù)庫數(shù)據(jù)
  • DELETE - 刪除數(shù)據(jù)庫數(shù)據(jù)
  • INSERT INTO - 向數(shù)據(jù)庫中插入數(shù)據(jù)
DDL重要部分:
  • CREATE DATABASE - 常見數(shù)據(jù)庫
  • ALTER DATABASE - 修改數(shù)據(jù)庫
  • CREATE TABLE - 創(chuàng)建表
  • ALTER TABLE - 修改表
  • DROP TABLE - 刪除表
  • CREATE INDEX - 創(chuàng)建索引
  • DROP INDEX - 刪除索引

數(shù)據(jù)庫

  • show database 查看所有數(shù)據(jù)庫
  • use database_name 選數(shù)據(jù)庫
  • show tables 查看指定數(shù)據(jù)庫中的所有表
  • rename table old_name to new_name 修改表名

基礎(chǔ)用法

1.select語句:從表中選取數(shù)據(jù)盆均,結(jié)果放在一個結(jié)果表中
       SELECT 列名稱 FROM 表名稱

2.select distinct:從表中選出唯一的值
       SELECT DISTINCT 列名稱 FROM 表名稱

3.where 子句:有條件的從表中選擇數(shù)據(jù)
       SELECT 列名稱 FROM 表名稱 WHERE 列 運算符 值
       其中操作符between表示兩者之間塞弊,like表示按某種搜索模式

4.and & or:基于一個以上的條件對記錄進行過濾,用于where子句中

5.order by:用于根據(jù)指定的列(可以多列)對數(shù)據(jù)結(jié)果集進行排序泪姨;倒序DESC游沿,ASC
      正序。

6.insert into:向表中插入新的行
       INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

7.update:修改表中的數(shù)據(jù)
      UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值

8.delete:刪除表中的行
      DELETE FROM 表名稱 WHERE 列名稱 = 值

9.limit:規(guī)定要返回記錄的數(shù)目
    SELECT * FROM TABLE_NAME LIMIT NUM


where子句的各種操作

10.like:在where的子句中搜索列的指定模式
    用好通配符:
        %:替代一個或多個字符
       “估-:替代一個字符
         [ ABC]:ABC中的任何一個
         [!ABC]:不包括ABC任何一個
11.in:規(guī)定where子句中規(guī)定多個值

12.between and:where子句中選取介于兩個值之間的范圍(mysql包括兩端

13.alias:為列名稱和表名稱建立別號
    表的alias語法:select column_name from table_name as alias_name 
   列的alias語法:select column_name as alias_name from table_name


join操作

14.join:用于根據(jù)兩個或多個表中的列之間的關(guān)系诀黍,從這些表中查詢數(shù)據(jù)

15.inner join:內(nèi)連接,在表中存在至少存在一個匹配時仗处,該關(guān)鍵字返回行
       SELECT column_name(s) 
       FROM table_name1
       INNER JOIN table_name2
       ON table_name1.column_name=table_name2.column_name

16.left join:左鏈接眯勾,此關(guān)鍵字會從左表(table_name1)中返回所有行枣宫,即        使在有右表(table_name2)中沒有匹配
      SELECT column_name(s)
      FROM table_name1
      LEFT JOIN table_name2
      ON table_name1.column_name=table_name2.column_name

17.right join:右鏈接,此關(guān)鍵字會在右表(table_name2)返回所有行吃环,即使在左表
      (table_name1)中沒有匹配的行

18.full join:只要其中某個表存在匹配也颤,此關(guān)鍵字就會返回左右表均有的行

多表操作

19.union:用于合并兩個或者多個select語句,使用“union all”可以包括重復(fù)的值

20.select into:從一個表中選取數(shù)據(jù)插入另一個表郁轻,主要用于備份數(shù)據(jù)       〕崛ⅰSELECT */column_name
        INTO new_table_name [ in externaldatabase]
        FROM table_name1
        INNER JOIN table_name2
       ON Person.Id_P = Orders.Id_P

21.CREATE DATABASE database_name:創(chuàng)建數(shù)據(jù)庫

22.CREATE TABLE table_name(
      列名稱1,列類型
      列名稱2好唯,列類型
      列名稱3竭沫,列類型
)


sql數(shù)據(jù)類型.PNG

SQL約束

約束:用于顯示加入表中列的數(shù)據(jù)類型,可在建表時(CREATE TABLE)或者建表后(ALTER TABLE)

23.NOT NULL:強制不接受NULL值骑篙,如果不包括值時就不能插入

24.UNIQUE:唯一標(biāo)識數(shù)據(jù)庫中的每條記錄蜕提。

  • UNIQUE(Id_P)
  • CONSTRAINT uc_PersonID UNIQUE(Id_P, lastname)
  • ALTER TABLE persons ADD UNIQUE(Id_P)
  • ALTER TABLE persons ADD CONSTRAINT us_PersonID UNIQUE( Id_P, lastname )
  • ALTER TABLE persons DROP INDEX person_id

25.PRIMARY KEY:用法與上面一樣,但還是KEY每個表只有一個替蛉,而unique可以有多個

  • PRIMARY KEY (id_p)
  • CONSTRAINT us_personID PRIMARY KEY (id_p贯溅,last name)
  • ALTER TABLE persons ADD PRIMARY KEY (id_P)
  • ALTER TABLE persons ADD CONSTRAINT uc_personId PRIMARY KEY (p_id, person_id)
  • ALTER TABLE persons DROP PRIMARY KEY

26.FOREIGN KEY:指向另一個表中的PRIMARY KEY

  • FOREIGN KEY (p_id) REFERENCES persons (p_id)
  • CONSTRAINT uc_personID FOREIGN KEY (p_id) REFERENCES persons (p_id)
  • ALTER TABLE orders ADD FOREIGN KEY (p_id) REFERENCES persons (p_id)
  • ALTER TABLE orders ADD CONSTRAINT uc_personID FOREIGN KEY (p_id) REFERENCES persons (p_id)
  • ALTER TABLE orders DROP FOREIGN KEY (p_id)

27.CHECK:用于限制列中值的范圍

  • CHECK (ID_p > 0)
  • CONSTRAINT chk_person CHECK( ID_P >0 AND city = 'Sandnes')
  • ALTER TABLE persons ADD CHECK (ID_p > 0)
  • ALTER TABLE persons ADD CONSTRAINT chk_persons CHECK( ID_P >0 AND city = 'Sandnes')
  • ALTER TABLE persons DROP CHECK chk_person

28.DEFAULT:用于向列中插入默認(rèn)值

  • DEFAULT "值"
  • ALTER TABLE persons
    ALTER City Set DEFAULT "值"
  • ALTER TABLE persons
    ALTER City DROP DEFAULT

引用

CREATE INDEX用于在表中創(chuàng)建索引拄氯,在不讀取表的情況下躲查,索引使數(shù)據(jù)庫應(yīng)用程序可以更快的查找數(shù)據(jù)

29.CREATE INDEX 語法

  • 普通的
    CREATE INDEX index_name
    ON table_name(column_name)
  • 唯一的
    CREATE UNIQUE INDEX index_name
    ON table_name(column_name)

30.DROP語法
ALTER TABLE table_name DROP INDEX index_name
TRUNCATE TABLE 表名稱——清空表

31.ALTER TABLE:用于在已有的表中添加、修改或者刪除列

  • 增加列
    ALTER TABLE table_name
    ADD column_name datatype
  • 刪除列
    ALTER TABLE table_name
    DROP COLUMN column_name
  • 改變列
    ALTER TABLE table_name
    ALTER COLUMN column_name datatype

32.AUTO-INCREMENT:自動創(chuàng)建主鍵值

33.CREATE VIEW:創(chuàng)建視圖

  • 創(chuàng)建視圖
    CREATE VIEW [view_name] AS
    SELECT column_name
    FROM table_name
    WHERE condition
  • 撤銷視圖
    DROP VIEW vie_name
  • 更新視圖
    CREATE OR REPLACE VIEW [view_name] AS
    注釋:視圖儲存的是一個sql語句译柏,更新視圖只能對沒有計算過的視圖進行操作镣煮,此處有一個algorithm=merge,temptable

34.mysql的Date數(shù)據(jù)類型

  • DATE - 格式 : YYYY-MM-DD
  • DATETIME - 格式: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS
  • YEAR - 格式: YYYY 或 YY
mysql的date函數(shù).PNG

35.NULL值是可選字段鄙麦,必須用IS NULL 和IS NOT NULL 操作符

  • IFNULL(UnitsOnOrder,0)典唇,null時用-0取代
  • COALESCE(UnitsOnOrder,0)

SQL函數(shù)

    SELECT function(列) FORM 表

基本類型

  • Aggregate 函數(shù):此函數(shù)操作面向一系列的值,并返回單一的值
  • Scalar 函數(shù):此函數(shù)操作單一的值胯府,返回基于輸入值的但一值
  • 1.AVG函數(shù):求平均數(shù)
    SELECT AVG(column_name) from table_name

  • 2.COUNT函數(shù):返回指定列的值的數(shù)目
    SELECT COUNT(column_name) from table_name
    SELECT COUNT(DISTINCT column_name) from table_name

  • 3.FIRST函數(shù):返回指定字段中的第一個記錄的值
    SELECT FIRST(column_name) from table_name

  • 4.LAST函數(shù):返回指定字段中指定的最后一個記錄的值
    SELECT LAST(column_name) from table_name

  • 5.MAX函數(shù):返回指定列中最大的值介衔,不包括NULL
    SELECT MAX(column_name) from table_name

  • 6.MIN函數(shù):返回指定列中最小的值,不包括NULL
    SELECT MIN(column_name) from table_name

  • 7.SUM函數(shù):返回數(shù)字列的總數(shù)
    SELECT SUM(column_name) from table_name

  • 8.Group by函數(shù):結(jié)合合計函數(shù)骂因,根據(jù)一個或多個列對結(jié)果集進行分組
    SELECT column_name, aggregate_function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name1炎咖,column_name2
    注釋:group沒有順序之分,只要不同就要按不同的組顯示

  • 9.Having子句:篩選結(jié)果

  • 10.UCASE函數(shù):把字段的值轉(zhuǎn)換為大寫
    SELECT UCASE(column_name) FROM table_name

  • 11.LCASE函數(shù):把字段的值轉(zhuǎn)換為小寫
    SELECT LCASE(column_name) FROM table_name

  • 12.MID函數(shù):從文本字段中提取字符
    SELECT MID(column_name,start,length) FROM table_name

  • 13.LEN函數(shù):返回文本字段中值的長度
    SELECT LEN(column_name) FROM table_name

  • 14.ROUND函數(shù):用于把數(shù)字字段舍入為指定的小數(shù)位數(shù)
    SELECT ROUND(column_name,decimals) FROM table_name

  • 15.NOW函數(shù):返回當(dāng)前的日期和時間
    SELECT NOW() FORM table_name

  • 16.FORMAT函數(shù):用于對字段的顯示進行格式化
    SELECT FORMAT(column_name,format) FROM table_name

唯一性索引:該數(shù)據(jù)列可以為空寒波,但是只要有數(shù)據(jù)就必須保證此列取值的唯一性

數(shù)據(jù)類型:decimal 和 numeric(相同的類型)類型用于保存必須為確切精度的值乘盼,如貨幣數(shù)據(jù),最大位數(shù)為65位俄烁。decimal(5,2):5位绸栅,小數(shù)點后2位

SQL模式:嚴(yán)格和不嚴(yán)格
查看模式:select @@sql_mode;
設(shè)置模式:set global sql_mode= '';

char和varchar區(qū)別:比較時var去掉空格,varchar不去掉空格页屠;

找出非法ENUM列:
select * from tab_name where enum_col=0;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末粹胯,一起剝皮案震驚了整個濱河市蓖柔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌风纠,老刑警劉巖渊抽,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異议忽,居然都是意外死亡懒闷,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門栈幸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來愤估,“玉大人,你說我怎么就攤上這事速址⊥嫜妫” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵芍锚,是天一觀的道長昔园。 經(jīng)常有香客問我,道長并炮,這世上最難降的妖魔是什么默刚? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮逃魄,結(jié)果婚禮上荤西,老公的妹妹穿的比我還像新娘。我一直安慰自己伍俘,他們只是感情好邪锌,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著癌瘾,像睡著了一般觅丰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妨退,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天妇萄,我揣著相機與錄音,去河邊找鬼碧注。 笑死嚣伐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的萍丐。 我是一名探鬼主播轩端,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼逝变!你這毒婦竟也來了基茵?” 一聲冷哼從身側(cè)響起奋构,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拱层,沒想到半個月后弥臼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡根灯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年径缅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烙肺。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡纳猪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出桃笙,到底是詐尸還是另有隱情氏堤,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布搏明,位于F島的核電站鼠锈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏星著。R本人自食惡果不足惜购笆,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望强饮。 院中可真熱鬧由桌,春花似錦为黎、人聲如沸邮丰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剪廉。三九已至,卻和暖如春炕檩,著一層夾襖步出監(jiān)牢的瞬間斗蒋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工笛质, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泉沾,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓妇押,卻偏偏與公主長得像跷究,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子敲霍,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • SQL SELECT 語句 一俊马、查詢SQL SELECT 語法 (1)SELECT 列名稱 FROM 表名稱 (2...
    有錢且幸福閱讀 5,426評論 0 33
  • 學(xué)習(xí)web安全足足有一個半月有余柴我,之前學(xué)的是前端解寝,也會一點python。艘儒。好吧差不多忘了聋伦。常規(guī)工具算是熟悉基本...
    一葉紅塵哦喲閱讀 3,363評論 4 92
  • mysql和oracle語法都差不多,但還是有差別界睁,查閱資料后我總結(jié)了一套完整的sql語句大全嘉抓,供初學(xué)者學(xué)習(xí) 1....
    譚魚魚閱讀 1,836評論 0 4
  • 也許,漫漫人生路晕窑,自己一個人追趕著某人抑片,那人不曾停下腳步,你只能一路悶頭追隨杨赤,他的速度太快敞斋,你無法與他一直同步。 ...
    亦心戀閱讀 275評論 0 1
  • 去年的九月 我攜家人去壩上草原看戰(zhàn)友 戰(zhàn)友的女兒 也就是照片中這位小天使 六歲的小女孩 乖巧的讓人心痛 我甚至有些...
    土地坡老兵軍哥閱讀 426評論 0 4