一、什麼是MySQL?mysql
MySQL是一種開源代碼的關係型數據庫管理系統,並由於器速度、可靠性和適用性備受中小型企業的青睞。sql
注意:數據庫命令都是以分號;結尾的,表示結束。數據庫
Linux系統下,怎麼登陸MySQL?函數
mysql -u root (用戶名) -p;編碼
輸入密碼,便可登陸排序
顯示當前的數據庫:show databases;索引
使用數據庫:use 數據庫名稱;ci
查看數據表:show tables;字符串
顯示錶的基本屬性:describe 表名;it
二、經常使用的字段類型有哪些?
1)整形(整數):
int:取值範圍:-2147483648--2147483647
tinyint:取值範圍:-128--127
2)字符串:
varchar(n):可變長度
char(n):不可變長度,相對於varchar來講,char佔用空間,但它也是有優勢的,就是存取速度要優於varchar。
3)日期時間:
date:yyyy-mm-dd 例如:2018-10-01
time:hh:mm:ss 例如:10:20:45
datetime:yyyy-mm-dd hh:mm:ss
4)浮點型:(m:表明總位數,n:表明小數的位數)
float(m,n)例如:float(5,2) 就能夠存儲:123.2二、345.98
double(m,n)和float的區別是精度較高,即存儲的精確度較高
decimal(m,n)三種類型中,精度最高。
三、如何建立表?
(注意:MySQL中,寫完語句後要加分號;,表示結束,表名和字段名最好用字母或字母加數字來標識,最好能是見名知意的單詞)
場景:建立一個表,id爲主鍵,名字的類型爲varchar,而且不能爲空,編碼是:utf8
語法: create table 表名 (id int primary key,name varchar(10) not null,字段名3 類型,...)DEFAULT CHARSET=utf8;
四、如何批量插入數據?
注意:字段名和值是一 一對應的。
insert into 表名 (字段名1,字段名2) values (值1,值2);
五、如何更新數據?
1)無條件更新
update 表名 set 字段1=值1,字段2=值2,...,字段N=值N;
2)條件更新
update 表名 set 字段1=值1,...,字段N=值N where 條件A and(or) 條件B and(or) ...;
六、如何刪除?(慎用)
1)條件刪除
delete from 表名 where 條件A and(or) 條件2,...;
2)無條件刪除
delete from 表名 ------------ 刪除的是表的數據
drop table 表名 -------------刪除整個表,包括表的結構
drop database 數據庫名 ------------刪除數據庫
七、如何查詢?
1)查詢特定字段
select 字段1,字段2,...,字段N from 表名;
2)查尋全部字段
select * from 表名
3)條件查詢
select ... from 表名 where 條件A and(or) 條件B and(or) ...;
4)多表查詢(注意:查詢的字段名要帶表名加一個點,查詢纔可以識別並查找)
select A.字段名,B.字段名 from 表A,表B,...,表N where 關聯條件 and 過濾條件;
八、如何對查詢到的結果進行排序?-------asc升序(默認,能夠不寫),desc降序
select 字段名 from 表名 where 條件 order by 字段X asc(desc);
九、查詢語句結構,或者說先寫什麼,再寫什麼?
select 字段名 -------------查詢什麼字段
into 新表名 ------------查詢的時候建立一個新的表
from 表名 ------------來自什麼表
where 條件語句 ---------條件
group by ----------按什麼字段分組
having -----------過濾條件
order by -------------排序
limit m,n -----------分頁(索引從m開始,第一條索引爲0,第2條索引爲1;n表示每頁顯示的數據條數)
十、怎麼分組?----group by
注意:group by 必須和聚合函數結合使用。常見聚合函數:sum(), count(), avg(), min(), max()等。
group by後邊的分組字段要與select 後邊的字段保持一致。
若是過濾分組,則使用having+過濾條件來完成。
場景:查詢每一個年級的總人數和班級數量
語法:select 年級,sum(人數) from 表 group by 年級;
having 至關於where語句,但having能夠包含聚合函數,但where不能夠。
having經常與group by 一塊兒使用。
例如:select 學號,sum(成績) from 成績表 group by 學號 having sum(成績)>600;
十一、怎麼分頁?
select 字段名 from 表名 limit m,n;
十二、between的用法?
select 字段名 from 表名 where 字段名 between 值1 and 值2;
1三、in not in的用法?------查詢的結果是集合,in是在什麼集合內,not in則相反。
select 字段名 from 表名 where 條件字段 in(值1,值2,...,值N);
1四、模糊查詢?
select ... from ... where ... like '%xx' ; ----%用來匹配任意長度的字符串,能夠放你想放的位置(前,中,後),放在前面,說明前面能夠是任意字符串,但結尾是xx
select ... from ... where ... like '_x'; -----_一個下滑線佔一個位,能夠匹配任意字符串,但只能匹配一個,能夠用來匹配身份證號,電話號碼等。
1五、count ()的用法?------------統計
select count(*)from 表名 where 條件;
1六、去重?--------distinct
select distinct 字段名 from 表名;
1七、數值類型函數的用法?
min() :最小值 max() :最大值 avg():平均值 sum():求和
語法: select min(字段名) from 表名;
1八、日期類型函數?
sysdate() :系統時間函數 , yyyy-mm-dd hh:mm:ss。 語法:select sysdate();
curdate() :系統時間函數 ,yyyy-mm-dd。 語法:select curdate();
year():獲取年份 ,如:2018。 語法:select year(curdate()); ------------獲取系統當前年份
month():獲取月份。 語法:select month(curdate()); -----------獲取系統當前月份
day():獲取當月第幾天。 語法:select day(curdate()); ------------獲取系統當前幾日
day_add():增長一個時間間隔。 語法:day_add(curdate(),interval 5 day); -----------在系統當前日期上加5天
day_sub():減去一個時間間隔。 語法:day_sub(curdate(),interval 5 day);------------在系統當前日期減去5天
1九、字符串函數?
concat():多個字段數據拼接。語法:select concat(字段1,字段2) from 表名;
substr():截取數據函數。str--要操做的字符串,pos--開始截取的位置,len--截取的長度,如未指定,則截取到最後一位。
1)select substr(str,pos);
2)select substr(str,pos,len) ; ---select substr(id,1,2) from student; 從student表中查詢id的前兩位。
length():獲取一個值的長度,通常用在字符串類型字段上的狀況較多。
1)select length('hello'); ----------獲得的結果爲5
2)select length(id)from student; -----獲取學號的長度
20、內鏈接?
內鏈接的特色:只返回知足關聯的條件,兩個表都存在的數據。
select 表1.字段名,表2.字段名 from 表1,表2 where 表1.字段=表2.字段;
或者:
select 表1.字段名,表2.字段名 from 表1 inner join 表2 on 表1.字段=表2.字段;
2一、外部鏈接?
注:先寫左表,後寫右表,匹配不到,自動補null。
一、左外鏈接:左邊的表不加限制:left outer join 匹配不到,右表爲null
二、右外鏈接:右邊的表不加限制:right outer join 匹配不到,左表爲null
三、全外鏈接:全部兩個表中的行都會包含在集合中,若是匹配不上,在各自的對應的位置顯示null。 full outer join
場景:顯示錶1全部的行,與右表匹配,若是左表的行沒有匹配到,對應右表的行爲null。
語法:select 表1.字段名,表2.字段名 from 表1 left outer join 表2 on 表1.字段=表2.字段;
2二、在查詢的基礎上建立新表?
select 字段名 into 新表名 from 表名;
2三、where 字句能夠用的條件?
比較運算符:=、<、>、>=等
邏輯運算符:and、or、not
範圍運算符:between ... and ...、not between ...and...
列表運算符:in、not in
字符通配符:like、notlike