MySQL

創(chuàng)建表

-- 創(chuàng)建表 
create table 表名稱1 (
字段1 字段類型 [default 值] [not null] auto_increment ,
字段2 字段類型 [default 值] [not null] ,
字段n 字段類型 [default 值] [not null]疤孕,
primary KEY (字段1)围橡,
unique(字段2),
foreign key  (字段n )  references  表名稱2(表2的主鍵)
)auto_increment =1 --從1開始自增長(zhǎng)

-- 主鍵:primary KEY 
-- 唯一:unique
-- 非空:not NULL (只能寫在列后面)
-- 檢查:check(oracle專屬)
-- 外鍵:foreign key   該表的外鍵必須是另外一張表的主鍵

復(fù)制表(備份)

復(fù)制表的結(jié)構(gòu)和數(shù)據(jù)
create table 表名稱 as select * from emp ;
只復(fù)制表的結(jié)構(gòu)
create table 表名稱 as select * from emp where 1=2;

注意:該種方法不能復(fù)制表的鍵


MySQL常用的數(shù)據(jù)類型:bit、int扬霜、bigint粘招、decimal处嫌、varchar栅贴、date 、DATETIME熏迹、longtext檐薯、set、enum


數(shù)據(jù)庫語言

DQL:數(shù)據(jù)庫查詢語言注暗,select
DML:數(shù)據(jù)庫操作語言坛缕,insert 、update友存、 delete
DDL:數(shù)據(jù)庫定義語言祷膳,alter、 create 屡立、drop等等


DQL

基本查詢:

  • select * from 表名稱 where 條件 order by 字段直晨;
  • select 字段1,字段2膨俐,勇皇。。焚刺。字段n from 表名稱敛摘;

限定查詢:

  • select 字段1,字段2乳愉,兄淫。。蔓姚。字段n from 表名稱 where 條件1 and 條件2 or 條件n捕虽;

分組查詢: 常用的分組方法count 、avg 坡脐、sum 泄私、min 、max

  • select count(字段1)备闲,字段2晌端,。恬砂。咧纠。字段n
    from 表名稱
    where 條件1 and 條件2 or 條件n
    group by 字段2,泻骤。惧盹。乳幸。字段n;

DML

插入所有數(shù)據(jù)
insert into 表名稱 values(值1钧椰,值2.。符欠。值n)嫡霞;
插入部分?jǐn)?shù)據(jù)
INSERT into zpwd SELECT * from emp;
通過子查詢插入多條數(shù)據(jù)(源表結(jié)構(gòu)必須和目標(biāo)表結(jié)構(gòu)一致)
INSERT into zpwd (empno ,ename,deptno)SELECT empno ,ename,deptno from emp;

update 表名稱 set 字段名稱 = 值 [where 條件]

delete from 表名 [where ]


DDL

drop table 表名

create table text(
id int(5) auto_increment,
name varchar(50) default '張三',
primary key(id)
)

-- 修改表 alter table
-- ①修改列的長(zhǎng)度
alter table text modify id int(10);

-- ②修改列的數(shù)據(jù)類型(前提:修改列必須全為空值和默認(rèn)值)
-- (整型轉(zhuǎn)字符串,可以直接轉(zhuǎn)希柿,沒有前提)
alter table text modify id varchar(10);

-- ③添加刪除約束
alter table text modify id varchar(10) not null;
alter table text add primary key(id);

-- ④重命名列和表
alter table text rename as text1
alter table text change id newid int(5);

-- ⑤添加或刪除列
alter table text add age int(3) default 0 not null;
alter table text drop column age;
alter table text drop column age1,drop column age2;


面試題

drop诊沪、truncate 和 delete 表名 有什么區(qū)別
drop、truncate 屬于ddl語言曾撤,后者屬于dml語言端姚,ddl語言屬于隱式提交不能row back。drop是刪除表挤悉,語句將表所占用的空間全釋放掉渐裸;truncate截?cái)啾磉\(yùn)行效率快,清除索引占用的表和數(shù)據(jù)装悲,保留結(jié)構(gòu)昏鹃;delete可以刪除表,但是保留該表的索引诀诊。


事務(wù)

概念:一組增刪改洞渤。
關(guān)鍵字:commit、rowback
navicat默認(rèn)是將所有增刪改一次一提交属瓣。
set autocommit =false; 設(shè)置不自動(dòng)提交

事務(wù)四大特性(ACID):
A(原子性):組成事務(wù)的增刪改要么全成功要么全失敗载迄。
C(一致性):一旦事務(wù)結(jié)束,數(shù)據(jù)保持一致狀態(tài)抡蛙。
I(隔離性):事務(wù)之間互不影響护昧。
D(永久性):事務(wù)一旦提交不能回滾。



注意點(diǎn):

and 和 or 的優(yōu)先級(jí):and優(yōu)先級(jí)高溜畅。
not in(無法使用null)捏卓,in(無法使用null)

select 語句執(zhí)行過程
-- 書寫順序:selelct from where group by having order by LIMIT
-- 執(zhí)行順序:from selelct where group by having order by LIMIT
-- ①where不能使用列別名
-- ②where不能使用分組函數(shù)
-- ③order by 可以使用列別名
-- ④不分組不允許單獨(dú)使用having

索引
-- 優(yōu)點(diǎn):加快查詢速度。
-- 缺點(diǎn):降低增刪改的數(shù)獨(dú)慈格。
-- 適用場(chǎng)景:在經(jīng)常被作為查詢條件的字段上建立索引怠晴。

視圖
-- 視圖是一個(gè)虛擬的表,里面沒有任何數(shù)據(jù)浴捆,只是將常使用的查詢存儲(chǔ)起來蒜田,方便重復(fù)使用。
-- 視圖也可以進(jìn)行增刪改选泻,操作的是表3逶痢C滥!
-- 創(chuàng)建視圖時(shí)加入with check option 梯捕,表示只有視圖中查到的數(shù)據(jù)才可以增刪改厢呵。

模糊查詢會(huì)遇到的問題:
-- 通配符盡量不要用在date日期類型中,因?yàn)閙ysql中可以使用傀顾,但是移植到Oracle中就失效襟铭。

分頁
select * from emp

-- where子句
-- order by
LIMIT 0,5 -- [0,5] 從索引位置開始,查詢的個(gè)數(shù)短曾。

創(chuàng)建序列

create table 表名稱1 (
字段1 字段類型 [default 值] [not null] auto_increment寒砖,
字段2 字段類型 [default 值] [not null] ,
字段n 字段類型 [default 值] [not null]嫉拐,
primary KEY (字段1)哩都,
unique(字段2),
foreign key (字段n ) references 表名稱2(表2的主鍵)
)auto_increment =1 --從1開始自增長(zhǎng)


MySQL提供的函數(shù)

-- 函數(shù)
-- 虛表 dual表
-- abs() 絕對(duì)值
select ABS(-18) from dual;

-- ROUND(X,D) D是小數(shù)點(diǎn)后精確的位數(shù)(四舍五入)
select round(115),round(115,-1),ROUND(115.4455,3) from dual;

-- TRUNCATE`(X,D)截取婉徘,不四舍五入
select TRUNCATE(115,0),TRUNCATE(115,-2),TRUNCATE(115.4455,3) from dual;

-- SUBSTR() 截取字符串,索引值從1開始截取漠嵌,[截取幾個(gè)]
select SUBSTR('hello word',6),SUBSTR('hello word',6,3) from dual;

-- length(str) 返回字符串的長(zhǎng)度

-- CONCAT(str1,str2,...) 字符串拼接,同oracle中的||

-- REPLACE(str,from_str,to_str) 替換將一個(gè)字符串中的某些字符用另外的字符替換

-- LPAD(str,len,padstr),RPAD(str,len,padstr) 左右填充

-- LTRIM(str),RTRIM(str) 左右去空格

-- 日期函數(shù)
mysql在5.6以后支持日期作為默認(rèn)值判哥。
CURDATE(),CURRENT_DATE(),CURRENT_TIME(),NOW()
select CURDATE(),CURRENT_DATE(),CURRENT_TIME(),NOW() from dual;
-- DATE_FORMAT(date,format) 格式化日期
-- %Y --年份
-- %m --月份
-- %M --月份(英文月份)
-- %d --日
-- %D --日(英文日期)
-- %h --時(shí)(12進(jìn)制)
-- %H --時(shí)(24進(jìn)制)
-- %i --分鐘
-- %s --秒

select DATE_FORMAT(NOW(),'%M-%Y-%d ') from dual;

-- DATEDIFF(expr1,expr2) 返回兩個(gè)日期相減相差多少天
select hiredate,DATEDIFF(NOW(),hiredate) from emp;

-- EXTRACT(unit FROM date) 提取時(shí)間
select hiredate,EXTRACT(year from hiredate) from emp;

-- TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2) 按照year或month或day求差

-- 流程控制函數(shù)
-- case 献雅。。塌计。when挺身。。锌仅。then
SELECT ename, sal, deptno, (
CASE deptno WHEN 10 THEN '開發(fā)部' WHEN 20 THEN '實(shí)施部'
WHEN 30 THEN '測(cè)試部' ELSE '小賣部' END ) dname
FROM emp;
--ifnull(相當(dāng)于oracle中nvl)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末章钾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子热芹,更是在濱河造成了極大的恐慌贱傀,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伊脓,死亡現(xiàn)場(chǎng)離奇詭異府寒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)报腔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門株搔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纯蛾,你說我怎么就攤上這事纤房。” “怎么了翻诉?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵炮姨,是天一觀的道長(zhǎng)捌刮。 經(jīng)常有香客問我,道長(zhǎng)舒岸,這世上最難降的妖魔是什么绅作? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蛾派,結(jié)果婚禮上棚蓄,老公的妹妹穿的比我還像新娘。我一直安慰自己碍脏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布稍算。 她就那樣靜靜地躺著典尾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪糊探。 梳的紋絲不亂的頭發(fā)上钾埂,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音科平,去河邊找鬼褥紫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛瞪慧,可吹牛的內(nèi)容都是我干的髓考。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼弃酌,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼氨菇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起妓湘,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤查蓉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后榜贴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體豌研,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年唬党,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鹃共。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡初嘹,死狀恐怖及汉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情屯烦,我是刑警寧澤坷随,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布房铭,位于F島的核電站,受9級(jí)特大地震影響温眉,放射性物質(zhì)發(fā)生泄漏缸匪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一类溢、第九天 我趴在偏房一處隱蔽的房頂上張望凌蔬。 院中可真熱鬧,春花似錦闯冷、人聲如沸砂心。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辩诞。三九已至,卻和暖如春纺涤,著一層夾襖步出監(jiān)牢的瞬間译暂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工撩炊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留外永,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓拧咳,卻偏偏與公主長(zhǎng)得像伯顶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呛踊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354