數據庫基礎
創建數據庫
create 數據庫名稱;
創建表
create table if not exists mobile(ID int(10) primary key auto_increment comment '手機編號 主鍵自增',Brand varchar(50) not null comment '手機品牌 非空約束',Model varchar(50) not null comment '手機型號 非空約束',Price int(10) not null comment '手機價格 檢查約束',Count int(10) not null comment '手機庫存 檢查約束',Version varchar(50) not null comment '手機版本號 非空約束'
);
添加數據
insert into mobile values(default,"Apple","IPHone4s",4999,100,"chain");
insert into mobile values(default,"huawei","Z3L55",3999,100,"chain");
insert into mobile values(default,"Mi","小米13",2999,100,"chain");
刪除數據
delete from mobile where id = 1;
修改數據
update mobile set price = 1999 ,count = 200 where id = 2;
查詢數據
select * from mobile;
select * from mobile where id =2;
select id,brand from mobile;
常用操作
select user(); # 查詢當前用戶
select version(); # 查詢版本
select @@datadir; # 查詢安裝mysql路徑
select @@version_compile_os; # 查詢os系統
select database(); # 查詢當前數據庫
涉及函數
CONCAT(s1,s2...sn)函數作用:將多個字符串連接成一個字符串select concat(id,"-",brand) from mobile;CONCAT_WS(x, s1,s2...sn)函數作用,與concat()函數一樣,唯一的不同點是:可以一次性指定分隔符select concat_ws("-",id,brand,version) from mobile;left(s,n)函數作用:返回字符串s的前n個字符語法:left(str,length)str:需要截取的字符串length:截取多少位。注入過程中一般是1位用法:left("autumn",1) # 返回select left("autumn",1);substr()函數作用:截取字符串語法:substr(str,start,length)str:需要截取的字符串start:起始位置length:為長度,一般位1用法:substr((select database()),1,1)select substr((select database()),1,1);length()函數作用:獲取字符串的長度語法:length(str)用法:length(database())limit函數作用:輸出的條目語法:limit num start,num length用法:limit 0,1if()條件語句作用:分支選擇語句語法:if(條件表達式,true,false)用法:if(length(database())>1,sleep(5),0)sleep()函數作用:休眠語法:sleep(num)用法:sleep(5)extractvalue(XML_document, XPath_string);第一個參數:XML_document是String格式,為XML文檔對象的名稱,文中為Doc第二個參數:XPath_string (Xpath格式的字符串).作用:從目標XML中返回包含所查詢值的字符串用法:and extractvalue(null,concat(0x7e,(select version()),0x7e)) from demo;UPDATEXML (XML_document, XPath_string, new_value);第一個參數:XML_document是String格式,為XML文檔對象的名稱,文中為Doc第二個參數:XPath_string (Xpath格式的字符串)第三個參數:new_value,String格式,替換查找到的符合條件的數據作用:改變文檔中符合條件的節點的值用法:and updatexml(null,concat(0x7e,(select version()),0x7e),null);
php 函數
mysqli_multi_query()函數作用:函數執行一個或多個針對數據庫的查詢。多個查詢用分號進行分隔。語法:mysqli_multi_query(connection,query);connection 必需。規定要使用的 MySQL 連接。query 必需。規定一個或多個查詢,用分號進行分隔。用法:mysql_multi_quer()函數 與 mysqli_multi_query一致
information_schema庫講解
在MySQL數據庫中5.0以上的版本中,存放著一個叫information_schema庫,5.0以下的版本中沒有information_schema庫。
information_schema里面有很多表,其中重點是下列三個表:
columns:information_schema.clumns表,table_schema中存放著所有庫名,**table_name **中存放著所有表名,column_name存放著所有列名
tables:information_schema.tables表,table_schema中存放著所有庫名,table_name中存放著所有表名
schemata:information_schema.schemata表的schema_name列存放著所有數據庫的庫名