1. 程式人生 > 其它 >MySQL操作指令筆記

MySQL操作指令筆記


檢視所有資料庫 show databases;

使用資料庫 use 資料庫名

檢視當前使用的庫 select database( );

建立資料庫 create database 資料庫名 charset=utf8;

刪除資料庫 drop database 資料庫名

表的操作
檢視當前資料庫所有表 show tables;

建立表 create tables 表名(id int,name varchar(30));

--auto_increment 表示自動增長
--not null 表示為空
--primay key 表示主鍵
--default 表示預設值
--unsigned 無符號

--create table 資料表名(欄位 型別 約束,【欄位 型別 約束】);
create table students(id int primay key not null auto_increment, name varchar(30));

查詢表
查詢所有列 select * from 表名;

--指定條件查詢 select * from 表名 where 條件

--查詢指定列 select 列1,列2, from 表名

使用 as 為列表指定別名 select 欄位 as 別名,欄位 as 別名 from 表名;

模糊查詢
--like (rlike 正則)
--% 替換一個或多個
--_ 替換一個

例:查詢姓名以 “小”開始的名字
select name from students where name like"小%";

範圍查詢
--in(1,3,8) 表示在一個非連續的範圍內
例: select name,age from students where age in(12,18,34);
--not in 不非連續的範圍內

--between ... and ... 表示在一個連續的範圍內
例:select * from students where age not between 18 and 34;

空判斷
--判空 is null

--非判空 is not null

排序
--order by 欄位
--asc 從小到大排序即升序(預設為升序)
--desc 從大到小排序即降序
例:select * from students where (age between 18 and 34)and gender=1 order by age desc;

--order by 多個欄位
例:select * from students where(age between 18 and 34)and gender=2 order by height desc,id desc;

聚合函式
--總數 count
例:select count(*) as 男性人數 from students where gender=1;

--最大值max ,最小值min,求和sum,平均數avg或sum(age)/count(*)
例:select avg(age) from students;

分組
--group by
例:按性別分類查詢
select gender from students group by gender;

計算每種性別中的人數
select gender,count(*)from students group by gender;

計算男性的人數
select gender,count(*) from students where gender=1 group by gender;

--group_concat(...)
例:查詢同種性別中的姓名
select gender,group_concat(name) from students where gender=1 group by gender;

--having
例:查詢每種性別中的人數多於2個的資訊
select gender,group_concat(name) from students group by gender having count(*)>2;

分頁
--limit start
例:每頁顯示兩個,第一頁面
select * from students limit 0, 2;
每頁顯示兩個,第二頁面
select * from students limit 2,2; {limit (第N頁-1)*每個的個數,就是每頁顯示的個數)

每頁顯示兩個,第三頁面
select * from students limit 4,2;

每頁顯示兩個,顯示第六頁資訊,按年齡從小到大排序
select * from students order by age asc limit 10,2;

連結查詢
--inner join ... on
--select * from 表A inner join 表B;
例: select * from students inner join dasses;

--查詢能夠對應班級學生以及班級的資訊
例: select * from students inner join classes on students.cls_id =classes.id;

--按要求顯示姓名班級
例:select students.*,classes.name from students inner join classes on students.cls_id =classes.id;

select students.name,classes.name from students inner join classes on students.cls_id =classes.id;

--給資料表起名字
select s.name c,name from students as s inner join classes as c on s.cls_id=c.id;

--left join 左對齊
--查詢沒有對應的學生
例:select ... from ... as x left join ... as x on ... where ...

select ... from ... as x left join ... as x on ... having ...

匯入資料(sql檔案)
source 路徑 .sql結尾的檔案;

標量 子查詢
查詢最高男生資訊
--select * from students where height=(select max(height) from students);

列級 子查詢
查詢學生班級號能夠對應學生資訊
--select * from students where cls_id in(select id from classes);

修改表
修改表-新增欄位 alter table 表名 add 列名 型別;

修改表-改欄位:重新命名 alter table 表名 change 原名 新名 類名及約束;

修改表-改欄位:不重新命名 alter table 表名 modify 列名 型別及約束;

修改表-刪除欄位 alter table 表名 drop 列名;

刪除表 drop table 表名;

修改表 update 表名 set 列1=值1, 列2=值2....,where 條件;

消除重複行
--distinct 欄位
例 select distinct gender from students;

刪除表
--物理刪除 delete from 表名 where 條件;
(Delete可以rollback撤銷,truncate不能)

-- 邏輯刪除,(用一個欄位表示這個資訊是否已不再使用。)
--alter table 表名 add is_delete 欄位 bit型別;
例 -- alter table students add is_delete bit default 0;
--update students set is_delete=1 id=6;

向表中插入資訊
insert into 表名 values(資訊);

部分插入 insert into 表名(列1,列2)values();

多行插入 例 --insert into 表名(列1,列2)values(‘大喬’,2),(‘貂蟬’,2);
--insert into 表名 values(0,"西施",20,"女",1,"1991-01-01"),
(0,"貂蟬",20,"女",1,"1991-01-01");