---恢復內容開始---
登入
1 >mysql -uroot -p1234
mysql登入 -u+使用者 -p 密碼
顯示資料庫
1 show databases;
使用某個資料庫
1 use xxx;
顯示資料庫表
1 show tables
顯示錶結構
1 show columns form xxx;//表名
select選擇
使用distinct來輸出MYsql只返回不同的值
1 select distinct email from user//必須放在這個欄位的前面
部分不能使用這個關鍵字(這個關鍵字用於可以用於所有列)除非指定的兩個列都不同,否則所有的行都被檢索出來
limit限制結果
1 select id from user limit 5,10
第一個引數為下標從幾個開始,從下標為0開始
第二個引數為要檢索的行數
排序:(asc 正序 desc 逆序)
1 select id from user order by id limit 0,10
必須先進行排序後進行限制結果不然會報錯的
is null和=null的區別
按照ANSI SQL標準,下面的兩個查詢都不返回任何行:
查詢一: SELECT * FROM test WHERE data=NULL
查詢二: SELECT * FROM test WHERE data<>NULL
詳細:http://blog.csdn.net/freshlover/article/details/8973266
where中的not關鍵字很有用在複雜的語句中
1 select * from user where id not in(12,13);
Like的萬用字元的進行過濾
select * from user where name LIKE 'a%';
注意在這裡面的字元是區分大小寫的,%代表可以出任意次數。
1 select * from user where name LIKE 'a_';
_代表一個字元匹配!
mysql 使用concat來對字元進行連線
1 select concat(id,'(',name,')') from t_user;
mysql 中如果使用時間作為查詢條件的話,最好使用Date()函式來修飾這個時間欄位
1 select * from t_user where Date(someTime)='2016-01-01';
因為如果你的資料庫的時間是timeStamp型別的話帶有時分秒會導致其檢索失敗;
group By分組查詢
1 select count(id) as c,position as p from t_user group by position having c >10;
相關組查詢中having組查詢中的篩選條件,
select 的順序
From 檢索的表
where 查詢條件(行級過濾)
group BY 分組說明
having 組級過濾
order by 輸出排序的順序
Limit 要檢索的行數
利用where語句進行多表查詢
1 select m.sendto,u.name from t_mail as m,t_user as u where m.senderid=u.id group by u.id;
利用內聯
---恢復內容結束---
登入
1 >mysql -uroot -p1234
mysql登入 -u+使用者 -p 密碼
顯示資料庫
1 show databases;
使用某個資料庫
1 use xxx;
顯示資料庫表
1 show tables
顯示錶結構
1 show columns form xxx;//表名
select選擇
使用distinct來輸出MYsql只返回不同的值
1 select distinct email from user//必須放在這個欄位的前面
部分不能使用這個關鍵字(這個關鍵字用於可以用於所有列)除非指定的兩個列都不同,否則所有的行都被檢索出來
limit限制結果
1 select id from user limit 5,10
第一個引數為下標從幾個開始,從下標為0開始
第二個引數為要檢索的行數
排序:(asc 正序 desc 逆序)
1 select id from user order by id limit 0,10
必須先進行排序後進行限制結果不然會報錯的
is null和=null的區別
按照ANSI SQL標準,下面的兩個查詢都不返回任何行:
查詢一: SELECT * FROM test WHERE data=NULL
查詢二: SELECT * FROM test WHERE data<>NULL
詳細:http://blog.csdn.net/freshlover/article/details/8973266
where中的not關鍵字很有用在複雜的語句中
1 select * from user where id not in(12,13);
Like的萬用字元的進行過濾
select * from user where name LIKE 'a%';
注意在這裡面的字元是區分大小寫的,%代表可以出任意次數。
1 select * from user where name LIKE 'a_';
_代表一個字元匹配!
mysql 使用concat來對字元進行連線
1 select concat(id,'(',name,')') from t_user;
mysql 中如果使用時間作為查詢條件的話,最好使用Date()函式來修飾這個時間欄位
1 select * from t_user where Date(someTime)='2016-01-01';
因為如果你的資料庫的時間是timeStamp型別的話帶有時分秒會導致其檢索失敗;
group By分組查詢
1 select count(id) as c,position as p from t_user group by position having c >10;
相關組查詢中having組查詢中的篩選條件,
select 的順序
From 檢索的表
where 查詢條件(行級過濾)
group BY 分組說明
having 組級過濾
order by 輸出排序的順序
Limit 要檢索的行數
利用where語句進行多表查詢
1 select m.sendto,u.name from t_mail as m,t_user as u where m.senderid=u.id group by u.id;
利用內聯 使用inner join on進行內聯
1 select m.sendto,u.name from t_mail as m Inner join t_user as u on m.senderid=u.id group by u.id;
外聯 查詢那些和他沒相關的資訊也就是另一張表為空
左外聯
1 select m.sendto,u.name from t_mail as m left outer join t_user as u on m.senderid=u.id group by u.id;
右外聯
1 select m.sendto,u.name from t_mail as m right outer join t_user as u on m.senderid=u.id group by u.id;
這兩種的外連線的區別的是left是以左邊的表為主列出他的所有的行,與右邊的表進行匹配
內聯和外聯的區別是
是不是將沒有關聯的欄位加入
插入資料
1 insert into user values(1,'a');//需要插入該表的所有的欄位的資料
不推薦 使用上面的用法
最好是使用指定列名
1 insert into user(id,name) values(1,'a');//指定列名可以保證資料表結構改變了也可以正常執行
多條資料插入(用,分隔)
1 insert into user(id,name) values(1,100),(2,300);
插入檢索出來的資料
1 insert into user(id,name) select id ,name from user
建立一個表
1 CREATE TABLE info( 2 id int not null primary key AUTO_INCREMENT, 3 content char(50) 4 )
刪除表
1 drop table user;
重新命名
1 rename table info to info2;
事務
start TRANSACTION//開啟事務 insert into info2(id ,name) values(1,'2'); commit;//提交