MySQL資料庫常用操作

睡到自然醒ccc發表於2018-04-17

 

 

目前最流行的資料庫:

oracle、mysql、sqlserver、db2、sqline

–:單行註釋

#:也是單行註釋

/* 註釋內容*/:多行註釋

mysql -uroot -p密碼:登入mysql

service mysqld restart
重啟mysql

/etc/my.cnf
mysql的配置檔案

/var/lib/mysql
mysql資料庫的資料庫檔案存放位置

/var/log
mysql的資料庫的日誌輸出存放位置

create database 庫名 default character set =utf8;:建立資料庫

show databases:檢視所有資料庫

drop database 資料庫名:刪除資料

備份的語法一:
Mysqldump –uroot –p 要備份哪個資料庫 > 備份到哪去的路徑;

備份語法二:
Mysqldump –uroot –p – -database 要備份哪個資料庫 > 備份到哪去的路徑;

source+sql檔案:恢復資料庫

use 資料庫名稱:使用業務資料庫

show tables:檢視業務資料庫下有多少張表格

desc 表名:描述表結構

建表語法:
create table 表名字 (列名 資料型別,l列名2 資料型別,…,列名n 資料型別)Engine=INNODB charset=utf8;

表建立好過後新增一列或者多列:
ALTER TABLE 表名 ADD (列名 資料型別,…,列名n 資料型別);

換列名語法:
Alter table 表名 change column 原有的列名 新的列名 對應的資料型別

刪除列:
alter table 表名 drop column 要刪除的列

給列新增註釋:
Alter table 表名 modify column 列名 對應資料型別 comment ‘你要註釋的內容’

新增資料語法:
insert into 表名(列1,列2…列n) values(值1,值2,…值n)

一次增加多條資料:
Insert into 表名(列1,列2,..,列n) values (值1,值2,…..,值n), (值1,值2,…..,值n)

修改資料:
update 表名 set 列名=值 where 條件

Update 可以一次修改多列:
Update 表名 set 列1=值1,列2=值2 where 條件

刪除資料:
delete from 表名 where 條件

刪除整張表的資料:
truncate table 表名

刪除資料庫:
drop

新增預設值:
create table 表名(列名稱 資料型別 default 預設值)

新增非空約束的語法:
alter table 表名modify column 列名 對應的資料型別 not null;

給表新增主鍵約束:
Alter table表名 add constraint primary key PK_表名_需要新增約束的列名 (要新增約束的列)

給表新增外來鍵約束:
alter table 表名add constraint foreign key fk_表名 _列名 (需要新增約束的列)references 引用的表 (引用的是哪一列)

Select * from 表名: 查詢這張表裡面的所有資料

Select 列名1,…,列名n from 表名:多列查詢

select 列名 from 表名:單列查詢

Select 列名1 as 別名1,列名n as 別名n from 表名:查詢的時候命名別名

Select distinct(需要去除重複的列) from 表名:去重查詢(只能是單列去除重複)

select * from 表名 where 條件:帶條件查詢

 

SQL一共由四個部分組成:

DQL 資料查詢語言 select

DML 資料操作語言 insert,update,delete

DDL 資料定義語言 create,drop,alter

DCL 資料控制語言 grant,revoke,commit,rollback

Between and : 在……之間

Select * from 表名 where 列名 in (範圍):在範圍內取值

Select * from 表名 where 列名 is null:判斷該列是否有空值

Select * from 表名 where 列名 is not null:判斷該列是否有非空的值;

select * from 表名 where 列名 like ‘_或者%值’:模糊查詢
_只匹配一個字元
%匹配任意個字元

資料庫裡面的排序order by
Order by後面可以跟上兩個單詞 ASC DESC
語法:select * from 表名 order by 要排序的列;

select * from 表名 limit m,n:從m行開始 取n行顯示

表連線語法:
內連結語法:Select * from 表1 join 表2 on 主鍵=外來鍵
左外連結語法:Select * from 表1 left join 表2 on 主鍵=外來鍵
右外連結語法:Select * from 表1 right join 表2 on 主鍵=外來鍵

 

表連線:

第一步:看這幾張有沒有相同的列
第二步:確定這個列是哪張表的主鍵
第三步:確定好了過後直接寫on 主鍵=外來鍵
第四步:修改*,把*號換成一些需要顯示列

自連線:

第一步:將張表以命名別名的方式拆分成兩張表
第二步:找準篩選出垃圾資料的關係
第三步:分清左邊的資料來自於哪張表,右邊的資料來自於哪張表
第四步:才開始寫 on 主鍵=外來鍵
第五步:換*號,顯示需要展示出來資料

字元函式:
concat(列1,`字元`); 合併函式
select concat(userName,userPwd) `使用者名稱和密碼` from user;
select concat(`Hello`,`World`) from dual;

日期函式:
sysdate(); 查詢當前系統時間函式
select sysdate() from dual;
select * from user;
dual??
dual是資料庫為了讓我們試驗函式的作用或者功能所提供的一張偽表;
偽表就是實際上不存在,但是在資料庫當中依然可以使用,表名就叫dual
轉換函式

數字函式

其它函式

統計函式,又稱聚合函式,專門為了統計某一列的值而研發出來的函式
count 統計某一列的非空總行數
sum 統計某一列的總和
max 統計某一列的最大值
min 統計某一列的最小值
avg 統計某一列的平均值

count可以忽略列的資料型別
avg sum max min 只能用於數字型別只上;

having 與where的區別:
相同點:having和where都是用於條件篩選
不同點:having多與group by 結合使用,用於分組過後的條件篩選where用於分組之前的篩選

 

子查詢語法:
Select * from 表名 where 列名 in (Select 相同列 from 表名)
Select * from 表名 where 列名 比較運算子 (select 數字列 from 表名)
注意點:如果在where後面巢狀了子查詢,一定要記得把 * 號換成where 後面的那個列名

 

新增索引的語法:
Alter table 表名 add 索引的型別 索引的名字 (需要新增索引的列)
ALTER TABLE `orderdetail`
ADD INDEX `orderdetailNum` (`orderdetailNum`) ;
刪除索引的語法:
Alter table 表 drop 索引型別 索引的名字

 

事務:
Set autocommit=0;
關閉自動提交,開啟事務
Set autocommit=1;
開啟自動提交,關閉事務;
start transaction; — 開啟一個事務點;記錄原有表中的資料,如果一旦出錯,直接回到這個事務點之上
set autocommit=0; — 開啟事務

 

檢視:就是一張虛擬表格裡面儲存了查詢結果;
特點:隱藏真正的表名,讓人不知道你的表名或者列名真正叫什麼

建立試圖的語法:create view 檢視名字 as 查詢語句

刪除檢視語法:drop view 檢視名字

 

 

 

 mysql查詢表內所有列名,並用逗號分隔:

SELECT GROUP_CONCAT(COLUMN_NAME SEPARATOR “,”) FROM information_schema.COLUMNS 
WHERE TABLE_SCHEMA = `資料庫名稱` AND TABLE_NAME = `表名`

 

 

當行內容過長時,尾部+G 將結果以垂直方向輸出。

mysql> select * from db_archivelogG

 

 

清空自增列的值:

 alter table mr_city AUTO_INCREMENT=1;

 

 

相關文章