插入
INSERT語句語法
從其它表中拷貝數(shù)據(jù)
? 不必書寫 VALUES 子句。
? 子查詢中的值列表應(yīng)與 INSERT 子句中的列名對(duì)應(yīng)
update語句
? 可以一次更新多條數(shù)據(jù)同辣。
? 如果需要回滾數(shù)據(jù)拷姿,需要保證在DML前,進(jìn)行 設(shè)置:
SETAUTOCOMMIT=FALSE;
因?yàn)閙ysql中默認(rèn)事務(wù)是自動(dòng)提交的旱函。
delete語句?
子查詢
概念?
出現(xiàn)在其他語句內(nèi)部的select語句响巢,稱為子查詢或內(nèi)查詢內(nèi)部嵌套其他select語句的查詢,稱為外查詢或主查詢棒妨。
selectfirst_namefromemployeeswheredepartment_id in(
selectdepartment_idfrom departments
wherelocation_id=1700)
創(chuàng)建數(shù)據(jù)庫
創(chuàng)建一個(gè)保存員工信息的數(shù)據(jù)庫?:
createdatabaseemployees;
相關(guān)其他命令
createdatabaseemployeesifnotexists;
show databases;查看當(dāng)前所有數(shù)據(jù)庫
useemployees;“使用”一個(gè)數(shù)據(jù)庫踪古,使其作為當(dāng)前數(shù)據(jù)庫
創(chuàng)建表
? 必須具備:
– CREATE TABLE權(quán)限
– 存儲(chǔ)空間
? 必須指定:
– 表名
– 列名, 數(shù)據(jù)類型, 尺寸?
語法
注:創(chuàng)建表這種更加合理
createtableifnotexiststableName...
數(shù)據(jù)類型
概述
mysql數(shù)據(jù)類型分為
數(shù)值類型
字符類型
日期類型
數(shù)值類型
整型
小數(shù)
位類型
字符類型
char和varchar類型
binary和varbinary類型
說明:類似于char和varchar,不同的是它們包含二進(jìn)制字符串而不包含非二 進(jìn)制字符串券腔。
Enum類型
說明:又稱為枚舉類型哦伏穆,要求插入的值必須屬于列表中指定的值之一。
Set類型
說明:和Enum類型類似纷纫,里面可以保存0~64個(gè)成員枕扫。和Enum類型最大的區(qū) 別是:SET類型一次可以選取多個(gè)成員,而Enum只能選一個(gè) 根據(jù)成員個(gè)數(shù)不同辱魁,存儲(chǔ)所占的字節(jié)也不同
日期類型
常用數(shù)據(jù)類型
創(chuàng)建表示例
ALTER TABLE 語句
向已有的表中添加列
修改現(xiàn)有表中的列
刪除現(xiàn)有表中的列
重命名現(xiàn)有表中的列
增加一個(gè)列?
ALTERTABLEdept80ADDjob_idvarchar(15);
修改一個(gè)列
?? 可以修改列的數(shù)據(jù)類型, 尺寸和默認(rèn)值
? 對(duì)默認(rèn)值的修改只影響今后對(duì)表的修改
刪除一個(gè)列?
重命名一個(gè)列
總結(jié):alter table 表名 add|drop|modify|change column 列名 【列類型 約束】
刪除表
數(shù)據(jù)和結(jié)構(gòu)都被刪除
所有正在運(yùn)行的相關(guān)事務(wù)被提交
所有相關(guān)索引被刪除
DROP TABLE 語句不能回滾?
注:刪除用下面這種相對(duì)更為合理
droptableifexiststableName;
清空表
? TRUNCATE TABLE 語句:
– 刪除表中所有的數(shù)據(jù)
– 釋放表的存儲(chǔ)空間?
–?TRUNCATE語句不能回滾
約束?
什么是約束?
? 為了保證數(shù)據(jù)的一致性和完整性烟瞧,SQL規(guī)范以約 束的方式對(duì)表數(shù)據(jù)進(jìn)行額外的條件限制。
? 約束是表級(jí)的強(qiáng)制規(guī)定
? 可以在創(chuàng)建表時(shí)規(guī)定約束(通過 CREATE TABLE 語句)染簇,或者在表創(chuàng)建之后也可以(通 過 ALTER TABLE 語句)?
類型?
– NOT NULL 非空約束参滴,規(guī)定某個(gè)字段不能為空
– UNIQUE 唯一約束,規(guī)定某個(gè)字段在整個(gè)表中是唯一的
– PRIMARY KEY 主鍵(非空且唯一)
– FOREIGN KEY 外鍵
– CHECK 檢查約束(mysql不支持)
– DEFAULT 默認(rèn)值?
NOT NULL 約束?
保證列值不能為空剖笙。
創(chuàng)建 not null 約束:
增加 not null 約束:
取消 not null 約束:
取消 not null 約束卵洗,增加默認(rèn)值:
UNIQUE 約束
同一個(gè)表可以有多個(gè)唯一約束,多個(gè)列組合的約束。 在創(chuàng)建唯一約束的時(shí)候,如果不給唯一約束名稱,就 默認(rèn)和列名相同替久。MySQL會(huì)給唯一約束的列上默認(rèn)創(chuàng)建一個(gè)唯一索引诲泌。
添加唯一約束?
刪除約束
PRIMARY KEY 約束
主鍵約束相當(dāng)于唯一約束+非空約束的組合,主 鍵約束列不允許重復(fù)磕谅,也不允許出現(xiàn)空值
如果是多列組合的主鍵約束,那么這些列都不允 許為空值,并且組合的值不允許重復(fù)甚亭。
每個(gè)表最多只允許一個(gè)主鍵,建立主鍵約束可以 在列級(jí)別創(chuàng)建击胜,也可以在表級(jí)別上創(chuàng)建亏狰。
MySQL的主鍵名總是PRIMARY,當(dāng)創(chuàng)建主鍵約束 時(shí)偶摔,系統(tǒng)默認(rèn)會(huì)在所在的列和列組合上建立對(duì)應(yīng)的 唯一索引暇唾。?
刪除主鍵約束?
添加主鍵約束
修改主鍵約束
FOREIGN KEY 約束
外鍵約束是保證一個(gè)或兩個(gè)表之間的參照完整性, 外鍵是構(gòu)建于一個(gè)表的兩個(gè)字段或是兩個(gè)表的兩個(gè)字 段之間的參照關(guān)系辰斋。
從表的外鍵值必須在主表中能找到或者為空策州。當(dāng)主 表的記錄被從表參照時(shí),主表的記錄將不允許刪除宫仗, 如果要?jiǎng)h除數(shù)據(jù)够挂,需要先刪除從表中依賴該記錄的數(shù) 據(jù),然后才可以刪除主表的數(shù)據(jù)藕夫。
還有一種就是級(jí)聯(lián)刪除子表數(shù)據(jù)孽糖。
注意:外鍵約束的參照列,在主表中引用的只能是 主鍵或唯一鍵約束的列
同一個(gè)表可以有多個(gè)外鍵約束?
創(chuàng)建外鍵約束:?
創(chuàng)建多列外鍵組合汁胆,必須使用表級(jí)約束:
刪除外鍵約束:
增加外鍵約束:
分頁
分頁原理
所謂分頁顯示梭姓,就是將數(shù)據(jù)庫中的結(jié)果集,一段一段顯示 出來需要的條件?
前10條記錄:
SELECT*FROMtableLIMIT0,10;
第11至20條記錄:
SELECT*FROMtableLIMIT10,10;
公式:
(當(dāng)前頁數(shù)-1)*每頁條數(shù)嫩码,每頁條數(shù)?
SELECT*FROMtableLIMIT(PageNo-1)*PageSize,PageSize;
注:limit子句必須放在整個(gè)查詢語句的最后誉尖!