目前最流行的資料庫: oracle、mysql、sqlserver、db2、sqline --:單行註釋 #:也是單行註釋 /* 註釋內容*/:多行註釋 mysql -uroot -p密碼:登錄mysql service mysqld restart重啟mysql /etc/my.cnfmysql的 ...
目前最流行的資料庫:
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_archivelog\G