相關概念
統一字元編碼
SQL語句
操作資料夾(庫)
增:create database db1 charset utf8;
刪: drop database db1;
改:alter database db1 charset gbk;
查:show create database db1;
show database;
操作檔案(表)
切換資料夾:use db1;
檢視當前所在資料夾:select database();
增: create table t1(id int,name char) 表明欄位
查: show create table t1;
show tables;
desc t1/describe;
改: alter table t1 modify name char(6);
alter table t1 change name NAME char(7);
刪: drop table t1;
操作檔案內容(記錄)
增:insert t1(id,name) values(1,'adam'),(2,'matthew');
insert t1 values(1,'adam'),(2,'matthew');(預設欄位順序插入)
查:select id,name from db1.t1;
select * from db1.t1;
改:update db1.t1 set name='SB'(所有欄位)
update db1.t1 set name='ALEX' where id=2;(指定欄位)
刪:delete from t1;
delete from t1 where id=2;
庫操作
儲存引擎介紹
檢視Mysql支援的儲存引擎
指定表的型別/儲存引擎
create table t1(id int) engine=innodb;
表的增刪改查
資料型別
數值型別
日期型別
字元型別
列舉型別和集合型別
完整性約束
約束條件not null 與 default
約束條件unique key
約束條件primary key
約束條件auto_increment
自增長欄位必須為key。
可以不用傳自增長欄位,也可以傳(會從上一條記錄自增長 )。
truncate會將自增長欄位索引一起刪除,不會導致重新插入值依然沿著上次的記錄增長。
約束條件之foreign key
想要直接刪除被關聯表欄位,關聯表欄位需要增加約束條件,刪除同步和更新同步。
表關係
多對一
多對多
一對一
資料操作
單表查詢
多表查詢
where約束
group by分組
having過濾
order by排序
limit限制條數
正則查詢
連表操作
執行順序
子查詢
許可權管理
Navicat使用
pymysql模組基本使用
pymysql模組之sql注入
--➕空格 會註釋後續內容
兩種攻擊注入方式
使用模組內建拼接解決
pymysql模組之增刪改查
插一行
插多行,其他操作類似
查詢一行
修改遊標為字典遊標,以字典形式返回
查詢多行
重複查詢
查詢插入的第一條記錄的自增id
MySQL內建功能介紹
檢視(虛擬表)-只有表結構,沒有表資料
觸發器
delimiter定義結束符號,防止then後面的SQL語句的分號導致提前結束
儲存過程(內建功能的總和)-有點像封裝函式
無參儲存過程
這裡沒有下劃線callproc
有參儲存過程
必須表明傳入還是傳出引數,以及型別
最後是p2_2,寫錯了
mysql示例
python示例
應用程式和資料庫結合使用
事務-一堆SQL一起執行-原子操作,要麼都成功,一個失敗都失敗
commit執行完才真正修改了表
宣告結束符號,再定義一個儲存過程,先定義兩種異常,在定義一個事務,在設定一個返回值