1. 程式人生 > >資料庫——MySQL(二)(增刪查改、去重,分頁、模糊查詢、排序)

資料庫——MySQL(二)(增刪查改、去重,分頁、模糊查詢、排序)

新增所有列的記錄:
●  語法:insert  into  表名稱  values (值1,值2,值3,...值n);
●  例子:insert  into  user  values(‘張三’,‘演員’,22,‘男’);
注意:必須把所有列都進行新增,並且新增值的順序需要與建表時列的順序一致。新增值的資料型別要與列的資料型別相對應,數字型資料型別直接寫,其他型別的值需要單引號引起來。replace也可以插入資料,相當於insert
------------------------------------------------------------------------------------------------------------------


新增指明列的記錄:
●  語法:insert  into  表名稱(列名1,列名2,...列名n)  values (值1,值2,...值n);
●  例子:insert  into  user (name,age,sex)  values (‘張三’,22,‘男’);
注意:指明列的順序可以不和建表時的順序相同,新增值需要和指明列相對應,未指明列為預設值(default指定的值或者null)。同時,未指明列必須滿足約束條件(如:列設定了not  null,並且沒有設定default)
------------------------------------------------------------------------------------------------------------------

修改列的所有記錄:
●  語法:update  表名稱  set  列名=值;
●  例子:update  user  set  name=‘李四’;(把name列的值全部修改為‘李四’)
注意:在set關鍵字後跟上需要修改的列名和值的鍵值對。修改的許可權小於表的約束許可權,修改記錄時必須滿足表的約束條件,否則會報錯
------------------------------------------------------------------------------------------------------------------
修改指明列的記錄:
●  語法:update  表名稱  set  列名=值  where  條件;

●  例子:update  user  set  name=‘李四’ where  sex=‘男’;(把sex為‘男’的記錄的name列的值全部修改為‘李四’)
注意:修改列為多個時使用逗號分隔。條件為多個時使用and或者or分隔。如果沒有where條件則指明列的資料都會被修改
------------------------------------------------------------------------------------------------------------------
刪除所有的記錄:
●  語法:delete  from  表名稱;
●  語法:truncate  表名稱;
注意:兩種方法都可以使用。但是刪除記錄時慎重,事物提交後無法恢復刪除記錄。要想恢復很複雜。truncate速度更快,佔用日誌更少(直接釋放資料頁並且在事物日誌中也只記錄資料頁的釋放)。而delete一行一行刪除,在事物日誌中要記錄每一條記錄的刪除
------------------------------------------------------------------------------------------------------------------
刪除指明條件的記錄:
●  語法:delete  from  表名稱  where  條件;
●  例子:delete  from  user  where  name=‘張三’;(刪除name為‘張三’的所有記錄)
------------------------------------------------------------------------------------------------------------------
查詢所有的記錄:
●  語法:select  *  from  表名稱;
●  例子:select  *  from  user;
注意:* 表示所有的列
------------------------------------------------------------------------------------------------------------------
查詢指明列的所有記錄:
●  語法:select  列名  from  表名稱;
●  例子:select  name  from  user;
注意:多個列時,列名與列名之間使用逗號分隔,最後一個列名不需要逗號
------------------------------------------------------------------------------------------------------------------
查詢時使用別名:
●  語法:select  列名  as‘別名’ from  表名稱;
●  例子:select  name  as‘姓名’ from  user;
注意:as關鍵字可以省略,多個列時不是所有的列都必須新增別名。別名只修改查詢時列的名稱,真正表的列名不會被修改
------------------------------------------------------------------------------------------------------------------
查詢時使用算術運算子:+、-、*、/
●  語法:select  列名+值  from  表名稱;
●  例子:select  age+20  from  user;
注意:算術運算子只作用在數值型別的列上。可以是固定值,也可以指定某列
------------------------------------------------------------------------------------------------------------------
帶條件的查詢:>、<、=、>=、<=、!=(另一種寫法<>)
●  語法:select  *  from  表名稱  where  條件;
●  例子:select  *  from  user  where  name=‘張三’;(查詢name為‘張三’的所有記錄)
------------------------------------------------------------------------------------------------------------------
去除重複記錄:distinct
●  語法:select  distinct  列名  from  表名稱;
●  例子:select  distinct  age  from  user;
注意:distinct緊跟著在select關鍵字之後。如果查詢多個列則會把查詢的所有列的值進行拼接後,在去重
------------------------------------------------------------------------------------------------------------------
分頁:limit
●  語法:select  *  from  表名稱  limit  m,n;
●  公式:select  *  from  表名稱  limit((頁碼-1) * 行數),行數;
●  例子:select  *  from  user  limit  0,10;
注意:m表示從多少下標位開始(預設從0開始),n表示顯示多少條記錄。m如果省略掉。則預設從0下標位開始顯示記錄
------------------------------------------------------------------------------------------------------------------
複製查詢出來的表結構及記錄:
●  語法:create  table  新表名稱  as  select  *  from  表名稱;
●  例子:create  table  user1  as  select  *  from user ;
注意:as關鍵字可以省略。複製的表不會把原表中的主外來鍵約束進行復制
------------------------------------------------------------------------------------------------------------------
只複製表結構不復制記錄:
●  語法:create  table  新表名稱  select  *  from  表名稱  where  條件;
●  例子:create  table  user1  select  *  from user  where  1=2 ;
注意:只需where條件為假就行
------------------------------------------------------------------------------------------------------------------
多條件的查詢:and、or、not
●  and:並且的意思,查詢的記錄必須都滿足條件
●  or: 或者的意思,查詢的記錄只需滿足其中一個條件
●  not:取條件表示式的反值
●  語法:select  *  from  表名稱  where  條件;
●  例子:select  *  from  user  where  not  name=‘張三’;(查詢出name不為‘張三’的所有記錄)
注意:在條件與條件之間需使用and、or把條件進行連線起來
------------------------------------------------------------------------------------------------------------------
查詢空值的記錄:null、‘’
●  語法:select  *  from  表名稱  where  列名  is  null  or  列名=‘’;
●  例子:select  *  from  user  where  name  is  null  or  name=‘’;
注意:查詢空值必須兩個條件都寫,查詢null時只用is null。查詢非空is not null

------------------------------------------------------------------------------------------------------------------

查詢區間記錄:between

●  語法: select  *  from  表名稱  where  列名  between  m  and  n;
●  例子:select  *  from  user  where  age  between  20  and  50;(查詢出age>=20並且<=50的所有記錄)
注意:在m、n之間的記錄,幷包含m、n。and前寫小值,and後寫大值。between相當於age>=20 and age<=50的簡寫
------------------------------------------------------------------------------------------------------------------
查詢具體值的記錄:in
●  語法:select  *  from  表名稱  where  列名  in(值1,值2,....值n);
●  例子:select  *  from  user  where  age  in(20,22,23);(查詢出age為20,22,23的所有記錄)
注意:in相當於age=20 or age=22 or age=23的簡寫
------------------------------------------------------------------------------------------------------------------
模糊查詢:like、not  like
●  語法:select  *  from  表名稱  where  列名  like ‘條件’;
●  例子:select  *  from  user  where  name  like ‘%三%’;(查詢出name含有三的所有記錄)
注意:%表示任意長度的字元。_表示一個長度的字元
------------------------------------------------------------------------------------------------------------------
正則查詢:rlike
●  語法:select  *  from  表名稱  where  列名  rlike ‘[條件]’;
●  例子:select  *  from  user  where  name  rlike ‘[張王]三’;(查詢出張三或王三的所有記錄)
●  例子:select  *  from  user  where  name  rlike ‘[^張王]三’;(查詢出除了張三或王三的所有記錄)
注意:[...]範圍也可以為[0-9][a-z],也可以寫固定的值
------------------------------------------------------------------------------------------------------------------
查詢出來的結果進行排序:order  by
●  語法:select  *  from  表名稱  order  by  排序列名  排序要求;
●  語法:select  *  from  表名稱  order  by  排序列名  排序要求,排序列名  排序要求;多列排序
●  例子:select  *  from  user  order  by  age  desc;(查詢出來的記錄根據age的降序排序)
注意:排序是對整行記錄進行排序。desc表示降序,asc表示升序,如果省略了asc或者desc預設為升序
------------------------------------------------------------------------------------------------------------------
自己整理,有些地方是扒拉的,如有侵犯,還望告知