1. 程式人生 > >MySQL增刪改插 及表的復制及改名

MySQL增刪改插 及表的復制及改名

upd name into false 別名 字段名 句子 顯示 邏輯或

MySQL增、刪、改、插
全表查詢表記錄
格式1:select 字段1,...字段N from 庫名.表名;

格式2:select 字段1,...字段N from 庫名.表名 where 條件表達式;

註意事項:
1.使用"*"可匹配所有字段。
2.指定表名時,可采用 庫名.表名 的形式

例:
mysql>create database ku;
mysql>create table ku.lisi(
>name char(10) not null,
>gender  enum("boy","girl"),
>age int(3) not null
>);

mysql>insert into ku.lisi   values("luozixu","boy"23);
mysql>insert into ku.lisi   values("wang","girl",25);

mysql>select * from ku.lisi;
mysql>select name,age from ku.lisi where gender="girl";

例:
為指定字段顯示別名,name顯示為"姓名"、age顯示為"年齡"
mysql>select name AS "姓名",age AS "年齡" from ku.lisi;

查詢及條件匹配
使用WHERE句子引導
1.適用於更新,刪除,查詢等
2.只有符合條件的記錄才會被操作

常見的匹配條件
1.檢查字段的數值大小
2.字符串是否匹配
3.邏輯測試,範圍測試

數值的比較
=             等於
>、>=         大於、大於或等於
<、<=         小於、小於或等於
!=            不等於
BETWEEN..AND...  在...與...之間

邏輯比較,多條件組合
OR、AND、! 邏輯或、邏輯與、邏輯非
IN..、NOTIN.. 在..範圍內、不在..範圍內
IS NULL 字段的值為空

IS NOT NULL 字段的值不為空
DISTINCT 不顯示重復的值

    運算操作
+          加法
-          減法
*          乘法
/          除法
%          取余法(求模)

使用模糊查詢
基本用法:
-WHERE 字段名 LIKE "通配字串"
-通配符"_"匹配單個字符,"%"匹配0-N個字符

例:列出name字段值以J開頭或以Y結尾的記錄
mysql>select * from ku.lisi where  name  LIKE  "J"  OR name LIKE "Y";

使用正則表達式
基本用法:
-WHERE 字段名 REGEXP ‘正則表達式‘

例:列出name字段值以J開頭或以Y結尾的記錄
mysql>select * from  ku.lisi  where  name regexp ‘^J|Y$‘;

where子查詢
使用where子查詢:
-把內層查詢結果作為外層查詢的查詢條件

格式1:select 字段名列表 from 庫.表A where 條件 (select 字段名列表 from 庫.表A );

格式2:select 字段名列表 from 庫.表A where 條件 (select 字段名列表 from 庫.表A where 條件);

例:輸出年齡小於平均年齡的學生的姓名和年齡
mysql>select  name,age from  ku.lisi  where age < (select avg(age) from  ku.lisi); 

格式3:select 字段名列表 from 庫.表A where 條件 (select 字段名列表 from 庫.表B );

格式4:select 字段名列表 from 庫.表A where 條件 (select 字段名列表 from 庫.表B where 條件);

    常用的統計函數
avg()         集合的平均數 
sum()         對集合中的各參數求和
min()         集合中的最小值
max()         集合中的最大值
count()       記錄的個數

例:輸出ku庫lisi表的記錄個數,各個學生年齡總和
計算各學生的平均年級、最大、最小的年齡。
mysql>select count(*),sum(age) from ku.lisi;
mysql>select avg(age),max(age) from ku.lisi;

查詢結果排序/分組
基本用法:
-ORDER BY 字段名 [asc(升序)/desc(降序)]
-GROUP BY 字段名 [HAVING 條件表達式]
-LIMIT N,M 限制顯示記錄條目數

例:
查詢ku庫lisi表,按年齡排序,輸出前2條結果。
mysql>select * from  ku.lisi  order  by  age  limit  2;

再輸出降序排列的前2列結果
mysql>select * from  ku.lisi  order  by  age  desc limit 2;

例:
查詢ku庫lisi表,按性別進行分組,分別統計boy、girl的人數。
mysql>select gender AS "性別",count(*) AS "人數" from ku.lisi  group by  gender;

insert 插入記錄
格式1:(僅指定部分字段的值)
insert into 庫名.表名(字段1,字段2,..字段N) values(字段1賦的值,字段2賦的值,....字段N賦的值);

格式2:(指定每一個字段的值)
insert into 庫名.表名 values(字段1賦的值,字段2賦的值,....字段N賦的值);

註意事項:
1.字段值要與字段類型相匹配。
2.對於字符類型的字段,要用雙或單引號括起來。
3.依次給所有字段賦值時,字段名可以省略。
4.只給一部分字段賦值時,必須明確寫出對應的字段名稱。

例:
1.創建庫和表結構
mysql>create database ku;
mysql>create table ku.xi(
>name char(10) not null,
>gender  enum("boy","girl") default "girl",
>age int(3) not null
>);

2.插入表記錄
mysql>insert into ku.xi(name,age) values("luozixu",23);
mysql>insert into ku.xi    values("lisi","boy",25);

3.查看表記錄
mysql>select * from   ku.xi;

update 更新記錄
格式1:(更新表內的所有記錄)
update 庫名.表名 set 字段1=字段1修改的值,字段2=字段2修改的值,...字段N=字段N修改的值;

格式2:(只更新符合條件的部分記錄)
update 庫名.表名 set 字段1=字段1修改的值,字段2=字段2修改的值,...字段N=字段N修改的值 where 條件表達式;

註意事項:
1.字段值要與字段類型相匹配。
2.對於字符類型的字段,要用雙或單引號括起來。
3.若不是用WHERE限定條件,會更新所有記錄。
4.限定條件時,只更新匹配條件的記錄。

例:
1.將ku庫xi表中的所有人的age字段設置為10。
mysql>update ku.xi  set  age=10;
mysql>select * from   ku.xi;

2.將性別為boy的人的age字段設置為20。
mysql>update  ku.xi set age=20 where gender="boy";
mysql>select * from   ku.xi;

delete 刪除表記錄
格式1:(僅刪除符合條件的記錄)
delete from 庫名.表名 where 條件表達式;

格式2:(刪除表所有的表記錄)
delete from 庫名.表名;

例:
1.刪除ku庫xi表中age字段小於10的表記錄。
mysql>delete from ku.xi  where age<=10;
mysql>select * from   ku.xi;

2.刪除表所有的表記錄
mysql>delete from  ku.xi;
mysql>select *  from   ku.xi;

多表查詢(又稱 連接查詢)
1.將2個或2個以上的表,按某個條件連接起來,從中選取需要的數據。

2.當多個表中,存在相同意義的字段(字段名可以不相同)時,可以通過該字段連接起來多個表。
格式1:select 字段名列表 from 表a,表b;
格式2:select 字段名列表 from 表a,表b where 條件;

以上格式查詢結果叫笛卡爾集,顯示查詢結果的總條目是(表a的記錄*表b的記錄數)

例:
mysql>select  *  from ku.user,ku.user2;
mysql>select  *  from ku.user,ku.user2  where  ku.user2.shell != ku.user.shell  and ku.usr.uid<100;

內連接查詢(只顯示與查詢條件匹配的記錄)
格式:select 字段名列表 from 表a,表b;

外連接查詢
1.左連接查詢(以左表記錄為主)
2.右連接查詢(以右表記錄為主)

左連接查詢
格式:select 字段名列表 from 表a left join 表b on 條件表達式;

右連接查詢
格式:select 字段名列表 from 表a right join 表b on 條件表達式;

表的復制及改名
將源表xxx復制為新表yyy
格式:create table 庫名.yyy select * from 庫名.xxx;

例:
mysql>create  table ku.yy  select  * from  mysql.user;

將指定的查詢結果復制為新表zzz
格式:create table zzz SQL查詢語句;

例:
    mysql>create  table ku.zz  select  user,host,password  from  mysql.user;

復制源表xxx的表結構到新表bbb
格式:create table 庫名.bbb select * from 庫.xxx where false(錯誤的記錄匹配);

例:
mysql>create table  ku.bb  select  * from  mysql.user  where  false;
mysql>desc ku.bb;

將源表bbb的名稱改為www
格式:alter table bbb rename to www;

例:
mysql>alter  table  ku.bb rename  to  ku.ww;

MySQL增刪改插 及表的復制及改名