MySql 常用語法總結


1、什么是MySQL?

  MySQL是一種開源代碼的關系型數據庫管理系統,並因為器速度、可靠性和適用性備受中小型企業的青睞。

  注意:數據庫命令都是以分號;結尾的,表示結束。

  Linux系統下,怎么登錄MySQL?

    mysql -u root (用戶名) -p;

    輸入密碼,即可登錄

    顯示當前的數據庫:show databases;

    使用數據庫:use 數據庫名稱;

    查看數據表:show tables;

    顯示表的基本屬性:describe  表名;

2、常用的字段類型有哪些?

  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.22、345.98

    double(m,n)和float的區別是精度較高,即存儲的精確度較高

    decimal(m,n)三種類型中,精度最高。

3、如何創建表?

   (注意:MySQL中,寫完語句后要加分號;,表示結束,表名和字段名最好用字母或字母加數字來標識,最好能是見名知意的單詞)

       場景:創建一個表,id為主鍵,名字的類型為varchar,並且不能為空,編碼是:utf8

  語法: create  table  表名 (id int primary key,name varchar(10) not null,字段名3  類型,...)DEFAULT CHARSET=utf8;

4、如何批量插入數據?

  注意:字段名和值是一 一對應的。

  insert   into  表名 (字段名1,字段名2)   values  (值1,值2);

5、如何更新數據?

  1)無條件更新

  update  表名  set  字段1=值1,字段2=值2,...,字段N=值N;

  2)條件更新

  update  表名  set   字段1=值1,...,字段N=值N  where  條件A  and(or) 條件B and(or) ...;

6、如何刪除?(慎用)

  1)條件刪除

  delete from 表名 where 條件A and(or) 條件2,...;

  2)無條件刪除

  delete from 表名                       ------------ 刪除的是表的數據

  drop table  表名                        -------------刪除整個表,包括表的結構

  drop  database   數據庫名        ------------刪除數據庫

7、如何查詢?

  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  過濾條件;

8、如何對查詢到的結果進行排序?-------asc升序(默認,可以不寫),desc降序

  select   字段名   from  表名  where  條件  order  by  字段X  asc(desc);

 

9、查詢語句結構,或者說先寫什么,再寫什么?

  select   字段名                          -------------查詢什么字段

  into   新表名                              ------------查詢的時候創建一個新的表

  from  表名                                  ------------來自什么表

  where        條件語句                  ---------條件

  group by                                    ----------按什么字段分組

  having                                       -----------過濾條件

  order by                                    -------------排序

  limit m,n                                   -----------分頁(索引從m開始,第一條索引為0,第2條索引為1;n表示每頁顯示的數據條數)

 

10、怎么分組?----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;

11、怎么分頁?

  select 字段名 from 表名 limit m,n;

12、between的用法?

  select 字段名 from 表名 where 字段名 between 值1 and 值2;

13、in   not in的用法?------查詢的結果是集合,in是在什么集合內,not in則相反。

  select 字段名  from 表名 where  條件字段   in(值1,值2,...,值N);

14、模糊查詢?

select ... from ... where ... like '%xx' ; ----%用來匹配任意長度的字符串,可以放你想放的位置(前,中,后),放在前面,說明前面可以是任意字符串,但結尾是xx

select ... from ... where ... like '_x';   -----_一個下滑線占一個位,可以匹配任意字符串,但只能匹配一個,可以用來匹配身份證號,電話號碼等。

15、count ()的用法?------------統計

  select  count(*)from  表名  where  條件;

16、去重?--------distinct

  select distinct 字段名 from  表名;

17、數值類型函數的用法?

  min() :最小值     max() :最大值      avg():平均值      sum():求和

  語法: select   min(字段名)  from  表名;

 18、日期類型函數?

  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天

19、字符串函數?

  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.字段;

21、外部連接?

  注:先寫左表,后寫右表,匹配不到,自動補null。

  1、左外連接:左邊的表不加限制:left outer join  匹配不到,右表為null

  2、右外連接:右邊的表不加限制:right outer join 匹配不到,左表為null

  3、全外連接:所有兩個表中的行都會包含在集合中,如果匹配不上,在各自的對應的位置顯示null。 full outer join

  場景:顯示表1所有的行,與右表匹配,如果左表的行沒有匹配到,對應右表的行為null。

  語法:select 表1.字段名,表2.字段名 from 表1 left outer join 表2 on 表1.字段=表2.字段;

22、在查詢的基礎上創建新表?

  select 字段名 into 新表名 from 表名;

23、where 字句可以用的條件?

  比較運算符:=、<、>、>=等

  邏輯運算符:and、or、not

  范圍運算符:between ... and ...、not between ...and...

  列表運算符:in、not in

  字符通配符:like、notlike 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM