天天看點

php學習基礎篇之mysql DDL DML 2

知識點:

一 sql指令 DDL (結構化操作)

二 sql名  DML操作 (增 删 改 查)

一 sql指令 DDL (結構化操作)

1 表添加字段:

alter table 表名稱  add  列定義

alter table stu add email varchar(200);

2 修改字段:

alter table 表名稱 change 舊字段名稱 新字段定義

alter table stu change email stuEmail varchar(150);

3 删除字段 

alter table 表名稱 drop 字段

alter table stu drop stuEmail;

4 修改表名稱

alter table 表名 rename 新名字

alter table stu rename student;

5 删除

drop table 表名稱;

drop table student;

二 sql名  DML操作 (增 删 改 查)

1 增

insert into 表名稱(字段1,字段2,字段3,.......) values(val1,val2,val3.....);

insert into student(stuNum,stuName,stuAge,stuSex,stuTel) values("0001","zhangsan",18,"1","1311111111");

insert into student(stuNum,stuName,stuAge,stuSex,stuTel) values("0002","lisi",16,"2","1322222222");

insert into student(stuNum,stuName,stuAge,stuSex,stuTel) values("0003","王五",19,"2","133333333");

中文 會出亂碼:

set names gbk; //  指DBMS  系統字元集中文字元集  *****臨時的****

修改mysql字元集

show variables  檢視mysql系統變量的。

show variables like "%character%"; //查找 的 關于字元集的系統變量

character_set_client     | gbk

character_set_connection | gbk

character_set_database   | utf8

character_set_results    | gbk

character_set_server     | utf8

character_set_system     | utf8

set character_set_connection = utf8

2  檢視 ******

select * from 表名稱    

3  修改:

update 表名稱 set  字段=值,字段=值,....... where  id=num;

update student set stuName="趙六",stuAge=20 where id=3;

4 删除:

delete from 表名稱 where id=num

delete from student where id=3;

注意:删除記錄後,被删除的記錄的位置還在。

5  查詢:

select 字段清單 from 表名稱 [where 條件] [order by 字段 asc|desc][limit 起始位置,長度][group by 字段名稱(分組)]

1》select 字段清單 from 表名稱

查詢某些字段

select stuNum,stuName from student;

注意:可以給字段名稱 表名稱 起别名

select stuNum as stn,stuName as sn from student as sd;

起别名: 字段簡單,友善其他程式調用

查找所有字段

select * from student; 

2》 order by  排序   asc 升序   desc 降序 

select * from student order by id desc;

select * from student order by id asc;

3>limit  起始 位置,長度   截取記錄。

select * from student limit  1,3;

select * from student limit 4,4;

倒序截取記錄:

select * from  student order by id desc limit 0,4

limit 分頁:

4 >group by 分組:

select * from books group by bTypeId;  按照類型id 分組。

分組以後,每組中的記錄都會取1條。

5 》where 條件:

比較符号:  >  <  >=   = <>

select * from books  where bid=100;   字段和值 進行比較

邏輯運算:

and  or 

select * from books where bid>100 and bid<110

模糊搜尋: 字元串中 含有 某個關鍵詞,就能找到

like "%關鍵詞%"   % 表示任意字元串 

_ 1個字元

select * from books where bName like "%網%";

範圍:

連續範圍

[not]between....and

select * from books where bid between 100 and 110

bid>=100 and bid<=110  *****

不連續 範圍

[not] in()

select * from books where bid in(100,103,105,108);

bid=100 or bid=103 or bid=105 or bid=108 *****

6> 子查詢:

select  語句中  的條件 又出現了查詢語句 ,子查詢。

查詢 類型 是 “網站” 的所有圖書

select * from books where btypeid=(select btypeid from btype where btypename="網站");

主要:  後邊需求 中涉及到的表  主

從表:  前面需求涉及到的表  從表

效率低。

7> 連接配接查詢: 通過 多張表的共有字段, 查找多張表構成的并集。

 2張表以上。

  内連接配接: 共同字段相等。 兩張表的地位相等。

select * from 表1,表2  where 表1.共有字段=表2.共有字段

select * from books as bs,btype as bt where bs.btypeid=bt.btypeid

注意: 内連接配接中: 共有字段中的值,必須兩張表都有,才能找到。

外連接配接:  表分主 ,從 主表 中的資料,全部展示 ,從 有和主表對應的資料 展示,沒有對應 ,不展示

left join 

select  * from 主表 left join 從表 on 主表.共有字段=從表.共有字段 [where 其他條件];

select * from books as bs left join btype as bt on bs.btypeid=bt.btypeid;

right join

select * from 從表 right join 主表 on 主表.共有字段=從表.共有字段 [where 其他條件];

select * from btype as bt right join books as bs  on  bs.btypeid=bt.btypeid;

練習:  圖書表  類型表 用 内連接配接 外連接配接 ,都查詢一次。