日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL基础部分总结

發布時間:2023/11/29 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL基础部分总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL

1、選擇數據庫

  • use dbname
  • show databases;
  • 2、數據表

  • show tables
  • mysql> show columns from customers;
  • mysql> desc customers;
  • 3、show 語句

  • show status
  • show create databases
  • show create table
  • show grants
  • 4、select 檢索

    4.1.1版本后不再區分大小寫,但是為了容易閱讀和調試,建議還是使用。

    mysql> select cust_name from customers; mysql> select cust_name cust_status from customers; mysql> select distinct vend_id from products; mysql> select prod_name from products limit 5; mysql> select prod_name from products limit 5,5; //分頁問題 從行0開始計數,limit5,5是從第5行開始(不包括第五行),取5行,結果是:6:10行 因為這個很容易引起誤解,所以MySQL5開始支持另一個語法:limit 4 offset 3,意思是從行3開始取4行,等同于limit 3,4

    4-1、排序數據

    //單個字段排序 mysql> select prod_name from products order by prod_name; //多個字段排序,如果第一個字段全部唯一則第二個字段就不會生效 mysql> select prod_id,prod_price,prod_name from products order by prod_price ,prod_name;

    4-2、指定排序方向

    • desc 降序
    • asc 升序-默認

    注意順序,from>ordrr by >limit

    mysql> select prod_id,prod_price,prod_name from products order by prod_price desc; mysql> select prod_id,prod_price,prod_name from products order by prod_price asc; mysql> select prod_price from products order by prod_price desc limit 1;

    5、where 條件

    相關操作符:

  • = 等于
  • <> 不等于
  • != 不等于
  • < 小于
  • > 大于
  • >= 大于或者等于
  • <= 小于或等于
  • between 兩者之間 and
  • and 的優先級大于or,需要處理or,則需要括號 mysql> select prod_price,prod_name from products where prod_price = 2.50; mysql> select prod_price,prod_name from products where prod_price between 5 and 10; // IS NULL mysql> select cust_id from customers where cust_email is null; 重點:空值檢查
    空值既是:NULL
    MySQL中判斷是否是空值的子句是: IS NULL

    example:

    mysql> select cust_id FROM customers where cust_email IS NULL; +---------+ | cust_id | +---------+ | 10002 | | 10005 | +---------+

    6、where 數據過濾

    (logical operator)邏輯操作符:and - or

    mysql> select prod_id,prod_price,prod_name from products where vend_id = 1003 and prod_price<= 10; mysql> select prod_id,prod_price,prod_name from products where vend_id = 1003 or vend_id = 1002;

    運算符優先級問題:
    下列SQL中實際先運行 vend_id = 1002 and prod_price >= 10;,再運行vend_id = 1003.因為and的優先級大于or,如果要按理想執行,加括號!

    mysql> select prod_id,prod_price,prod_name from products where vend_id = 1003 or vend_id = 1002 and prod_price >= 10; mysql> select prod_id,prod_price,prod_name from products where (vend_id = 1003 or vend_id = 1002 )and prod_price >= 10;

    6-1、 in操作符 (not in)

    mysql> select prod_id,prod_price,prod_name from products where vend_id in (1002,1003) order by prod_name;

    6-2、 or操作符

    mysql> select prod_id,prod_price,prod_name from products where vend_id not in (1002,1003) order by prod_name;

    7、用通配符過濾

    like 和 _ 的區別是后者只能匹配一個字符

    7-1、like

    **注意NULL 雖然似乎 % 通配符可以匹配任何東西,但有一個例
    外,即 NULL 。即使是 WHERE prod_name LIKE '%' 也不能匹配
    用值 NULL 作為產品名的行。**

    mysql> select prod_id,prod_price,prod_name from products where prod_name LIKE 'jet%';mysql> select prod_id,prod_price,prod_name from products where prod_name LIKE '%anv%';

    7-2、_

    mysql> select prod_id,prod_price,prod_name from products where prod_name LIKE '_ ton anvil';

    8、正則表達式

    like是匹配全部,REGEXP可以匹配全部和部分

    mysql> select prod_name from products where prod_name ='JetPack 1000'; +--------------+ | prod_name | +--------------+ | JetPack 1000 | +--------------+ 1 row in set (0.00 sec)mysql> select prod_name from products where prod_name REGEXP '1000'; +--------------+ | prod_name | +--------------+ | JetPack 1000 | +--------------+ 1 row in set (0.00 sec)

    默認不區分大小寫,需要區分大小寫binary

    mysql> select prod_name from products where prod_name REGEXP 'jetpack .000'; mysql> select prod_name from products where prod_name REGEXP binary 'JetPack .000';

    10、計算字段

  • concat 合并 講兩個字段合并成一個新的字段
  • mysql> select concat (vend_name , 'C',vend_country,')') from vendors order by vend_name; +-------------------------------------------+ | concat (vend_name , 'C',vend_country,')') | +-------------------------------------------+ | ACMECUSA) | | Anvils R UsCUSA) | | Furball Inc.CUSA) | | Jet SetCEngland) | | Jouets Et OursCFrance) | | LT SuppliesCUSA) | +-------------------------------------------+ 6 rows in set (0.00 sec)
  • rtrim (ltrim ,trim) 去掉空格
  • mysql> select concat (rtrim(vend_name) , 'C',vend_country,')') from vendors order by vend_name;
  • as 別名
  • mysql> select concat (rtrim(vend_name) , '(',rtrim(vend_country),')') as vend_title from vendors order by vend__name;
  • 計算
  • +、-、* 、\

    mysql> select quantity*item_price as expand_price from orderitems where order_num =20005;

    11、函數

  • trim、ltrim、rtrim 去掉空值
  • Upper 轉為大寫
  • mysql> select vend_name,upper(vend_name) as ven_name_upcase from vendors order by vend_name;

    11-2 時間函數

  • AddDate() 增加一個日期(天、周等)
  • AddTime() 增加一個時間(時、分等)
  • CurDate() 返回當前日期
  • CurTime() 返回當前時間
  • ==Date() 返回日期時間的日期部分==
  • DateDiff() 計算兩個日期之差
  • Date_Add() 高度靈活的日期運算函數
  • Date_Format() 返回一個格式化的日期或時間串
  • Day() 返回一個日期的天數部分
  • DayOfWeek() 對于一個日期,返回對應的星期幾
  • Hour() 返回一個時間的小時部分
  • Minute() 返回一個時間的分鐘部分
  • Month() 返回一個日期的月份部分
  • Now() 返回當前日期和時間
  • Second() 返回一個時間的秒部分
  • Time() 返回一個日期時間的時間部分
  • Year() 返回一個日期的年份部分
  • 取9月某一天的數據

    mysql> select cust_id,order_num from orders where Date(order_date) = '2005-09-01'; +---------+-----------+ | cust_id | order_num | +---------+-----------+ | 10001 | 20005 | +---------+-----------+ 1 row in set (0.00 sec)

    取9月整個月的訂單

    mysql> select cust_id,order_num from orders where Date(order_date) between '2005-09-01' and '2005-09-30'; +---------+-----------+ | cust_id | order_num | +---------+-----------+ | 10001 | 20005 | | 10003 | 20006 | | 10004 | 20007 | +---------+-----------+ 3 rows in set (0.00 sec)mysql> select cust_id,order_num from orders where Year(order_date) and month(order_date) = 9; +---------+-----------+ | cust_id | order_num | +---------+-----------+ | 10001 | 20005 | | 10003 | 20006 | | 10004 | 20007 | +---------+-----------+ 3 rows in set (0.00 sec)

    11-4 數值處理函數

  • Abs() 返回一個數的絕對值
  • Cos() 返回一個角度的余弦
  • Exp() 返回一個數的指數值
  • Mod() 返回除操作的余數
  • Pi() 返回圓周率
  • Rand() 返回一個隨機數
  • Sin() 返回一個角度的正弦
  • Sqrt() 返回一個數的平方根
  • Tan() 返回一個角度的正切
  • 11-5 聚集函數

  • AVG() 返回某列的平均值
  • COUNT() 返回某列的行數
  • MAX() 返回某列的最大值
  • MIN() 返回某列的最小值
  • SUM() 返回某列值之和
  • DISTINCT
  • mysql> select avg(prod_price) as avg_price from products;

    分組數據

    GROUP BY子句和HAVING子句

    mysql> select vend_id,count(*) as num_prods from products group by vend_id; +---------+-----------+ | vend_id | num_prods | +---------+-----------+ | 1001 | 3 | | 1002 | 2 | | 1003 | 7 | | 1005 | 2 | +---------+-----------+ 4 rows in set (0.00 sec)mysql> select vend_id,count(*) as num_prods from products group by vend_id with rollup; +---------+-----------+ | vend_id | num_prods | +---------+-----------+ | 1001 | 3 | | 1002 | 2 | | 1003 | 7 | | 1005 | 2 | | NULL | 14 | +---------+-----------+ 5 rows in set (0.00 sec) having
    唯一的差別是 WHERE過濾行,而HAVING過濾分組。WHERE在數據 分組前進行過濾,HAVING在數據分組后進行過濾 mysql> select vend_id,count(*) as num_prods from products group by vend_id having count(*)>=2; +---------+-----------+ | vend_id | num_prods | +---------+-----------+ | 1001 | 3 | | 1002 | 2 | | 1003 | 7 | | 1005 | 2 | +---------+-----------+ 4 rows in set (0.00 sec)mysql> select vend_id,count(*) as num_prods from products where prod_price>=10 group by vend_id having count(*)>=2; +---------+-----------+ | vend_id | num_prods | +---------+-----------+ | 1003 | 4 | | 1005 | 2 | +---------+-----------+ 2 rows in set (0.00 sec)mysql> select order_num ,sum(quantity*item_price) as ordertotal from orderitems -> group by order_num -> having sum(quantity*item_price) >= 50 -> order by ordertotal; +-----------+------------+ | order_num | ordertotal | +-----------+------------+ | 20006 | 55.00 | | 20008 | 125.00 | | 20005 | 149.87 | | 20007 | 1000.00 | +-----------+------------+ 4 rows in set (0.00 sec) 順序
    • select
    • from
    • where
    • group by
    • having
    • order by
    • limit

    12 子查詢

    mysql> select cust_id from orders where order_num in (select order_num from orderitems where prod_id ='TNT2'); +---------+ | cust_id | +---------+ | 10001 | | 10004 | +---------+

    15 連接表

    笛卡兒積(cartesian product)

    如果將兩個表同時作為數據源(from后的表名),不加任何的匹配條件,那么產生的結果集就是一個迪卡爾積。
    迪卡爾積的結果沒有意義,但是迪卡爾積是聯合查詢、連接查詢的基礎。

    1. 交叉連接 cross join

    使用表A中的1條記錄去表B中連接所有的記錄,就是笛卡爾積

    2. 內連接

    select 字段列表 from 表A 【inner】 join 表B ,匹配到的成功的記錄

    3. 外連接 分為左連接和右連接,

    左連接保留左邊的所有,右邊匹配到的部分

    4. using關鍵字

    在進行連接時,如果進行連接的兩個字段的名子相同,則可以使用using using('cid') 當前筆記出自 《MySQL必知必會》

    總結

    以上是生活随笔為你收集整理的MySQL基础部分总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 全程偷拍露脸中年夫妇 | 亚洲欧美一区二区三区久久 | 欧美高清hd | 精品国产av一区二区三区 | 国产精品丝袜 | 在线观看 亚洲 | 骚av在线 | 男生插女生视频 | 免费激情网站 | 国产操人| 免费黄色看片网站 | 免费无码不卡视频在线观看 | 五月天校园春色 | 国产高中女学生第一次 | 国产女女 | 国内精品999 | 欧美黄色a级大片 | 亚洲精品欧洲精品 | 精品国产aⅴ一区二区三区四川人 | 国产又色又爽无遮挡免费动态图 | 久久bb | 91嫩草香蕉 | 国产精品麻豆欧美日韩ww | 黄色一大片 | 天天做天天爱天天操 | 美女被草视频 | julia一区二区三区中文字幕 | 亚洲蜜桃视频 | 欧美三级电影在线观看 | 久久久久久久久久一区二区三区 | 亚洲一区二区精华 | 国产精品久久久久99 | 黑人精品一区二区三区不 | 色偷偷成人 | 成年人在线免费观看 | 国产精品国产三级国产aⅴ无密码 | 99re在线精品 | 67194少妇在线观看 | av在线三区 | 一道本在线观看视频 | 五月天堂网 | 日本熟女毛茸茸 | 美丽的小蜜桃2:美丽人生 | 久久人人添人人爽添人人片 | 性欧美大战久久久久久久免费观看 | 久久在线视频免费观看 | 亚洲青春草 | 影音先锋中文字幕在线播放 | 麻豆传媒网页 | 日本一区二区在线看 | 亚洲国产电影在线观看 | 91免费官网| 免费污视频在线观看 | 亚洲在线观看av | 亚洲色吧 | 丰满少妇被猛烈进入一区二区 | 欧美激情一级精品国产 | 正在播放91 | 69福利社区 | 在线欧美视频 | 华人色 | 操夜夜操| 日韩城人网站 | 亚洲色图偷拍视频 | 亚洲视频自拍偷拍 | 精品三级国产 | 黄色一级小视频 | 天天干干天天 | 2019亚洲天堂| av影院在线观看 | 视频1区2区 | 黄色一级视频在线观看 | 精品欧美 | 欧美极品一区二区三区 | 麻豆视频在线观看免费网站黄 | 伦理片久久 | 国产精品一区二区久久久 | 色偷偷噜噜噜亚洲男人的天堂 | 国产欧美日韩综合精品一区 | 秋霞成人av | 亚洲自拍成人 | 日本簧片在线观看 | 成人www. | 飘花影院伦理片 | 日日噜噜夜夜狠狠久久波多野 | 亚洲精品中文无码AV在线播放 | 国产高清免费在线观看 | 日韩一区二区三区电影 | 午夜精品久久久内射近拍高清 | 亚洲av片不卡无码久久 | 国产一级免费视频 | 91精品人妻一区二区三区蜜桃2 | 国内精品国产成人国产三级 | 国产一级视频免费观看 | 好看的中文字幕av | 三级麻豆 | 久久接色 | 91精品国产闺蜜国产在线闺蜜 | 色乱码一区二区三区在线男奴 |