文章目錄
- 一、數據庫的基礎命令
- 二、創建表
- 三、增(create)
- 四、查詢(retrieve)
- 五、條件查詢(where)
- 六、修改(update)
- 七、刪除(delete)
一、數據庫的基礎命令
1.使用客戶端連接服務器
mysql -u root -p
2. 使用net命令啟動和關閉MYSQL服務器
打開服務:net start mysql版本號
關閉服務:net stop mysql版本號
例如:net start mysql80
3.退出服務器
quit;或者\q;
4.使用“status:”命令查看MySQL的狀態信息。
status
5.查看數據庫
show databases;
6.創建數據庫
create database 庫名;
字符集和排序規則都是數據庫默認的。
或 create database [if not exists] 庫名;
括號里面的判斷可以省略,加上就是判斷一下數據庫里面有沒有你當前創建的庫名。
沒有就創建成功,有點話創建失敗給出一條警告信息。
或自己設置字符集和排序規則的建庫方式
例如:創建一個庫名為test的數據庫,并指定字符集和排序規則。
create database if not exists test character set utf8mb4 collate utf8mb4_0900_ai_ci;
7.查看警告信息。
show warnings;
8.查看當前數據庫默認字符集
show variables like ‘%character%’;
9.切換數據庫。
use 庫名;
10.查看當前選擇的數據庫名。
select database();
11.刪除數據庫。
drop database 庫名;
接下來開始步入正題。增刪改查都是基于表的操作首先需要創建表。
二、創建表
1.創建一張新表
create table 表名 (數據類型 字段名,[數據類型 字段名…]);
例如:創建考試成績表
CREATE TABLE exam (
id bigint,
name VARCHAR(20),
chinese DECIMAL(3,1),
math DECIMAL(3,1),
english DECIMAL(3,1)
);
大小寫都可以,MySQL中不區分大小寫。
2.查看表結構
describe 表名;
或 desc 表名;
3.刪除表
drop table [if exists] 表名;
4.向表中增加新的字段名
alter table 表名 add column 字段名 數據類型;
例如:向表中增加入學時間屬性列,其列名為rxsj,數據類型為datetime型。
alter table xs add column rxsj datetime;
5.修改表中字段名的 類型
alter table 表名 modify 字段名 數據類型;
例如:將表xs中nl(年齡)列數據類型改為int.
alter table xs modify nl int;
6.修改字段名。
alter table 表名 change 舊的字段名 新的字段名 數據類型;
例如:修改cj列名為mark
alter table kc change cj mark char(4);
7.刪除列。
alter table 表名 drop column 字段名;
例如:刪除mark列
alter table kc drop column mark;
8.修改表名。
alter table 舊的表名 rename to 新的表名;
三、增(create)
insert into 表名 [(字段名,字段名)] values(值1,值1),(值2,值2);
字段名必須和表中的相符,可以是一個或者多個
值的類型必須和字段的類型一致并且要和前面指定的字段名相對應。
字符類型需要用單引號引起來。
字段名省略不寫的時候默認是全列插入,所有的列都需要插入值,插入值的順序和表中字段名的順序一致。
添加的值可以是一個或者多個。
例如:INSERT INTO exam (id,name, chinese, math, english) VALUES
(1,‘唐三藏’, 67, 98, 56),
(2,‘孫悟空’, 87.5, 78, 77),
(3,‘豬悟能’, 88, 98, 90),
(4,‘曹孟德’, 82, 84, 67),
(5,‘劉玄德’, 55.5, 85, 45),
(6,‘孫權’, 70, 73, 78.5),
(7,‘宋公明’, 75, 65, 30);
四、查詢(retrieve)
1.全列查詢
select * from 表名;
例如:select * from student;
*代表所有的列。
指定列查詢
select 字段名,字段名…from 表名;
例如:select id,name from student;
2.表達式查詢
例如:select id,name chinese+math+english from score;
查詢語文數學英語成績的總和。
3.as關鍵字
例如:select id,name chinese+math+english as ‘總分’ from score;
as可以為表達式或者字段取別名。如果是字符需要用單引號引起來。as也可以省略。
4.distinct
例如:select distinct math from student;
distinct作用是去重。去掉相同的元組。distinct去重標準是兩條數據所有的字段都必須一樣才會被認為是相同是數據。
5.order by
例如:select * from exam order by math asc;
在exam表中按照數學成績按照從小到大排列。
order by:排序的作用。asc是升序排序,desc是降序排序。沒有寫排序規則默認是升序排序。
null值排序視為比任何值都小,升序在最上面,降序在最下面。
5.1使用表達式排序
例如:select id,name,chinese+math+english as ‘總分’ from exam order ‘總分’ by desc;
5.3多級排序
select id,name,chinese,math,english from exam order by chinese desc,math asc,english desc;
先按語文降序排序,再按數學升序排序,再按英語降序排序。
五、條件查詢(where)
1.比較運算符
1.1 >,>=,=,<=>,<,<=,!=,between a0 and a1,in(option),is null,is not null,like
分別是大于,大于等于,等于(null不安全)等于(null安全),小于,小于等于。不等于,范圍匹配,如果是option中某一個返回true,是空值,不是空值,模糊匹配。
1.2<=>區別=
<=>把 NULL 當成一個“確定的值”來比較。兩邊同為 NULL 返回 1;一邊 NULL、另一邊非 NULL 返回 0;兩邊都非 NULL 時按普通數值/字符串比較。
。=如果兩邊任意一邊為 NULL,結果直接是 NULL(既不是 0 也不是 1)。只有兩邊都非 NULL 且值相等時才返回 1,不等時返回 0。
因此,當你需要“把 NULL 視為普通值”來做比較(常見于 JOIN 條件或 WHERE 過濾)時,用 <=>;否則用普通 = 即可。
between a0 and a1
between a0 and a1是一個閉區間運算符支持數值,日期,字符串。
例如:SELECT * FROM products WHERE price BETWEEN 10 AND 20;
查詢價格在[10,20]區間的產品。
– 日期
WHERE hire_date BETWEEN ‘2024-01-01’ AND ‘2024-12-31’;
– 字符串(按字典序)
WHERE name BETWEEN ‘Alice’ AND ‘Bob’;
in
in是一個用于判斷某個值是否在一組給定值中的運算符
WHERE 列名 IN (值1, 值2, 值3, …);
例如:select * from exam where math in(90,91,92);
從 exam 表中選出 math 字段的值為 90、91 或 92 的所有記錄。
like
通配符 | 含義 | 示例 | 匹配結果 |
---|---|---|---|
% | 0 個或多個字符 | 'A%' | Apple, A, ABC… |
_ | 單個字符 | 'A_' | An, At, A1(僅2位) |
一個_就可以匹配一個字符兩個_ 就可以匹配兩個字符以此類推。
– 1. 查找以 A 開頭的名字
SELECT * FROM users WHERE name LIKE ‘A%’;
– 2. 查找名字是 4 個字符且以 A 開頭
SELECT * FROM users WHERE name LIKE 'A__'; – 3 個下劃線
– 3. 查找包含字母 B 的名字
SELECT * FROM users WHERE name LIKE ‘%B%’;
邏輯運算符
運算符 | 含義 | 示例 | 說明 |
---|---|---|---|
AND | 與(兩邊都為真才真) | WHERE age > 18 AND gender = 'F' | 年齡>18 且 性別為女 |
OR | 或(任意一邊為真即真) | WHERE city = 'BJ' OR city = 'SH' | 城市是北京 或 上海 |
NOT | 非(取反) | WHERE NOT (score < 60) | 分數不低于 60 |
limit分頁查詢
參數 | 含義 |
---|---|
偏移量 (offset) | 從第幾條開始取(第一條是 0) |
行數 (rows) | 取多少條 |
例如:SELECT * FROM exam ORDER BY id LIMIT 2 OFFSET 0;
或SELECT * FROM exam ORDER BY id LIMIT 0, 2;
按 id 升序排序,從第 0 條開始取 2 條記錄(即第 1、2 條)。
六、修改(update)
UPDATE 表名
SET 列1 = 新值1,
列2 = 新值2,
…
[WHERE 條件]; – 不寫 WHERE 會更新整張表!
例如:把學號為 1001 的學生數學成績改為 95:
update student set math=95 where id=1001;
七、刪除(delete)
目的 | 示例 |
---|---|
刪除某一行 | DELETE FROM exam WHERE id = 1001; |
刪除多行 | DELETE FROM exam WHERE math < 60; |
清空整張表(保留結構) | DELETE FROM exam; |
刪除前 N 條(MySQL 擴展) | DELETE FROM exam WHERE math < 60 LIMIT 10; |
例如:DELETE FROM student WHERE id = 1001;
總結:
完結。