mysql常用命令整理
Mysql常用命令格式(quit退出)
Int——floct —— varchar —— datetime(YYYY-MM-DD)(HH:ii:ss)
數據庫操作
show databases;查看所有數據庫
use tomcat;選擇數據庫
表操作
增
create table tgx(id int,name varchar(20),sex varchar(4),addr varchar(50),phone int);
create table tgx3(id int auto_increment primary key,name varchar(20),sex varchar(4) default
表的創建格式,下面是帶主鍵、默認值、唯一性約束
alter table tgx2 add sex varchar(20); 添加一個新的字段
刪
drop database blk;刪除表
alter table tgx2 drop addr;刪除字段
改
alter table tgx2 modify sex varchar(20); 改字段數據類型modify
alter table tgx2 change sex xingbie varchar(20); 修改字段名稱、數據類型change
查
Show tables
Desc tax; 查看表結構
字段操作
增
insert into tgx(id,name,sex,addr,phone)指定字段
values(1,‘陳衛亮‘,‘男‘,‘北京‘,17777777777);添加內容
標準格式添加字段
insert into test2 values(1,‘陳衛亮‘,‘男‘,‘北京‘,17777777777),( 1,‘陳衛亮‘,‘男‘,‘北京‘,17777777777),
多字段輸入
刪
delete from test2 where 字段=值;刪除指定字段,不加where條件刪除所有字段
truncate tablaname
改
update 表名稱 set 字段=值 where 字段=值
update test2 set money=90 where name=‘xixi‘;
查
= < > %通配符 _通配符(任意單個字符) !=(不等於<>) and(並且) or(或者) in(或者) like(模糊查詢) limit(限定查詢條數或者範圍)
union(合並select結果,數據類型要一致,字段要相同)
查詢tgx表中name=‘值
select*from tgx where name=‘陳衛亮‘;——指定條件查詢
SELECT*from test2 where sex=‘男‘ and money<=200;
In用法
select*from test2 where name in (‘陳衛亮‘,‘陳紅光‘);
SELECT*from test2 WHERE `name` in (‘陳衛亮‘,‘陳紅光‘)AND money>1000;
like用法
select*from test2 WHERE name like ‘陳%‘;
select*from test2 WHERE name like ‘陳_‘;
between用法(在兩個條件什麽之間,數值類型的)
select*from test2 a where a.money between 100 and 1000;
order by(排序)
select*from test2 order BY id desc;(降序)
select*from test2 order BY id asc;(升序)
select*from test2 WHERE name=‘陳紅‘ order BY id desc;
查詢數據為空的一種是空 還有一種是is null
select*from test2 WHERE addr=‘‘; 查詢為空的
select*from test2 WHERE addr IS NULL; 查詢為null的
distinct(去重)
select distinct money from test2;
limit(限定查詢條數或者範圍,不顧頭顧尾)
select*from test2 limit 3;
select*from test2 limit 0,5;
起別名
select phone 手機號from test2 where name=‘陳衛亮‘;
select phone 手機號,addr 地址 from test2 where name=‘陳衛亮‘;
phone 手機號 字段後面緊跟別名
聚合函數
count(統計行數)
SELECT COUNT(*) 學生人數 from test2 where sex=‘男‘;
Max(最大值)
SELECT MAX(money) 錢最多 from test2 ;
MIN(最小值)
SELECT MIN(money) 錢最少 from test2 ;
AVG(平均值)
SELECT AVG(money) 平均值 from test2 ;
SUM(總和)
SELECT SUM(money) 總和 from test2 ;
Group by(分組)
SELECT sex 性別,COUNT(*) 人數 from test2 GROUP BY sex;
SELECT sex 性別,`name` 姓名,COUNT(*) 人數 from test2 WHERE money>1000 GROUP BY id HAVING `name` LIKE ‘陳%‘;
如果group by 後面有條件的話,必須要用having子句,having子句裏面用到的字段必須出現在select後面,如果group by和or
select *,count(*)from test2 group by sex,class; 多個字段分組
聯表查詢
union和union all區別後者會去重
select id,pwd from test3 union select id,dingdan from test4;
考勤表上午,下午打卡異常
多表查詢(關聯 兩個共有的id)
select*from test2 a, test3 b where a.id=b.uid and a.name=‘陳衛亮‘;
select a.username 用戶名,b.pwd 密碼,c.dingdan 訂單 from test2 a,test3 b,test4 c where a.id=b.uid and a.id=c.uid and a.username=‘陳衛亮‘;
查詢三張表的三個字段
select*from test2 a,test4 b where a.id=b.uid;
標準多表關聯(兩邊共有字段查出來)
select*from test2 a left join test4 b on a.id=b.uid;
左連接(會把左邊表所有數據都查出來)
select*from test2 a right left join test4 b on a.id=b.uid;
右連接(會把右邊表所有數據都查出來)
select*from test2 a inner join test4 b on a.id=b.uid;
內連接(兩邊公友的字段查出來和)
子查詢
把一條sql的結果,作為另一條sql的條件
select*from test4 a where a.uid=(select id from test2 where username=‘陳衛亮‘)
plush privileges更改數據庫配置後用來刷新權限
存儲過程
造數據例子:
delimiter $$;
CREATE PROCEDURE big_data1(num INT)
begin
DECLARE i int;
set i=0;
WHILE i<num DO
insert into tgx(sex,addr) values (‘男‘,‘天津‘);
set i=i+1;
end WHILE;
End
$$;
Delimiter;
call big_data1(50);
備份數據庫
在opt/lamp/bin目錄下運行下面命令
Liunx命令 ./mysqldump –uroot –p123456 tgx > tgx.sql
-A(代表所有的數據庫)
自動備份
新建文件自定義 vi bak_db.sh
Shell腳本
Time=date+%Y%m%d
mysqldump –uroot –p123456 -A > tmp/bak_sql/${time}_all.sql
echo “bakup sql ok”保存退出後添加權限chmod +x bak_db.sh然後執行./ bak_db.sh
mysql常用命令整理