MySQL數(shù)據(jù)庫SQL語句
目錄
一、SQL語句類型
1、DDL
2、DML
3、DCL
4、DQL
二、數(shù)據(jù)庫操作
1、查看
2、創(chuàng)建
2.1、默認字符集
2.2、指定字符集
3、進入
?4、刪除
5、更改
6、練習
三、數(shù)據(jù)表操作
(一)數(shù)據(jù)類型
1、數(shù)值類型
1.1、TINYINT
1.2、SMALLINT
1.3、INT
1.4、BIGINT
1.5、FLOAT(M,D)
2、時間\日期類型
2.1、DATE
2.2、TIME
2.3、DATETIME
2.4、TIMESTAMP
3、字符串類型
3.1、CHAR
3.2、VARCHAR
3.3、TEXT
4、二進制類型
4.1、BINARY
4.2、VARBINARY
4.3、BLOB
(二)創(chuàng)建
(三)查看
1、添加表內的數(shù)據(jù)
2、查看表內的數(shù)據(jù)
3、查看表格的屬性
(四)刪除
1、刪除數(shù)據(jù)表
2、刪除數(shù)據(jù)表數(shù)據(jù),但是保留表結構
(五)更改
1、數(shù)據(jù)表
1.1、名稱
1.2、字符集
2、數(shù)據(jù)表--列
?1.1、名稱
?1.2、屬性
1.3、字符集
(六)練習
四、數(shù)據(jù)操作
(一)增加數(shù)據(jù)
(二)刪除數(shù)據(jù)
(三)更改數(shù)據(jù)
(四)查看數(shù)據(jù)
1、單表查詢
1.1、全表查詢
1.2、條件查詢
1.2.1、條件表達式
1.2.1.1、運算符
1.2.1.2、通配符? ? ? (? %和_? )
1.2.2、查詢類型
? ? 1)where子句
? ? 2)排序查詢
? ? 3)分組查詢
? ? 4)去重查詢
? ? 5)分頁查詢
? ? 6)子查詢
? ? 7)函數(shù)查詢
? ? ? ? 7.1)聚合函數(shù)
? ? ? ? ? ? 7.1.1)SUM
? ? ? ? ? ? 7.1.2)AVG
? ? ? ? ? ? 7.1.3)COUNT
? ? ? ? ? ? 7.1.4)MAX
? ? ? ? ? ? 7.1.5)MIN
? ? ? ? 7.2)字符串函數(shù)
? ? ? ? ? ? 7.2.1)CONCAT
? ? ? ? ? ? 7.2.2)LENGTH
? ? ? ? ? ? 7.2.3)UPPER
? ? ? ? ? ? 7.2.4)LOWER
? ? ? ? ? ? 7.2.5)SUBSTR
? ? ? ? ? ? 7.2.6)REPLACE
? ? ? ? 7.3)日期時間函數(shù)
? ? ? ? 7.4)數(shù)學函數(shù)
? ? ? ? 7.5)拓展內容
2、多表查詢
2.1.內連接查詢
2.2、外連接查詢
2.2.1、左外連接查詢
2.2.2、右外連接查詢
一、SQL語句類型
1、DDL
? ? DDL(Data Definition Language,數(shù)據(jù)定義語言):用于定義數(shù)據(jù)庫中的各種對象,包括數(shù)據(jù)庫、表、視圖、觸發(fā)器等,常見的 DDL 命令有 CREATE、ALTER、DROP
2、DML
? ? DML(Data Manipulation Language,數(shù)據(jù)操作語言):用于操作表格中的數(shù)據(jù),進行新增、查詢、更新、刪除等操作,常見的 DML 命令有 SELECT、INSERT、UPDATE、DELETE
3、DCL
? ? DCL(Data Control Language,數(shù)據(jù)控制語言):用于管理數(shù)據(jù)庫的權限和安全性,包括授權、回收權限等操作,常見的 DCL 命令有 GRANT、REVOKE
4、DQL
? ? DQL(Data Query Language,數(shù)據(jù)查詢語言)是 SQL 的一個子集,主要用于查詢數(shù)據(jù)庫中的數(shù)據(jù),常見的 DQL 命令包括 SELECT
二、數(shù)據(jù)庫操作
1、查看
show databases;
?
2、創(chuàng)建
2.1、默認字符集
? ? ? ? ? ? ? ? create database 數(shù)據(jù)庫名稱;??
? ? ? ? ? ? ? ? 默認不進行改動是latin1
create database back;
?
2.2、指定字符集
? ? ? ? ? ? create database 數(shù)據(jù)庫名稱 character set utf8;
? ? ? ? ? ? ? ? 使用uft8格式的字符集
create database bak character set utf8;
3、進入
? ? ? ? use 數(shù)據(jù)庫名稱;
use bak;
?
?4、刪除
? ? ? ? drop database 數(shù)據(jù)庫名稱;
drop database bak;
?
5、更改
? ? ? ? 庫名稱
? ? ? ? ? ? 進入到數(shù)據(jù)庫的目錄中修改數(shù)據(jù)庫的名稱
cd /var/lib/mysql
?更改數(shù)據(jù)庫名稱
mv back bak
?回到數(shù)據(jù)庫進行查看
show databases;
?? ? ? ? 字符集
? ? ? ? ? ? ALTER DATABASE <database_name> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
6、練習
? ? ? ? 創(chuàng)建2個數(shù)據(jù)庫,一個全寫,一個縮寫(指定字符集)
? ? ? ? 刪除縮寫的,將全寫的名稱改為縮寫的
三、數(shù)據(jù)表操作
(一)數(shù)據(jù)類型
1、數(shù)值類型
1.1、TINYINT
? ? ? ? ? ? ? ? 1個字節(jié),范圍為 -128 到 127(有符號)或 0 到 255(無符號)
? ? ? ? ? ? ? ? 可以使用 TINYINT UNSIGNED 來存儲年齡(無符號)或溫度(有符號)等小數(shù)值
1.2、SMALLINT
? ? ? ? ? ? ? ? 2個字節(jié),范圍為 -32,768 到 32,767(有符號)或 0 到 65,535(無符號)
? ? ? ? ? ? ? ? 可以使用 SMALLINT 存儲商品數(shù)量, 或者使用 SMALLINT UNSIGNED 存儲區(qū)域編號(無符號)
1.3、INT
? ? ? ? ? ? ? ? ?4個字節(jié),范圍為 -2,147,483,648 到 2,147,483,647(有符號)或 0 到 4,294,967,295(無符號)
? ? ? ? ? ? ? ? 這是最常用的整數(shù)類型,它可以被用于許多方面,例如存儲訂單號或者用戶的數(shù)量
1.4、BIGINT
? ? ? ? ? ? ? ? 8個字節(jié)
? ? ? ? ? ? ? ? 存儲很大的數(shù)值,例如資金、人口等
1.5、FLOAT(M,D)
? ? ? ? ? ? ? ? 單精度浮點數(shù),M是總位數(shù),D是小數(shù)位數(shù)
? ? ? ? ? ? ? ? 可以使用 FLOAT(8,2) 來存儲商品的價格
2、時間\日期類型
2.1、DATE
? ? ? ? ? ? ? ? 用來存儲日期,格式為’YYYY-MM-DD’
? ? ? ? ? ? ? ? 可以使用 DATE 存儲出生日期或者過期日期等
2.2、TIME
? ? ? ? ? ? ? ? 用來存儲時間,格式為’HH:MM:SS’
? ? ? ? ? ? ? ? 可以使用 TIME 存儲過去一段時間內花費的小時數(shù),分鐘數(shù)或秒數(shù)等
2.3、DATETIME
? ? ? ? ? ? ? ? 用來存儲日期和時間,格式為’YYYY-MM-DD HH:MM:SS’
? ? ? ? ? ? ? ? 可以使用 DATETIME 存儲訂單時間或者統(tǒng)計報告生成時間等
2.4、TIMESTAMP
? ? ? ? ? ? ? ? 用來存儲日期和時間,通常被用于記錄特定事件的時間戳。使用UNIX的日期和時間格式,從1970年1月1日午夜開始計算
? ? ? ? ? ? ? ? 可以使用 TIMESTAMP 存儲用戶上次登錄的時間戳
3、字符串類型
3.1、CHAR
? ? ? ? ? ? ? ? 用來存儲定長字符串,最大長度為255個字符
? ? ? ? ? ? ? ? 可以使用 CHAR(10) 存儲用戶的性別、婚姻狀況等數(shù)據(jù)
3.2、VARCHAR
? ? ? ? ? ? ? ? 用來存儲可變長度字符串,最大長度為65535個字符
? ? ? ? ? ? ? ? 可以使用 VARCHAR(255) 存儲用戶輸入的文本內容、地址等數(shù)據(jù)
3.3、TEXT
? ? ? ? ? ? ? ? 用來存儲大型字符數(shù)據(jù),最大長度為2^16-1個字符
? ? ? ? ? ? ? ? 可以使用 TEXT 存儲文章、評論等大型文本數(shù)據(jù)
4、二進制類型
4.1、BINARY
? ? ? ? ? ? ? ? 用來存儲固定長度二進制數(shù)據(jù),最大長度為255個字節(jié)
? ? ? ? ? ? ? ? 可以使用 BINARY(16) 存儲UUID
4.2、VARBINARY
? ? ? ? ? ? ? ? 用來存儲可變長度二進制數(shù)據(jù),最大長度為65535個字節(jié)
? ? ? ? ? ? ? ? 可以使用 VARBINARY(256) 存儲不定長度的二進制數(shù)據(jù),例如圖片和音頻等文件
4.3、BLOB
? ? ? ? ? ? ? ? 用來存儲大型二進制對象數(shù)據(jù),最大長度為2^16-1個字節(jié)
? ? ? ? ? ? ? ? 可以使用 BLOB 存儲音視頻等媒體文件
(二)創(chuàng)建
? ? create table tables_name(
? ? 第一列 類型屬性,
? ? 第二列 類型屬性,
? ? ) character set utf8mb4 collate utf8mb4_unicode_ci;
?character set utf8mb4 collate utf8mb4_unicode_ci??寫在表之后,聲明表的字符集
create table a1(
編號 int not null,
姓名 varchar(20) not null,
性別 varchar(10) not null,
出生年月 date not null
)character set utf8mb4 collate utf8mb4_unicode_ci;
?? ? create table tables_name(
? ? 第一列 類型屬性,
? ? 第二列 類型屬性 character set utf8mb4 collate utf8mb4_unicode_ci,
? ? ?);
? ? ? ? character set utf8mb4 collate utf8mb4_unicode_ci,? 寫在列之后,聲明列的字符集
create table a2(
編號 int not null,
姓名 varchar(20) character set utf8mb4 collate utf8mb4_unicode_ci,
性別 varchar(10) not null
);
?? ? ? ? 創(chuàng)建數(shù)據(jù)表時,添加約束條件
? ? ? ? ? ? 創(chuàng)建數(shù)據(jù)表時添加
? ? CREATE TABLE 數(shù)據(jù)表名?(
? ? id INT PRIMARY KEY, ?-- 定義 id 列為主鍵
? ? name VARCHAR(20) NOT NULL,
? ? age INT
? ? );
create table a3(
編號 int not null primary key,
姓名 varchar(20) not null,
性別 varchar(10) not null
);
??? ? ? ? ? ? 修改現(xiàn)有的數(shù)據(jù)表
(三)查看
1、添加表內的數(shù)據(jù)
INSERT INTO a4 (編號,姓名,性別) VALUES (1,'張三', '男'),
(2,'李四', '女'),
(3,'王五', '男'),
(4,'趙六', '男'),
(5,'小明', '男'),
(6,'小帥', '男'),
(7,'小美', '女'),
(8,'小紅', '女'),
(9,'大明', '男'),
(10,'大帥', '男');
2、查看表內的數(shù)據(jù)
? ? ? ? ? ? select * from tables_name;
? ? ? ? ? ? select column1,column2 from tables_name where 條件;
select * from a4;
?
select 編號,姓名,性別 from a4 where 性別='男';
select 編號,姓名,性別 from a4 where 性別='女';
3、查看表格的屬性
? ? ? ? ? ? describe tables_name;
? ? ? ? ? ? desc?tables_name;? ? ? 此為縮寫命令
describe a4;
desc a4;
(四)刪除
1、刪除數(shù)據(jù)表
? ? ? ? ? ? drop table tables_name;
drop table a3;
2、刪除數(shù)據(jù)表數(shù)據(jù),但是保留表結構
? ? ? ? ? ? delete from tables_name;
??
(五)更改
1、數(shù)據(jù)表
1.1、名稱
查看數(shù)據(jù)表目錄
show tables;
?
?更改數(shù)據(jù)表名稱
? ? ? ? ? ? ?alter table old_table_name rename to new_table_name;
? ? ? ? ? ? 注意事項:如果現(xiàn)在的表正在被其他表或程序應用,那么可能會導致無法正常引用。
?
檢查驗證?
show tables;
?
1.2、字符集
? ?alter table my_table convert to character set utf8mb4 collate utf8mb4_unicode_ci;?
alter table a6 convert to character set utf8mb4 collate utf8mb4_unicode_ci;
2、數(shù)據(jù)表--列
?1.1、名稱
? ? ? ? ? ? ? ? alter table table_name change old_name new_name 屬性;
alter table a6 change age number int;
?
select * from a6;
? ??? ? ? ?
??
?1.2、屬性
? ? ? ? ? ? ? ? alter table my_table modify 修改的列 ?修改的屬性;
alter table a6 modify name char(10);
?
?檢驗數(shù)據(jù)表格屬性
desc a6;
?原有的表格屬性
?現(xiàn)在的表格屬性
1.3、字符集
? ? ? ? ? ? ? ? alter table ?users modify name varchar(50) character set utf8mb4;
? ? ? ?這是一個SQL語句,用于修改表格"users"中的"name"字段的數(shù)據(jù)類型。它將"name"字段的數(shù)據(jù)類型從原來的varchar(50)修改為varchar(50) character set utf8mb4,其中utf8mb4是一種支持更廣范圍字符集的編碼方式。修改字符集可以確保該字段能夠存儲包含特殊字符(如表情符號、不同語言的字符等)的數(shù)據(jù)。
alter table a6 modify name char(50) character set utf8mb4 not null;
? ? ? ??這是一個SQL語句,用于修改表格"a6"中的"name"字段的數(shù)據(jù)類型和約束。它將"name"字段的數(shù)據(jù)類型從原來的char(50)修改為char(50) character set utf8mb4,其中utf8mb4是一種支持更廣范圍字符集的編碼方式。同時,添加了"not null"約束,表示該字段不允許為空值。修改字符集可以確保該字段能夠存儲包含特殊字符(如表情符號、不同語言的字符等)的數(shù)據(jù),而"not null"約束則要求該字段的值在插入或更新時不能為NULL。
(六)練習
? ? ? ? 創(chuàng)建兩個表:
? ? ? ? ? ? 1、包含編號、姓名、性別
? ? ? ? ? ? 2、包含姓名、年齡、出生年月
四、數(shù)據(jù)操作
(一)增加數(shù)據(jù)
? ? ? ? insert into table_name (column1, column2, ...) values (value1, value2, ...);
create table a6(
id int not null,
name varchar(20) not null,
age int not null
)character set utf8mb4 collate utf8mb4_unicode_ci;
INSERT INTO a6 (id,name,age) VALUES (1,'zhangsan', 15),
(2,'lisi', 18),
(3,'wangwu', 22),
(4,'xiaoming', 25),
(5,'xiaomei', 28);
(二)刪除數(shù)據(jù)
? ? ? ? delete from table_name where 條件;
select * from a6;
?
delete from a6 where id=5;
?
select * from a6;
?
(三)更改數(shù)據(jù)
? ? ? ? update table_name set column1 = value1, column2 = value2, ... where 條件;
update a6 set id=5 where name='xiaoming';
?
select * from a6;
?
(四)查看數(shù)據(jù)
? ? ? ? select * from tables_name;
? ? ? ? select column1,column2 from tables_name where 條件;
select * from a6;
?
select id,name,age from a6 where age=18;
?
?? ? 查詢數(shù)據(jù)(查)
1、單表查詢
1.1、全表查詢
? ? ? ? ? ? ? ? 在查詢中沒有指定任何的限制條件,會返回整張表的所有行
1.2、條件查詢
1.2.1、條件表達式
1.2.1.1、運算符
? ? ? ? ? ? ? ? ? ? ? ? 等于=
select id,name,age from a6 where age=18;
?
?? ? ? ? ? ? ? ? ? ? ? ? 不等于!=或<>
select id,name,age from a6 where age!=18;
select id,name,age from a6 where age<>18;
?? ? ? ? ? ? ? ? ? ? ? ? 大于>
select id,name,age from a6 where age>18;
?? ? ? ? ? ? ? ? ? ? ? ? 大于等于>=
select id,name,age from a6 where age>=18;
?? ? ? ? ? ? ? ? ? ? ? ? 小于<
select id,name,age from a6 where age<18;
?
?? ? ? ? ? ? ? ? ? ? ? ? 小于等于<=
select id,name,age from a6 where age<=18;
?? ? ? ? ? ? ? ? ? ? ? ? between
? ? ? ? ? ? ? ? ? ? ? ? ? ? BETWEEN運算符用于表示在一個范圍內的值,AND
select * from a6 where age between 18 and 25;
select * from a6
where age between 18 and 25 ?(篩選年齡范圍)
and score between 80 and 100;(篩選成績范圍)
多行內容寫入以這種寫法條理較為清晰
?
?? ? ? ? ? ? ? ? ? ? ? ? in
? ? ? ? ? ? ? ? ? ? ? ? ? ? IN運算符用于比較一個表達式是否與一組表達式中的任意一個相匹配
select * from a6 where name in('li');
1.2.1.2、通配符? ? ? (? %和_? )
? ? ? ? ? ? ? ? ? ? ? ? ? ? %通配符匹配任意數(shù)量(包括0個)的字符
select * from a6 where name like '%xi%';
?? ? ? ? ? ? ? ? ? ? 通配符? ? ? ? ? ? ? ? ? ? ? ? _
? ? ? ? ? ? ? ? ? ? ? ? ? ? _通配符匹配一個任意字符
? ? ? ? ? ? ? ? ? ? 通常會和like一起使用
select * from a6 where name like 'l_';
?
1.2.2、查詢類型
? ? 1)where子句
? ? ? ? ? ? ? ? ? ? ? ? 查詢時,指定要返回符合條件的行,后面跟條件
? ? 2)排序查詢
? ? ? ? ? ? ? ? ? ? ? ? 排序查詢是通過SQL查詢語句將所查詢的結果按照指定的排序方式排列
? ? ? ? ? ? ? ? ? ? ? ? ? ? 升序(默認)? ? ? ?ASC
? ? ? ? ? ? ? ? ? ? ? ? ? ? 降序? ? ? ? ? ? ? ? DESC
? ? ? ? ? ? ? ? ? ? ? ? select * from test order by colume1;
? ? ? ? ? ? ? ? ? ? ? ? select * from test order by colume1 DESC, colume2 ASC;
select * from a6 order by age;
select * from a6 order by age asc;
? ?? ??
?注:升序排列為系統(tǒng)默認,所以加不加asc都可以
?年齡降序
?
多條件查詢排序?
select * from a6 order by age asc,name desc;
? ? 3)分組查詢
? ? ? ? ? ? ? ? ? ? ? ? 主要用于統(tǒng)計分析,生成對應報表
? ? ? ? ? ? ? ? ? ? ? ? count(*)函數(shù)用于統(tǒng)計出現(xiàn)過的記錄總和
? ? ? ? ? ? ? ? ? ? ? ? group by用于按照特定字段進行分組
? ? ? ? ? ? ? ? ? ? ? ? select class, count(*) from test group by class;
select age,count(*) from a6 group by age;
經(jīng)過篩選查詢:
年齡為14的記錄有1個
年齡為15的記錄有1個
年齡為18的記錄有2個
年齡為22的記錄有1個
年齡為25的記錄有2個
年齡為26的記錄有1個
年齡為35的記錄有1個
?
? ? 4)去重查詢
? ? ? ? ? ? ? ? ? ? ? ? 用于從結果集中刪除重復的行,只返回不同的值
? ? ? ? ? ? ? ? ? ? ? ? select distinct colume1 from test;
select distinct age from a6;
?
??? ? ? ? ? ? ? ? ? ? ? ? 如果查詢多個列,則會顯示兩列的組合,每個組合只會出現(xiàn)一次
? ? ? ? ? ? ? ? ? ? ? ? select distinct colume1,colume2.........?from test;
select distinct name,age from a6;
?
? ? 5)分頁查詢
? ? ? ? ? ? ? ? ? ? ? ? 用于在SQL語句中限制返回數(shù)據(jù)的條數(shù)該技術可用于顯示諸如Web頁面之類的大量數(shù)據(jù)
? ? ? ? ? ? ? ? ? ? ? ? limit?? ?表示要返回的記錄數(shù)
? ? ? ? ? ? ? ? ? ? ? ? offset?? ?表示查詢結果的起始位置或查詢結果的偏移量
? ? ? ? ? ? ? ? ? ? ? ? select * from test limit 10 offset 10;
查詢5行數(shù)據(jù),從初始行偏移一行顯示?
select * from a6 limit 5 offset 1;
? ? 6)子查詢
? ? ? ? ? ? ? ? ? ? ? ? 在一個SQL語句中嵌套使用另一個完整的SQL查詢語句。子查詢通常用作主查詢的查詢條件或結果過濾條件,以及用于提供主查詢需要的一些數(shù)據(jù)
? ? ? ? ? ? ? ? ? ? ? ? select * from test where age > (select avg(age) from test);
select * from a6 where age > (select avg(age)from a6);
? ? 7)函數(shù)查詢
? ? ? ? 7.1)聚合函數(shù)
? ? ? ? ? ? 7.1.1)SUM
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 求某一列的值的總和
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? select sum(colume1) from test;
select sum(age) from a6;
?
? ? ? ? ? ? 7.1.2)AVG
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 求某一列值的平均值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? select avg(colume1) from test;
select avg(age) from a6;
?
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果某一列中的值包含數(shù)值0,該如何計算?
? ? ? ? ? ? 7.1.3)COUNT
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 用于計算指定列中的行數(shù),不包含非空行
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? select count(id) from test;
select count(age) from a6;
?
? ? ? ? ? ? 7.1.4)MAX
? ? ? ? ? ? 用于計算指定列中的最大值
? ? ? ? ? ? MAX函數(shù)適用于任何數(shù)據(jù)類型,無論列中包含的是數(shù)字、文本還是其他類型的數(shù)據(jù)
? ? ? ? ? ? 如果是文本字符串類型,則按照字符串的字典序進行排序
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? select max(id) from test;
select max(age) from a6;
?
? ? ? ? ? ? 7.1.5)MIN
? ? ? ? ? ? 用于計算指定列中的最小值
? ? ? ? ? ? MIN函數(shù)適用于任何數(shù)據(jù)類型,無論列中包含的是數(shù)字、文本還是其他類型的數(shù)據(jù)
? ? ? ? ? ? 如果是文本字符串類型,則按照字符串的字典序進行排序
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? select min(id) from test;
select min(age) from a6;
?
? ? ? ? 7.2)字符串函數(shù)
? ? ? ? ? ? 7.2.1)CONCAT
? ? ? ? ? ? 連接兩個或多個字符串,并返回合成后的新字符串
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? select concat('hello',' ','World');
select concat(name,' ',age) from a6;
?
? ? ? ? ? ? 7.2.2)LENGTH
? ? ? ? ? ? 返回字符串的長度(字符數(shù))
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? select length('Hello World');
select length(name) from a6;
?
? ? ? ? ? ? 7.2.3)UPPER
? ? ? ? ? ? 將字符串轉換為大寫字母
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? select upper(Hello World);?
select upper(name) from a6;
?
? ? ? ? ? ? 7.2.4)LOWER
? ? ? ? ? ? 將字符串轉換為小寫字母
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? select lower(Hello World);
select lower(name) from a6;
??
? ? ? ? ? ? 7.2.5)SUBSTR
? ? ? ? ? ? 返回指定字符串中的一部分,可以使用起始位置和長度指定要返回的子字符串
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? select substr('Hello World',7,5);
select substr(name,1,4) from a6;
?
? ? ? ? ? ? 7.2.6)REPLACE
? ? ? ? ? ? 將指定字符串中的一部分替換為新字符串,并返回新的字符串
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? select replace('Hello World','Hello','Hi');
select replace(name,'ln','zn') from a6;
?
? ? ? ? 7.3)日期時間函數(shù)
? ? ? ? 7.4)數(shù)學函數(shù)
? ? ? ? 7.5)拓展內容
2、多表查詢
? ? ? ?多表查詢是指在關系型數(shù)據(jù)庫中,查詢多個表的信息并進行關聯(lián)、篩選和排序等操作的過程或語句。在一個查詢語句中同時查詢多個表,并根據(jù)表之間的關聯(lián)關系進行關聯(lián)查詢。通過多表查詢,可以將多個表的數(shù)據(jù)進行聯(lián)合,獲取到需要的結果集,多表查詢可以用來解決某些查詢需求。
? ? ? ?多表查詢常用的關聯(lián)方式包括:
? ? ? ?內連接(INNER JOIN):根據(jù)兩個表之間的關聯(lián)字段進行查詢,返回符合條件的數(shù)據(jù)。
? ? ? ?左連接(LEFT JOIN):以左表為基準,將左表中的所有數(shù)據(jù)與右表中符合條件的數(shù)據(jù)進行關聯(lián)查詢,如果右表中沒有符合條件的數(shù)據(jù),則用NULL填充。
? ? ? ?右連接(RIGHT JOIN):以右表為基準,將右表中的所有數(shù)據(jù)與左表中符合條件的數(shù)據(jù)進行關聯(lián)查詢,如果左表中沒有符合條件的數(shù)據(jù),則用NULL填充。
? ? ? ?全連接(FULL JOIN):將左表和右表中的所有數(shù)據(jù)進行關聯(lián)查詢,如果左表和右表中沒有符合條件的數(shù)據(jù),則用NULL填充。
? ? ? ?多表查詢可以通過使用JOIN關鍵字來實現(xiàn),其中可以通過ON關鍵字指定關聯(lián)條件。
2.1.內連接查詢
?創(chuàng)建兩個數(shù)據(jù)表寫有數(shù)據(jù)
CREATE TABLE z1 (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age VARCHAR(50) NOT NULL
);
CREATE TABLE n2 (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
gender CHAR(10) NOT NULL,
date DATE NOT NULL
);
INSERT INTO z1 (id, name, age) VALUES
(1,'zhangsan',18),
(2,'lisi',25),
(3,'wangwu',30);
INSERT INTO n2 (id,name, gender,date) VALUES
(1,'xiaoming','man','2000-05-17'),
(2,'xiaomei','woman','2013-06-30'),
(3,'xiaoshuai','man','2020-05-16'),
(4,'xiaonan','woman','1997-10-07');
?
SELECT *
FROM table1
INNER JOIN table2
ON table1.column1 = table2.column2;
? ? ? ?內連接是一種聯(lián)結操作,它根據(jù)兩個表之間的關聯(lián)關系將它們的記錄進行匹配。在這個例子中,通過指定 ON 子句來定義連接條件,即 table1.column1 = table2.column2。這表示將會以 column1 和 column2 的值相等作為連接條件,將兩個表中匹配的記錄合并在一起。
這個查詢可以用于在兩個表之間建立關聯(lián)關系,并獲取相關聯(lián)的記錄,以便進行進一步的分析或操作。
select *
from z1
inner join n2
on z1.id = n2.id;
?2.2、外連接查詢
2.2.1、左外連接查詢
SELECT *
FROM table1
LEFT JOIN table2
ON table1.column1 = table2.column2;
? ? ? ?這個查詢語句表示在兩個表(table1和table2)之間進行左連接(left join)操作。LEFT JOIN是一種關聯(lián)操作,它會返回左表(table1)中的所有記錄,以及右表(table2)中與左表關聯(lián)列(column1)匹配的記錄。通過指定"ON"關鍵詞和關聯(lián)條件(table1.column1 = table2.column2),可以確定兩個表之間的關聯(lián)關系。查詢結果將包含所有匹配的記錄,并且對于沒有匹配記錄的左表記錄,右表會返回NULL值。
select *
from z1
left join n2
on z1.id = n2.id;
2.2.2、右外連接查詢
SELECT *
FROM table1
RIGHT JOIN table2
ON table1.column1 = table2.column2;
? ? ? ?這個查詢語句表示在兩個表(table1和table2)之間進行右連接(right join)操作。RIGHT JOIN是一種關聯(lián)操作,它會返回右表(table2)中的所有記錄,以及左表(table1)中與右表關聯(lián)列(column1)匹配的記錄。通過指定"ON"關鍵詞和關聯(lián)條件(table1.column1 = table2.column2),可以確定兩個表之間的關聯(lián)關系。查詢結果將包含所有匹配的記錄,并且對于沒有匹配記錄的右表記錄,左表會返回NULL值。
select *
from z1
right join n2
on z1.id = n2.id;
文章來源:http://www.zghlxwxcb.cn/news/detail-610890.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-610890.html
到了這里,關于基于Linux操作系統(tǒng)中的MySQL數(shù)據(jù)庫SQL語句(三十一)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!