mysql命令語句總覽


MySQL命令

登錄mysql賬號

dos命令窗口:

-- mysql(或者是mysqlsh) -u賬號名 -p密碼
mysql -uroot -p123

use

-- 使用數據庫
use db_name;

select

-- 查看當前使用的數據庫
select database();

-- 查看當前數據庫版本
select version();

show

-- 查看數據庫目錄
show databases;

-- 查看數據庫中的表目錄
show tables;

-- 查看其他庫中的表
show tables from db_name;

-- 查看表的創建語句
show create table tb_name;

desc

-- 查看表結構
desc tb_name;

explain

-- 查看語句的執行狀態(執行計划)
explain select ename,sal from emp where sal = 5000;

create

-- 創建一個數據庫
create database db_name;

drop

-- 刪除一個數據庫
drop database db_name;

source

-- 加載 sql 文件,拖拽文件到dos窗口會自動生成路徑
-- \source
source D:\AllCode\SQLCode\test.sql

limit

介紹:分頁查詢 limit <startIndex>, <lenght>

​ startInsdex 表示起始位置,從 0 開始。

​ lenght 表示取幾個。

固定公式:每頁顯示 pageSize 條記錄:

limit (pageNo - 1) * pageSize, pageSize

# 例子,顯示前五頁的數據
-- 從 5 開始,取 5 個,將顯示第 5~10 條的數據。
select ename,sal from emp order by sal desc limit 5,5;

其他命令

-- 終止一條語句
\c 或者按ctrl+c鍵

-- 退出 mysql
\q 或者 quit 或者 exit

DDL語句 數據定義語言

create

介紹:創建表

-- 建表語句的語法格式:
create table 表名(
	字段名1 數據類型,
    字段名1 數據類型,
    字段名1 數據類型,
    ......
);

-- 將查詢結果做一張表:create table 表名 as select語句;
create table t_test 
as
select * from emp;

constraint(約束)

constraint 約束 介紹
not null 非空約束 約束的字段不能為null
unique 唯一約束 約束的字段不能重復,但可為null
primary key 主鍵約束 約束的字段既不能為null,也不能重復,一張表只能存其一
foreign key 外鍵約束 外鍵值可以為null,被引用的字段不一定是主鍵,但至少具有unique約束
-- 列級約束
-- not null 只有列級約束
drop table if exists t_class;
create table t_class(
    cid int primary key, -- 主鍵約束
    cname varchar(255) unique, -- 唯一約束
	cpassword varchar(255) not null, -- 非空約束
)
-- 表級約束
drop table if exists t_student;
create table t_student(
    sid int auto_increment, -- 自增
    classid int,
	sname varchar(255),
    scode varchar(255),
    spassword varchar(255),
    -- 聯合約束,兩者其一俱備唯一性即可
    unique(sname,scode),
    -- 復合主鍵
    primary key(sid,spassword)
    -- 外鍵引用
    foreign key(classid) references t_class(cid)
)

drop

-- 刪除一張表
drop table 表名;
-- 如果表存在則刪除,mysql特有語句
drop table if exists 表名;

alter

DML語句 數據操作語言

insert

介紹:往表里添加數據。

-- 添加一行記錄
insert into 
	表名(字段名1, 字段名2, ...)
values (數據1, 數據2, ...);

-- 添加一行記錄,省略字段
insert into 表名
values (數據1, 數據2, ...);

-- 添加兩行記錄
insert into 
	表名(字段名1, 字段名2, ...)
values 
	(數據1, 數據2, ...),
	(數據1, 數據2, ...);
	
-- 將查詢結果插入到一張表中:insert into 表名 select語句;
insert into t_test select * from emp;

update

修改表中的數據

-- 語法格式:update 表名 set 字段名1=值1,字段名2=值2...where條件;
update 
	emp 
set 
	ename = 'black', sal = 1234
where 
	deptno = 10;

delete

刪除表中的數據

-- 語法格式:delete from 表名 where條件
delete from emp where deptno = 10; 

truncate

介紹:永久截斷(刪除)表中的數據,不可回滾。

truncate table emp;

index(索引)

介紹:主鍵和具有unique約束的字段會自動添加索引。

# create index 索引名稱 on 表名(字段名);
# drop index 索引名稱 on 表名;
-- 給sal字段添加索引
create index emp_sal_index on emp(sal);
-- 刪除索引
drop index emp_sal_index;

view(視圖)

只能通過DQL語句創建視圖對象。

可以對視圖進行CRUD操作。

對視圖進行增刪改查,會影響到原表數據。

-- 創建視圖
create view myview as select empno,ename from emp;

-- 刪除視圖
drop view myview;

DQL語句 數據查詢語言

select

select		-- execute order 5
...
from		-- execute order 1

where		-- execute order 2
...
group by	-- execute order 3
...
having		-- execute order 4
...
order by	-- execute order 6
...
limit		-- execute order 7
...

條件查詢運算符

運算符 說明
= 等於
<> 或 != 不等於
< 小於
<= 小於等於
> 大於
>= 大於等於
between ... and ... 兩個值之間
is null 為空(is not null 不為空)
and
or
in( , ) 包含(not in(,) 不包含)
not 取非
like 模糊查詢(使用 % 與 _ 匹配)

order by

-- asc表示升序,desc表示降序,默認是升序
select 字段... from 表名 order by 字段 desc;

-- 多字段排序,越靠前的字段越起主導作用,優先滿足前排字段的條件
# 例子,emp是員工表,ename是員工名,sal是員工工資
select ename,sal from emp order by sal desc, ename asc;

多行處理函數

函數 說明
count() 取得記錄數
sum() 求和
avg() 取平均值
max() 獲取最大值
min() 獲取最小值

注意一:所有的多行處理函數都是對某一組數據進行操作

注意二:多行處理函數自動忽略 null

注意三:多行處理函數不能出現在where子句中

注意四:多行處理函數在group by語句后執行

# emp是員工表,sal 是員工工資
select sum(sal) from emp; -- 找出工資總和
select avg(sal) from emp; -- 算出平均工資
select max(sal) from emp; -- 找出最高工資
select min(sal) from emp; -- 找出最低工資

select count(*) from emp; -- 找出總條數
select count(sal) from emp; -- 找出不為null的條數

ifnull()

# emp是員工表,comm 是員工津貼
-- ifnull(可能為null的數據,被當做什么處理)
select ename,ifnull(comm,0) from emp;

distinct

-- 去除重復記錄
select distinct 字段 from 表名;
-- distinct 修飾多個字段時,所有字段聯合去重
select distinct 字段1,字段2... from 表名;

注意一:distinct 只能出現在所有字段的最前方

join...on...

語法格式 說明
inner join...on... 內連接,只會將參與連接的表A,表B相匹的數據查詢出來。inner 關鍵字可省略。
left outer join...on... 外連接,優先查詢主表,副表無匹配項時以 null 填充。left修飾左邊的表為主表,outer關鍵字可省略。
right outer join...on... 外連接,優先查詢主表,副表無匹配項時以 null 填充。right修飾右邊的表為主表,outer關鍵字可省略。

union

介紹:可將兩次查詢的結果拼接成一張表,通常用於拼接兩張毫不相干的表。

注意:參與拼接的表列數必須相同

-- 語法
select 
...
from 
...
union
select
...
from
...

TCL語句 事務控制語言

介紹:事務(Transaction)

​ 和事務有關的語句只有 DML語句(insert, delete, update)

-- 開啟事務
start transaction;
-- 回滾
rollback;
-- 提交
commit;
-- 設置回滾點, 回滾:rollback name;
savepoint name;

DCL語句 數據控制語言

補充知識

在 sql 中,null 參與運算的結果必定為 null。

示例數據表的代碼

-- 部門表
create table dept(
	deptno int primary key auto_increment, -- 部門編號
	dname varchar(14) ,	  -- 部門名字
	loc varchar(13)   -- 地址
) ;
-- 員工表
create table emp(
	empno int primary key auto_increment,-- 員工編號
	ename varchar(10), -- 員工姓名										-
	job varchar(9),	-- 崗位
	mgr int,	 -- 直接領導編號
	hiredate date, -- 雇佣日期,入職日期
	sal int, -- 薪水
	comm int,  -- 提成
	deptno int not null, -- 部門編號
	foreign key (deptno) references dept(deptno)
);
insert into dept values(10,'財務部','北京');
insert into dept values(20,'研發部','上海');
insert into dept values(30,'銷售部','廣州');
insert into dept values(40,'行政部','深圳');
insert into emp values(7369,'劉一','職員',7902,'1980-12-17',800,null,20);
insert into emp values(7499,'陳二','推銷員',7698,'1981-02-20',1600,300,30);
insert into emp values(7521,'張三','推銷員',7698,'1981-02-22',1250,500,30);
insert into emp values(7566,'李四','經理',7839,'1981-04-02',2975,null,20);
insert into emp values(7654,'王五','推銷員',7698,'1981-09-28',1250,1400,30);
insert into emp values(7698,'趙六','經理',7839,'1981-05-01',2850,null,30);
insert into emp values(7782,'孫七','經理',7839,'1981-06-09',2450,null,10);
insert into emp values(7788,'周八','分析師',7566,'1987-06-13',3000,null,20);
insert into emp values(7839,'吳九','總裁',null,'1981-11-17',5000,null,10);
insert into emp values(7844,'鄭十','推銷員',7698,'1981-09-08',1500,0,30);
insert into emp values(7876,'郭十一','職員',7788,'1987-06-13',1100,null,20);
insert into emp values(7900,'錢多多','職員',7698,'1981-12-03',950,null,30);
insert into emp values(7902,'大錦鯉','分析師',7566,'1981-12-03',3000,null,20);
insert into emp values(7934,'木有錢','職員',7782,'1983-01-23',1300,null,10);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM