Mysql 的存儲引擎
存儲引擎的類型
MySam 、innodb memory csv 等9中
Myisam與innodb類型主要區別
名稱 innodb myisam
事物處理 支持 不支持
數據行鎖定 支持 不支持
外鍵約束 支持 不支持
全文索引 不支持 支持
表空間大小 較大約2倍 較小
偏向於 增刪改 查
My Sam 類型表文件
.frm表結構定義文件
Ibdata1文件(數據庫存數據的文件)不能刪除
.frm表結構定義文件
語法
Insert init
更新數據記錄
Update表明
Set字段t=1,字段2=值2 字段n=值 n
Where條件
刪除數據記錄
Delete from 標名 wherse條件
Truncate table 表名
Truncate語句刪除後依次遞增。
查詢
Select from 表名
客戶端程序 查詢請求 查詢結果集 數據庫服務器
Select* from* 星代表查詢所有
查詢全部的行和列
Select * from* student;
字段(as,別名 ) 表名
Where 條件(is null,is not null,<>)
Group by 字段1, 字段2(按照兩個字端的組合排序)
Brder by 字段1 字段 2(先按照第一個字段進行排序,如果有相同的值,在按照第二個字段排序)
Init 開始索引 顯示幾條几錄
模糊查詢:(只能在字符串中查詢)
Select phone from student wherestudentname like’%王%’
什麼是子查詢
子查詢是一個嵌套select、insert、update或delete語句或其他子查詢中查詢。
有關DML語句的一系列操作了
(1)插入單條數據記錄語法:
INSERT INTO 表名(字段列表名)
VALUES (值列表)
我們需要注意的是,值列表跟字段名列表必須一一對應!多個列表和多個值之間使用逗號隔開
如果插入的是表中部分數據,字段名列表必須填寫!
我們來看一下具體的例子,操作還是挺簡單的:
INSERT INTO `student`(`studentNo`,`studentName`,`phone`,`bornDate`)
VALUES('01','張三',1,'13929220222','1999-11-8') ;
(2)插入多條數據記錄語法:
INSERT INTO 新的表名(字段名列表)
VALUES (值列表1),(值列表2),……,(值列表n) ;
我們也寫個例子,方便理解:
INSERT INTO `subject`(`subjectName`,`classHour`,`gradeID`)
VALUES('Logic Java',220,1),('HTML',160,1),('Java OOP',230,2);
特別要注意的是:爲了避免結構化發生變化,導致錯誤發生,建議大家最好在插入數據時寫明具體字段名!!
將查詢到的結果插入到一個新的表中,舉個例子
CREATE TABLE `phoneList`(
SELECT `studentName`,`phone`
FROM `student`) ;
當然了,這是新表不存在的情況;存在的話,就會報錯!而且不能重複創建
數據的更新
先來看一看語法結構:
UPDATE 表名
SET 字段1=值1,字段2=值2,…,字段n=值n
WHERE 後面跟的是條件 ;
咱們來看一下實例,很簡單 (首先這個表得存在吧,才能去更新;還有更新的字段在原先表中得有)
CREATE TABLE `student`(
`age`INT(4) NOT NULL COMMENT'年齡',
`name`VARCHAR(50)NOT NULL COMMENT'姓名',
`address`VARCHAR(255)DEFAULT'北京海淀區航天橋'
);
UPDATE `student` SET `address`= '航天橋'
WHERE `address`= '北京海淀區航天橋' ;
有更新數據就有刪除數據,這兒有兩種方法可以執行操作:
a) DELETE FROM 表名 WHERE +條件 ;
b) TRUNCATE TABLE 表名 ; (執行速度比上面的快)
用法:DELETE FROM student WHERE studentName = ‘王大’;
TRUNCATE TABLE student;
查詢語法:
a) 有關排序的 SELECT <可填的內容:列名|表達式|函數|常量>
FROM 表名
WHERE + 查詢條件表達式
ORDER BY 排序的列名 [ASC或DESC]; DESC指的是從高到低排序,不寫就默認是正序
例子: SELECT `studentNo`,`studentName`,`phone`,`address`,`bornDate`
FROM `student`
WHERE `gradeId` = 1
ORDER BY `studentNo` ;
b) 列別名,用AS命名列:
FROM `student`
WHERE `address` <> ' 北京海淀區 ' ;