? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 數(shù)據(jù)庫
1.什么是數(shù)據(jù)庫
數(shù)據(jù)庫(Database)是按照數(shù)據(jù)結構來組織恭理、存儲和管理數(shù)據(jù)的倉庫聚至;隨著信息技術和市場的發(fā)展留荔,數(shù)據(jù)管理不再僅僅是存儲和管理數(shù)據(jù)香追,而轉變成用戶所需要的各種數(shù)據(jù)管理的方式钻哩。
2.SQL語言
DDL
1秩彤、創(chuàng)建(create)---create database、create table
2览徒、刪除(drop狈定、truncate)---drop database、drop table
3习蓬、修改(alter)--alter table
4纽什、查看--show tables(查看數(shù)據(jù)庫所有表)、desc 表名 (查看表結構)
5躲叼、重命名 --rename芦缰;截斷--truncate
DCL
1、新建用戶(create user)
2押赊、授權(grant)
3饺藤、回滾(rollback)
4、提交(commit)
5流礁、回滾事務(rollback)
DML
1涕俗、插入(insert)
2、更新(update)
3神帅、刪除(delete)
4再姑、查詢(select)
3.Scott用戶表
dept:部門表
deptno? 部門編號
dname? ?部門名稱
loc? ? 地址
emp:雇員信息表
empno? ?雇員編號
ename? 雇員名稱
job? 崗位工種
mgr? 上級|經(jīng)理人
sal? ?工資
comm? 獎金
deptno? 部門編號
salgrade 工資等級表
grade? 等級
losal? 最低
hisal? 最高
三范式
第一范式(1NF):每一列都是不可分割的原子數(shù)據(jù)項
第二范式:在1NF基礎上,非碼屬性必須完全依賴于候選碼(在1NF基礎上消除非主屬性對主碼的部分函數(shù)依賴
第三范式(3NF):在2NF的基礎上找御,任何的非主屬性不依賴于其他非主屬性 (在第二范式基礎上消除傳遞依賴)
SELECT語法
步驟: from where select order by
select distinct *|字段|表達式 as 別名 from 表表別名
SELECT * FROM 表名; à查詢某個表中所有的記錄的所有字段信息
SELECT 列名 FROM 表名; à 查詢某個表中所有的記錄的指定字段信息
SELECT 列名1,列名2 FROM 表名; à 查詢某個表中所有的記錄的字段1 字段2
SELECT distinct 列名 FROM 表名; à去除重復記錄
SELECT 表達式 FROM 表名; à查詢表達式
SELECT xxx as 別名 FROM 表名 表別名à使用別名
查詢行
where過濾行記錄條件 ,條件有
1元镀、= 、 >霎桅、 <栖疑、 >=、 <=滔驶、 !=遇革、 <>、between and
2、and 萝快、or锻霎、 not、 union揪漩、 union all旋恼、intersect 、minus
3奄容、null :is null冰更、 is not null、not is null
4昂勒、like :模糊查詢 % _ escape('單個字符')
5冬殃、in 、 exists(難點) 及子查詢m
集合
Union叁怪、Union All、Intersect深滚、Minus
Union奕谭,并集(去重) 對兩個結果集進行并集操作,不包括重復行同時進行默認規(guī)則的排序痴荐;
Union All血柳,全集(不去重) 對兩個結果集進行并集操作,包括重復行生兆,不進行排序难捌;
Intersect,交集(找出重復) 對兩個結果集進行交集操作鸦难,不包括重復行根吁,同時進行默認規(guī)則的排序;
Minus合蔽,差集(減去重復) 對兩個結果集進行差操作击敌,不包括重復行,同時進行默認規(guī)則的排序
in 與exists 與排序
in相當于使用or的多個等值拴事,定值集合 ,如果存在 子查詢沃斤,確保 類型相同、字 段數(shù)為1刃宵,如果記錄多衡瓶,效率不高,用于 一些 少量定值判斷上
? in 是把外表和內(nèi)表作hash 連接牲证,而exists是對外表作loop循環(huán)哮针,每次loop循環(huán)再對內(nèi)表進行查詢。
not exists:做NL,對子查詢先查诚撵,有個虛表缭裆,有確定值,所以就算子查詢有NULL最終也有值返回
not in:做hash寿烟,對子查詢表建立內(nèi)存數(shù)組澈驼,用外表匹配,那子查詢要是有NULL那外表沒的匹配最終無值返回筛武。
使用 ORDER BY 排序缝其,排序不是真實改變存儲結構的順序,而是獲取的集合的 順序
順序 :asc(默認)desc
多字段: 在前面字段相等時徘六,使用后面的字段排序
空排序: 降序為desc内边,注意 null 為最后