mysql命令語句總覽

MySQL命令

登陸mysql帳號

dos命令窗口:mysql

-- 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>sql

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

​ lenght 表示取幾個。函數

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

limit (pageNo - 1) * pageSize, pageSizespa

# 例子,顯示前五頁的數據
-- 從 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

介紹:建立表code

-- 建表語句的語法格式:
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);
相關文章
相關標籤/搜索