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

歡迎訪問 生活随笔!

生活随笔

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

数据库

MySQL 笔记3 -- SQL 语言

發布時間:2025/3/12 数据库 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 笔记3 -- SQL 语言 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL 筆記3 – SQL 語言


MySQL 系列筆記是筆者學習、實踐MySQL數據庫的筆記

課程鏈接: MySQL 數據庫基礎入門教程
參考文檔:
MySQL 官方文檔


一、 SQL語言規范


  • SQL關鍵字、對象名、和列名不區分大小寫
  • 字符值和日期值要區分大小寫
  • 在應用程序中如果SQL語句文本很長,可以將語句分布到多行上,并且可以通過使用跳格和縮進提高代碼的可讀性
  • SQL語句以分號(;)結束。

二、 DDL:數據定義(definition)語言


功能語句
創建數據庫create database 數據庫名 character set utf8;
修改數據庫alter database 數據庫名 charactor set gbk;
創建表CREATE TABLE 表名(列名1 類型 [約束],列名2 類型 [約束]);
添加一列ALTER TABLE 表名 ADD 列名 數據類型;
查看表的字段信息DESC 表名;
修改表的字段類型ALTER TABLE 表名 MODIFY 字段名 數據類型;
刪除一列ALTER TABLE 表名 DROP 字段名;
修改表名RENAME TABLE 原始表名 TO 要修改的表名;
查看表的創建細節SHOW CREATE TABLE 表名;
修改表的字符集ALTER TABLE 表名 CHARACTER SET 字符集名稱;
修改表的列名ALTER TABLE 表名 CHANGE 原始列名 新列名 數據類型;
刪除表DROP TABLE 表名;

三、 DML:數據操作(manipulation)語言


1、插入操作

語句:

單行插入:INSERT INTO 表名(列名1,列名2 …)VALUE (列值1,列值2…);
多行插入:INSERT INTO 表名(列名1,列名2 …)VALUES (列值1,列值2…),(列值1,列值2…);

要點:

  • 列名與列值的類型、個數、順序要一一對應
  • 值不要超出列定義的長度
  • 插入的日期和字符一樣,都使用引號括起來
  • 可以省略列名,VALUE 按表頭順序填寫

2、更新操作

語句:

更新某幾列值:UPDATE 表名 SET 列名1=列值1,列名2=列值2
更新某行的某幾列值:UPDATE 表名 SET 列名1=列值1,列名2=列值2 WHERE 列名=值;

要點:

  • 如果列值為數字類型,可以使用運算符

實例: 修改數據庫密碼

------ # 方法1:適用于舊版 # 進入數據庫 use mysql; # 修改表 update user set password=password('abc') WHERE User='root'; ------ # 方法2:適用于新版 # 直接在數據庫管理系統中修改 update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost'; # 刷新MySQL的系統權限相關表 flush privileges; ------ # 方法3:適用命令行 mysqladmin -u root -p password 12356

3、刪除操作

語句:

刪除1:DELETE FROM 表名 [WHERE 列名=值]
刪除2:TRUNCATE TABLE 表名;

區別:

  • DELETE 刪除表中的數據,表結構還在,刪除后的數據可以找回
  • TRUNCATE 刪除是把表直接DROP掉,然后再創建一個同樣的新表,刪除的數據不能找回,執行速度比DELETE快

四 、 DQL:數據查詢(query)語言


1、基本查詢語句

功能語句
查詢所有列SELECT * FROM 表名;
查詢指定列SELECT 列名1,列名2… FROM 表名;
條件查詢SELECT * FROM 表名 WHERE 條件

2、條件查詢

條件查詢運行符及關鍵字:

運行符/關鍵字語句
=(等于)、!=(不等于)、<>(不等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于);SELECT * FROM 表名 WHERE 列名>=值
BETWEEN…AND;值在什么范圍SELECT * FROM 表名 WHERE 列名 BETWEEN 列值1 AND 列值2;
IN(set);固定的范圍值SELECT * FROM 表名 WHERE 列名 IN(列值1,列值2,…)
IS NULL;(為空)、IS NOT NULL(不為空)SELECT * FROM 表名 WHERE 列名 IS NULL;
AND;與、OR;或、NOT; 非SELECT * FROM 表名 WHERE 列名1=列值 AND 列名2=列值;

3、模糊查詢

語句: SELECT * FROM 表名 WHERE 列名 LIKE 匹配表達式;

通配符:

通配符說明
_任意一個字符
%任意0~n個字符

常用匹配表達式:

表達式說明
‘____’幾個_就表示匹配幾個字符
‘%字符%’匹配包含某個/些字符的列值
‘字符%’匹配以某個/些字符開頭的列值
‘%字符’匹配以某個/些字符結尾的列值

4、字段控制查詢

功能語句
去除重復記錄SELECT DISTINCT 列名 FROM 表名;
查詢結果進行運算,必須都要是數據型SELECT *,列名1+列名2 FROM 表名;
查詢結果進行條件替換SELECT *,IFNULL(列名,0) FROM 表名;
對查詢結果起別名SELECT *,列名1+列名2 AS 別名 FROM 表名;

5、排序

語句: 可以多級排序
SELECT * FROM 表名 ORDER BY 列名1,列名2 排序類型;

排序類型:

  • ASC:升序,從小到大,默認
  • DESC:降序,從大到小

6、聚合函數

語句:
SELECT 聚合函數(*) AS 別名 FROM 表名;

常用聚合函數:

函數功能
COUNT()統計指定列不為NULL的記錄行數;
MAX()計算指定列的最大值,如果指定列是字符串類型,那么使用字符串排序運算;
MIN()計算指定列的最小值,如果指定列是字符串類型,那么使用字符串排序運算;
SUM()計算指定列的數值和,如果指定列類型不是數值類型,那么計算結果為0;
AVG()計算指定列的平均值,如果指定列類型不是數值類型,那么計算結果為0;

7、分組查詢

語句: SELECT 字段名 from 表名 GROUP BY 字段名;

要點:

  • 當 GROUP BY 單獨使用時,只顯示出每組的第一條記錄
  • 在使用分組時,SELECT 后面直接跟的字段一般都出現在 GROUP BY 后

(1)group by + group_concat():

  • GROUP_CONCAT(字段名)可以作為一個輸出字段來使用表示分組之后,根據分組結果,使用GROUP_CONCAT()來放置每一組的某字段的值的集合
# 語句 SELECT 字段名,GROUP_CONCAT(字段名) from 表名 GROUP BY 字段名;# 示例:查詢性別名稱和各性別的人的名字 SELECT gender,GROUP_CONCAT(name) from employee GROUP BY gender;

(2)group by + 聚合函數:

  • GROUP BY 統計出每個分組的某字段的值的集合,再通過集合函數來對這個"值的集合"做一些操作
# 語句 SELECT 字段名1,聚合函數(字段名2) FROM 表名 GROUP BY 字段名1;# 示例:查詢每個部門的部門名稱和每個部門的工資和 SELECT department,SUM(salary) FROM employee GROUP BY department;

(3)group by + having:

  • having 作用和 where 一樣,但 having 只能用于 group by
  • having 是在分組后對數據進行過濾,where 是在分組前對數據進行過濾
  • having 后面可以使用分組函數(統計函數),where 不可以
# 語句 SELECT 字段名,聚合函數(字段名) from 表名 GROUP BY 字段名 HAVING 聚合函數(字段名)的條件;# 示例:各部門個人工資大于2000的總和大于6000,降序排列 SELECT department, SUM(salary) FROM employee WHERE salary >2000 GROUP BY department HAVING SUM(salary)>6000 ORDER BY SUM(salary) DESC;

8、LIMIT

語句:

SELECT * FROM 表名 LIMIT 參數1, 參數2;

  • 參數1:從哪一行開始查
  • 參數2:要查幾行
  • 行數的索引從0開始

示例:

# 分頁查詢格式 SELECT * FROM 表名 LIMIT (當前頁數-1)*每頁的行數,每頁的行數# 實例 SELECT * FROM tabel LIMIT (cyr_page-1)*page_size,page_size

GOOD LUCK!


總結

以上是生活随笔為你收集整理的MySQL 笔记3 -- SQL 语言的全部內容,希望文章能夠幫你解決所遇到的問題。

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