目前最流行的資料庫:
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;