MySql--SQL語言

目錄

SQl---DDL? 結構定義

創建、刪除 數據庫

代碼

?運行

設計表

數據類型

整數

浮點數

主鍵

約束

主鍵自增長

默認值

字段注釋

創建、刪除 表

代碼

運行

代碼

代碼

運行?

SQL---DML? 數據操縱

插入數據

代碼?

運行?

代碼?

運行?

代碼?

運行?

代碼?

運行

修改數據

代碼?

運行?

刪除數據

代碼??

運行

SQL---DQL? 數據查詢

基礎查詢

特定列查詢,全部列查詢

代碼??

運行

代碼??

運行?

算數運算符?+ - * /

代碼??

運行?

排除重復行

代碼??

運行?

條件查詢

代碼??

運行?

模糊查詢

like

代碼??

運行?

between and?

代碼??

運行?

in

代碼??

運行?

is null /is not null

代碼??

運行?

union?

代碼??

運行?

union all

代碼??

運行?

排序

代碼??

運行?

數量限制

代碼??

運行?

分組查詢

代碼??

運行

代碼??

運行

代碼??

運行?

函數? 查詢結果處理

單行函數?

字符函數

代碼?

運行

代碼?

運行

代碼?

運行

代碼?

運行

代碼?

運行

代碼?

運行

代碼?

運行

代碼?

運行

代碼?

運行

代碼?

運行?

邏輯處理

代碼??

運行

代碼??

運行

代碼??

運行?

數學函數

代碼??

運行

代碼??

運行

代碼??

運行?

日期函數?

代碼??

運行

代碼??

運行

?編輯

代碼??

運行

代碼??

運行

?編輯

代碼? ?

運行?

分組函數

代碼??

運行


SQl---DDL? 結構定義

創建、刪除 數據庫

代碼

-- 創建數據庫
CREATE DATABASE IF NOT EXISTS schooldb CHARSET utf8
-- 刪除數據庫
DROP DATABASE IF EXISTS schooldb 

?運行

-- mysql中數據庫一旦創建,名字不能修改

-- 修改數據庫字符集
ALTER DATABASE schooldb CHARSET utf8

設計表

數據類型

char(n)??可變長度的字符串 ?n是最大長度 ?如果只存儲2個字符,實際占有2個空間位置

varchar(n)? 可變長度的字符串 ?n是最大長度 ?如果只存儲2個字符,實際占有2個空間位置

data? 日期,包含年,月,日

datetime? 年月日,時分秒

整數

signed??有符號,默認為無符號

unsigned? 無符號?

浮點數

decimal(M,D)

M:精度,數據的總長度;

D:標度,小數點后的長度。

主鍵

在一張表中代表唯一的一條記錄,不能為空且不能重復

約束

主鍵約束? PRIMARY KEY

不能為空約束? NOT NULL

唯一性約束 UNIQUE

主鍵自增長

主鍵自增長,設置主鍵自增長后,只能為整數類型

AUTO_INCREMENT

默認值

DEFAULT default_value

字段注釋

comment'注釋'

創建、刪除 表

-- 創建表
-- 確定表名 ?學生信息表
-- 確定表中字段(列) 學號,姓名,性別,生日,電話,身高,注冊時間
-- 確定字段(列)的數據類型 ? 以及長度
-- 確定列的約束
-- 創建表語法

代碼

 CREATE TABLE student(number INT,NAME VARCHAR(6),gender CHAR(1),birthday DATE,phone VARCHAR(11),height DECIMAL(3,2),reg_time DATETIME)

運行

?

?-- 刪除表結構,刪除后表中數據就不存在了

代碼

DROP TABLE student

-- 創建表 ?并添加約束規則
-- PRIMARY KEY 設置主鍵約束 ,添加主鍵約束后,值不能重復,一個表中只能有一個列是主鍵
? ?-- 主鍵列可以唯一
? ?-- mysql中主鍵可以設置為自動增長 ?AUTO_INCREMENT
-- NOT NULL 不能為空約束
-- UNIQUE 唯一性約束
-- 檢查約束 設置條件

代碼

CREATE TABLE student(number INT PRIMARY KEY AUTO_INCREMENT COMMENT '學號主鍵',NAME VARCHAR(6)  NOT NULL COMMENT '姓名',gender CHAR(1) NOT NULL COMMENT '性別',birthday DATE NOT NULL,phone VARCHAR(11) NOT NULL UNIQUE,height DECIMAL(3,2) CHECK(height<3),reg_time DATETIME
)

運行?

SQL---DML? 數據操縱

常用語句:insert into,update,delete

插入數據

方式1: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n);

代碼?

INSERT INTO student(NAME,gender,birthday,phone,height,reg_time)VALUES('杜蘭特','男','2019-6-8','12345678913',1.98,NOW())
INSERT INTO student(NAME,gender,birthday,phone,height,reg_time)VALUES('科比','男','2019-6-8','12345678912',1.98,NOW())
運行?

方式2: INSERT INTO 表名 set 列名1=值1,..列名n=值n;

代碼?
INSERT INTO student SET NAME='詹姆斯',gender='男',birthday='1986-2-3',phone='12345678911'
運行?

方式3: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n),(值1,值2…..,值n);

代碼?
INSERT INTO student(NAME,gender,birthday,phone,height,reg_time)VALUES('科比','男','1988-6-8','12345678914',1.88,NOW()),('庫里','男','1987-6-8','12345678915',2.12,NOW())
運行?

方式4:INSERT INTO 表名(列1,列2……,列n) 查詢語句(查詢的列數與插入列數匹配。

代碼?
-- 復制表結構 
CREATE TABLE stu LIKE student 
INSERT INTO stu(number,NAME,gender,birthday,phone,height,reg_time)SELECT * FROM student
運行

?

修改數據

-- 修改記錄 ?修改時一定注意條件

UPDATE 表名 SET 列名 = ‘新值’WHERE 條件

代碼?
 UPDATE stu SET NAME='c羅',height=1.70 WHERE number = 1
運行?

刪除數據

DELETE FROM 表名 WHERE 條件

TRUNCATE TABLE 表名;清空整張表

代碼??

-- 刪除 
DELETE FROM student WHERE number = 4
-- 修改表名
RENAME TABLE student TO stu
RENAME TABLE stu TO student-- 復制表結構 
CREATE TABLE stu LIKE student
運行

SQL---DQL? 數據查詢

-- select 結果 from 表名

基礎查詢

特定列查詢,全部列查詢

select column1,column2 from table

代碼??
-- 查詢指定的列
SELECT NAME,gender,birthday,phone FROM student
運行

??

select * from table?

代碼??
-- 查詢所有的列  *-表示所有的列  查詢的結果是虛擬的表格,不能操作,是只讀的,不能寫入
SELECT * FROM student
運行?

算數運算符?+ - * /

代碼??
-- 查詢結果進行算術運算 + - * /
SELECT NAME,height+1 FROM student
運行?

排除重復行

select distinct column1,column2 from table

代碼??
-- 去除重復數據 查詢結果中所有的列都相同,就視為重復數據
-- DISTINCT關鍵字去除重復數據
SELECT DISTINCT NAME,gender FROM student
運行?

條件查詢

select? 結果? from 表? where 條件? 【group? by 條件? order? by?列? limit】

-- select * from 表名 where 條件?
-- =
-- and 并且?
-- >
-- or 多個條件只需要滿足一個即可
-- !=
-- <>

代碼??

SELECT * FROM student WHERE gender = '男' AND height > 1.90
SELECT * FROM student WHERE gender = '男' OR height > 1.70
SELECT * FROM student WHERE gender != '男'
SELECT * FROM student WHERE gender <> '女
運行?

模糊查詢

like

是否匹配于一個模式 一般和通配符搭配使用,可以判斷字符型數值 或數值型.

通配符: % 任意多個字符

代碼??
-- like '庫%' 模糊匹配
SELECT * FROM student WHERE NAME LIKE '庫%'
運行?

between and?

兩者之間,包含臨界值;

代碼??
-- between 1.65 and 1.98 兩者之間
SELECT * FROM student WHERE height>=1.65 AND height<=1.98
SELECT * FROM student WHERE height BETWEEN 1.65 AND 1.98 
運行?

in

判斷某字段的值是否屬于in列表中的某一項

代碼??
-- in(值1,值2,值n) 在給定的值中
SELECT * FROM student WHERE height =1.78 OR height =1.88 OR height =1.98 
SELECT * FROM student WHERE height NOT IN(1.78,1.88,1.98)
運行?

is null /is not null

為空的/不為空的

代碼??
-- 查詢身高為null的數據
SELECT * FROM student WHERE height IS NULL
SELECT * FROM student WHERE height IS NOT NULL
運行?

union?

mysql 會把結果集中重復的記錄刪掉

代碼??
-- union 將多個查詢的結果合并,合并時注意列數一致,會去除重復數據
SELECT NAME,gender FROM student WHERE gender = '男'UNION
SELECT NAME,gender FROM student WHERE number>1 
運行?

union all

mysql 會把所有的記錄返回,且效率高于union

代碼??
-- union all 只是將查詢的多個結果合并,不會去除重復數據
SELECT NAME,gender FROM student WHERE gender = '男'UNION ALL
SELECT NAME,gender FROM student WHERE number>1
運行?

排序

order by 排序列

asc代表的是升序,desc代表的是降序,如果不寫,默認是升序

代碼??
-- order by 列  asc(升序)  desc(降序)
SELECT * FROM student WHERE number>0 ORDER BY number ASC
SELECT * FROM student WHERE number>0 ORDER BY number DESC
SELECT * FROM student WHERE number>0 ORDER BY height DESC
SELECT * FROM student WHERE number>0 ORDER BY reg_time ASC
SELECT * FROM student WHERE number>0 ORDER BY height ASC,reg_time DESC
運行?

數量限制

limit子句:對查詢的顯示結果限制數目 (sql語句最末尾位置)

代碼??
-- 數量限制 實現分頁查詢
-- limit 開始位置,每次查詢的數量
SELECT * FROM student WHERE number>0 ORDER BY number ASC LIMIT 0,3
SELECT * FROM student WHERE number>0 ORDER BY number ASC LIMIT 3,3
SELECT * FROM student WHERE number>0 ORDER BY number ASC LIMIT 6,3
運行?

分組查詢

-- 分組--在一些統計場景中,按照某一個條件進行區分(分組)
-- 統計時,按照性別,班級,年級,部門,年份,月份
-- 把滿足某一個條件的數據分到同一個組中,每一個組內單獨進行處理

select 分組函數,列(要求出現在group by的后面)

from 表

[where 篩選條件]

group by 分組的列表

[having 分組后的篩選]

[order by 子句]

-- 查詢男生,女生各有多少人 ?每個年級各有多少人 每個部門各有多少人
? ?-- 分組統計 男生組統計一次,女生組統計一次

代碼??
   SELECT COUNT(*),gender FROM student GROUP BY gender  SELECT MAX(height),gender FROM student GROUP BY gender  SELECT COUNT(*),DATE_FORMAT(reg_time,'%Y-%m')  FROM student GROUP BY DATE_FORMAT(reg_time,'%Y-%m')
運行

? ?-- 統計男生女生各多少人

代碼??
    SELECT COUNT(*),gender FROM student GROUP BY gender
運行

代碼??

? ?-- 男生和女生誰的人數大于2
? ?-- having count(*)>2 ?having 條件 是對分組后的結果進行條件篩選

    SELECT COUNT(*),gender FROM student GROUP BY gender  HAVING COUNT(*)>2
運行?

函數? 查詢結果處理

-- 單行函數:會對查詢中的每一行數據進行處理

-- 分組函數 ?聚合函數(查詢多行,返回一行) ?統計函數

單行函數?

字符函數

-- length(列名) 以字節為單位

代碼?
SELECT LENGTH(NAME),NAME,gender FROM student
運行

-- char_length(列名) 以字符為單位

代碼?
 SELECT CHAR_LENGTH(NAME),NAME,gender FROM student
運行

-- concat(str1,str2,str3) 連接多個字符串 ?as ?別名

代碼?
 SELECT CONCAT(NAME,":",CHAR_LENGTH(NAME)) AS NAME,gender FROM student
運行

-- upper() 轉大寫 lower() 轉小寫

代碼?
  SELECT UPPER(NAME),LOWER(NAME) FROM student
運行

-- substring(字符串,開始位置,截取長度) 開始位置從1開始?

代碼?
 SELECT SUBSTRING(NAME,1,2) FROM student
運行

-- instr(字符串,指定的字符)獲取指定字符首次出現位置,找不到返回0

代碼?
SELECT INSTR(NAME,'o') FROM student
運行

-- trim(字符串) 默認是去掉字符串前后空格的

代碼?
SELECT TRIM(NAME),NAME FROM student
運行

-- trim(指定的子串 from 字符串) 可以去掉前后指定的子串

代碼?
  SELECT TRIM('a' FROM NAME),NAME FROM student
運行

-- 左填充 右填充到指定長度

代碼?
SELECT LPAD(NAME,5,'a'),RPAD(NAME,5,'b') FROM student
運行

-- replace(列,'old','new')字符串的替換

代碼?
 SELECT REPLACE(NAME,'o','O') FROM student
運行?

邏輯處理

-- case when 條件 then 條件成立結果 else 不成立結果 end;

代碼??
 SELECTNAME,gender,(CASE WHEN height>=2 THEN '高個子' ELSE '正常身高' END) AS height
FROMstudent
SELECTNAME,gender,(CASE WHEN height>=2 THEN 'A'WHEN height>=1.8 THEN 'B'ELSE 'C' END) AS height
FROMstudent
運行

-- ifnull(列名,'為空時默認信息')

代碼??
SELECTNAME,gender,IFNULL(reg_time,'暫未錄入') AS reg_time
FROMstudent
運行

-- if(條件,'結果1','結果2')

代碼??
SELECTNAME,gender,IF(height>=2,"高個子","正常") AS height   
FROMstudent
運行?

數學函數

-- round(數值) ?四舍五入
-- ceil(數值) ?向上取整,返回>=該參數的最小整數
-- floor(數值) ?向下取整,返回<=該參數的最大整數

代碼??
 SELECT NAME,gender,ROUND(height),CEIL(1.1),FLOOR(1.9) FROM student
運行

-- mod(被除數,除數) ?取余,被除數為正,則為正;被除數為負,則為負

代碼??
SELECT height,number,MOD(height,number) FROM student
運行

-- truncate(數值,保留小數的位數) ?截斷,小數點后截斷到幾位
-- rand() ?獲取隨機數,返回0-1之間的小數

代碼??
SELECT NAME,gender,TRUNCATE(height,1),height,RAND() FROM student
運行?

日期函數?

-- now() 年月日 時分秒 ?獲取系統當前時間
-- curdate() 年月日
-- curtime() 時分秒

代碼??
SELECT NOW(),CURDATE(),CURTIME() FROM student
運行

-- year(日期) 將日期格式化為年
-- month(日期) 將日期格式化為月

代碼??
SELECT YEAR(birthday),MONTH(birthday) FROM student
SELECT * FROM student WHERE MONTH(birthday) = 6
SELECT COUNT(*),YEAR(birthday) FROM student GROUP BY YEAR(birthday)
運行

-- str_to_date('2022-3-6','%Y-%m-%d') 將字符串日期格式化為日期類型

代碼??
 SELECT STR_TO_DATE('2022-3-6','%Y-%m-%d') FROM student
運行

-- date_format(birthday,'%Y-%m') 將日期格式化為指定的字符串

代碼??
SELECT DATE_FORMAT(birthday,'%Y-%m') FROM student
SELECT COUNT(*),DATE_FORMAT(reg_time,'%Y-%m') FROM student GROUP BY DATE_FORMAT(reg_time,'%Y-%m')
運行

- datediff(CURDATE(),birthday) 計算兩個日期之間相差的天數

代碼? ?
SELECT DATEDIFF(CURDATE(),birthday) FROM student
運行?

分組函數

-- sum() 求和
-- avg() 平均值
-- max() 最大值
-- min() 最小值
-- count() 統計個數

代碼??
SELECT SUM(height) FROM student 
SELECT AVG(height) FROM student
SELECT MAX(height) FROM student 
SELECT MIN(height) FROM student
SELECT COUNT(*) FROM student
運行

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13496.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13496.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13496.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【實戰教程】使用Spring AOP和自定義注解監控接口調用

一、背景 隨著項目的長期運行和迭代&#xff0c;積累的功能日益繁多&#xff0c;但并非所有功能都能得到用戶的頻繁使用或實際上根本無人問津。 為了提高系統性能和代碼質量&#xff0c;我們往往需要對那些不常用的功能進行下線處理。 那么&#xff0c;該下線哪些功能呢&…

貪心算法: 單調遞增的數字

參考資料&#xff1a;代碼隨想錄 題目鏈接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 倒序遍歷每個數字&#xff0c;遇到前一個比后一個大的就減一&#xff0c;最后統一把后面幾位置為9 String str n"";char[] chars str.toCharArray();int flag c…

docker部署kafka實戰

目錄 一、部署kafaka、zookeeper 二、測試信息發送與接收 三、kafka進階 一、部署kafaka、zookeeper 請提前安裝docker、docker-compose 安裝docker&#xff1a;docker--安裝docker-ce-CSDN博客 安裝docker-compose&#xff1a; 安裝docker-compose_安裝 docker-compose-CSD…

云下到云上,麗迅物流如何實現數據庫降本50% | OceanBase案例

在2024年3月20日的首場OceanBase數據庫城市行活動中&#xff0c;專注于物流及供應鏈解決方案的麗迅物流的架構師陽磊&#xff0c;圍繞“OB Cloud在麗迅物流的實踐”這一主題&#xff0c;進行了精彩的演講。本文為此次演講的內容回顧。 在麗迅物流&#xff08;Lesoon Logistics…

小demo - 列表hide or not (含代碼)

直接上代碼 <!DOCTYPE html> <html><head><style>.menu {width: 220px;height: 800px;border: 1px solid #dddddd;}.item {cursor: pointer;}.menu .header {padding: 10px 5px;background-color: goldenrod;}.menu .content a {display: block;paddi…

線程安全-1 synchronized鎖升級

一.說一下synchronized關鍵字的底層原理 1.synchronized又叫同步鎖&#xff0c;采用互斥的方式使同一時刻只能有一個線程持有鎖。 2.jdk1.6及以前&#xff0c;synchronized底層是用monitor實現的。monitor是jvm級別的對象&#xff0c;由c實現。每一個對象對應一個monitor&…

9.1 Go語言入門(環境篇)

Go語言入門&#xff08;環境篇&#xff09; 目錄一、什么是Go語言二、下載安裝配置Go語言開發環境1. 下載2. 安裝3. 配置環境變量4. 安裝環境驗證 三、 開發工具1. 下載2. 安裝3. 激活4. 配置SDK 四、 創建go工程文件并運行1. 創建go工程2. 示例代碼3. 運行代碼 目錄 一、什么…

軟件開源協議與QT的開源協議介紹

一.常見的六種開源協議 1.BSD協議 BSD協議全稱為“Berkely Software Distribution”&#xff0c;中文譯為“伯克利軟件發行版”。其最早用于伯克利UNIX操作系統上的開源貢獻。 主要特點&#xff1a; 允許修改源碼 允許源碼再發布 允許商業軟件發布和銷售 約束&#xff1…

shell 腳本筆記2

3.env與set區別 env用于查看系統環境變量 set用于查看系統環境變量自定義變量函數 4.常用環境變量 變量名稱含義PATH命令搜索的目錄路徑, 與windows的環境變量PATH功能一樣LANG查詢系統的字符集HISTFILE查詢當前用戶執行命令的歷史列表 Shell變量&#xff1a;自定義變量 目標…

HCIP【VRRP、MSTP、VLAN綜合實驗】

目錄 一、實驗拓撲圖&#xff1a; ?編輯二、實驗要求 三、實驗思路 四、實驗步驟 &#xff08;1&#xff09; eth-trunk技術配置 &#xff08;2&#xff09;vlan 技術配置 &#xff08;3&#xff09;配置SW1、SW2、AR1、ISP的IP地址 &#xff08;4&#xff09;在交換機…

FBB-Frontiers in Bioengineering and Biotechnology

文章目錄 一、期刊簡介二、征稿信息三、期刊表現四、投稿須知五、投稿咨詢 一、期刊簡介 Frontiers in Bioengineering and Biotechnology是專注生物工程和生物技術領域的開放獲取期刊。 研究范圍涵蓋生物材料、生物力學、生物工藝工程、生物安全和生物安保&#xff0c;生物傳…

QT項目-歡樂斗地主游戲

QT項目-歡樂斗地主游戲 游戲概述游戲規則牌型牌型的大小游戲角色游戲規則游戲的勝負游戲計分規則 游戲相關的類介紹卡牌類玩家類窗口類游戲控制類游戲策略類線程類音頻類 游戲主要組件卡牌玩家窗口 游戲控制源碼 游戲概述 游戲規則 不同地域游戲規則可能有些許差異&#xff0c…

MySQL之Schema與數據類型優化(三)

Schema與數據類型優化 BLOB和TEXT類型 BLOB和TEXT都是為存儲很大的數據而設計的字符串數據類型&#xff0c;分別采用二進制和字符方式存儲。 實際上它們分別屬于兩組不同的數據類型家族:字符類型是TINYTEXT&#xff0c;SMALLTEXT,TEXT&#xff0c;MEDIUMTEXT&#xff0c;LONG…

Spring Cloud整合Sentinel

1、引入依賴 鏈接: 點擊查看依賴關系 父pom <spring.cloud.version>Hoxton.SR12</spring.cloud.version> <spring.cloud.alibaba.version>2.2.10-RC1</spring.cloud.alibaba.version>Sentinel應用直接引用starter <dependency><groupId&…

【UE5.1】* 動畫重定向 (讓你的角色可以使用小白人全部動畫)

前言 這里以小白人動畫重定向給商城資產“Adventure Character”中的角色為例&#xff0c;闡述如何使用UE5.1進行動畫重定向。 步驟 1. 創建一個IK綁定 這里選擇小白人的骨骼網格體 這里命名為“IKRig_Mannequin” 2. 再新建一個IK綁定&#xff0c;這里使用你要替換給的角色…

MyBatis入門——MyBatis XML配置文件(3)

目錄 一、配置連接字符串和MyBatis 二、寫持久層代碼 1、添加 mapper 接口 2、添加 USerInfoXmlMapper.xml 3、測試類代碼 三、增刪改查操作 1、增&#xff08;Insert&#xff09; 返回自增 id 2、刪&#xff08;Delete&#xff09; 3、改&#xff08;update&#xf…

軟考--試題六--中介者模式(Mediator)

中介者模式(Meditor) 意圖 用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用&#xff0c;從而使其耦合松散&#xff0c;而且可以獨立地改變它們之間的交互 結構 適用性 1、一組對象以定義良好但是復雜的方式進行通信&#xff0c;產生的相互依賴關…

民國漫畫雜志《時代漫畫》第17期.PDF

時代漫畫17.PDF: https://url03.ctfile.com/f/1779803-1248612629-85326d?p9586 (訪問密碼: 9586) 《時代漫畫》的雜志在1934年誕生了&#xff0c;截止1937年6月戰爭來臨被迫停刊共發行了39期。 ps:資源來源網絡&#xff01;

力扣HOT100 - 1143. 最長公共子序列

解題思路&#xff1a; 動態規劃 class Solution {public int longestCommonSubsequence(String text1, String text2) {int m text1.length(), n text2.length();int[][] dp new int[m 1][n 1];for (int i 1; i < m; i) {char c1 text1.charAt(i - 1);for (int j 1…

深度學習之基于YoloV5的動物識別系統

歡迎大家點贊、收藏、關注、評論啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 一、項目背景與目標 在生態研究、動物保護、以及畜牧業等多個領域&#xff0c;對動物進行準確、高效的識別都具有重…