知識點:
一 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;
練習: 圖書表 類型表 用 内連接配接 外連接配接 ,都查詢一次。