數據庫有兩種類型,分別是關系型數據庫與非關系型數據庫。
成都創新互聯是一家專業提供牧野企業網站建設,專注與成都網站建設、網站制作、H5場景定制、小程序制作等業務。10年已為牧野眾多企業、政府機構等服務。創新互聯專業網站制作公司優惠進行中。
1、關系數據庫
包括:MySQL、MariaDB(MySQL的代替品,英文維基百科從MySQL轉向MariaDB)、Percona Server(MySQL的代替品)、PostgreSQL、Microsoft Access、Microsoft SQL Server、Google Fusion Tables。
FileMaker、Oracle數據庫、Sybase、dBASE、Clipper、FoxPro、foshub。幾乎所有的數據庫管理系統都配備了一個開放式數據庫連接(ODBC)驅動程序,令各個數據庫之間得以互相集成。
2、非關系型數據庫(NoSQL)
包括:BigTable(Google)、Cassandra、MongoDB、CouchDB、鍵值(key-value)數據庫、Apache Cassandra(為Facebook所使用):高度可擴展、Dynamo、LevelDB(Google)。
擴展資料:
數據庫的作用
數據庫管理系統是為管理數據庫而設計的電腦軟件系統,一般具有存儲、截取、安全保障、備份等基礎功能。
數據庫管理系統可以依據它所支持的數據庫模型來作分類,例如關系式、XML;或依據所支持的計算機類型來作分類,例如服務器群集、移動電話。
或依據所用查詢語言來作分類,例如SQL、XQuery;或依據性能沖量重點來作分類,例如最大規模、最高運行速度;亦或其他的分類方式。不論使用哪種分類方式,一些DBMS能夠跨類別,例如,同時支持多種查詢語言。
參考資料來源:百度百科--數據庫
運行級就是操作系統當前正在運行的功能級別。這個級別從1到6 ,具有不同的功能。
不同的運行級定義如下
# 0 - 停機(千萬不能把initdefault 設置為0 )
# 1 - 單用戶模式 # s init s = init 1
# 2 - 多用戶,沒有 NFS
# 3 - 完全多用戶模式(標準的運行級)
# 4 - 沒有用到
# 5 - X11 多用戶圖形模式(xwindow)
# 6 - 重新啟動 (千萬不要把initdefault 設置為6 )
這些級別在/etc/inittab 文件里指定。這個文件是init 程序尋找的主要文件,最先運行的服務是放在/etc/rc.d 目錄下的文件。在大多數的Linux 發行版本中,啟動腳本都是位于 /etc/rc.d/init.d中的。這些腳本被用ln 命令連接到 /etc/rc.d/rcn.d 目錄。(這里的n 就是運行級0-6)
chkconfig 命令有五項功能:添加服務,刪除服務,列表服務,改變啟動信息以及檢查特定服務的啟動狀態。
語法為:
chkconfig --list [name]
chkconfig --add name
chkconfig --del name
chkconfig [--level levels] name
chkconfig [--level levels] name
chkconfig 沒有參數運行時,顯示用法。如果加上服務名,那么就檢查這個服務是否在當前運行級啟動。如果是,返回 true,否則返回false。 --level 選項可以指定要查看的運行級而不一定是當前運行級。
如果在服務名后面指定了on,off 或者 reset,那么 chkconfig 會改變指定服務的啟動信息。on 和 off 分別指服務在改變運行級時的啟動和停止。reset 指初始化服務信息,無論有問題的初始化腳本指定了什么。
對于 on 和 off 開關,系統默認只對運行級 3,4, 5有效,但是 reset 可以對所有運行級有效。指定 --level 選項時,可以選擇特定的運行級。
需要說明的是,對于每個運行級,只能有一個啟動腳本或者停止腳本。當切換運行級時,init 不會重新啟動已經啟動的服務,也不會再次去停止已經停止的服務。
選項介紹:
--level levels
指定運行級,由數字 0 到 7 構成的字符串,如:
--level 35 表示指定運行級3 和5。
要在運行級別3、4、5中停運 nfs 服務,使用下面的命令:chkconfig --level 345 nfs off
--add name
這個選項增加一項新的服務,chkconfig 確保每個運行級有一項 啟動(S) 或者 殺死(K) 入口。如有缺少,則會從缺省的init 腳本自動建立。
--del name
用來刪除服務,并把相關符號連接從 /etc/rc[0-6].d 刪除。
--list name
列表,如果指定了name 那么只是顯示指定的服務名,否則,列出全部服務在不同運行級的狀態。
運行級文件
每個被chkconfig 管理的服務需要在對應的init.d 下的腳本加上兩行或者更多行的注釋。
第一行告訴 chkconfig 缺省啟動的運行級以及啟動和停止的優先級。如果某服務缺省不在任何運行級啟動,那么使用 - 代替運行級。
第二行對服務進行描述,可以用 跨行注釋。
例如,random.init 包含三行:
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for
# higher quality random number generation.
表明 random 腳本應該在運行級 2, 3, 4, 5 啟動,啟動優先權為20,停止優先權為 80。
好了,介紹就到這里了,去看看自己目錄下的/etc/rc.d/init.d 下的腳本吧。
設置自啟動服務:chkconfig --level 345 nfs on
配置啟動項方法
命令行模式
#service servicename status是當前狀態
#chkconfig --list servicename是查看啟動狀態,也就是是否開機自動啟動
#chkconfig --list 列出所有開機啟動項#chkconfig --level 345 xx off 把不想啟動的項345級別設置為off(關閉)(服務名xx)
界面模式終端中直接輸入#ntsysv
Linux啟動項說明
apmd--apmd用來監視系統用電狀態,并將相關信息通過syslogd寫入日志。也可以用來在電源不足時關機
arpwatch--用來維護以太網物理地址和ip地址的對應關系
atd--運行用戶用at命令調度的任務。也在系統負荷比較低時運行批處理任務
autofs--當您需要時自動轉載文件系統,而當您不需要時自動卸載
chargen--tcp版本的chargen server
chargen-udp--udp版本的chargen server
crond--周期地運行用戶調度的任務。比起傳統的unix版本添加了不少屬性,而且更安全,配置更簡單
daytime--tcp版本的daytime server
daytime-udp--udp版本的daytime server
echo--tcp版本的echo server
echo-udp--udp版本的echo server
eklogin--接受rlogin會話鑒證和用kerberos5加密的一種服務
finger--用于應答finger請求的服務
gpm--為文本模式下的linux程序提供了鼠標的支持。它也支持控制臺鼠標的拷貝,粘帖操作以及彈出式菜單 (必須)
gssftp--接受可被kerberos5驗證的ftp連接
httpd--http是著名的www服務器,可用來提供html文件以及cgi動態內容服務
identd--提供驗證身份的方法
ipchains--ipchains包過濾防火墻
iptables--iptables包過濾防火墻
ipvsadm--調用ipvsadm來建立和維護ipvs路由選擇表
isdn--啟用isdn(綜合服務數字網)服務
kadmin--更改在主控kdc中使用本機的kadmin工具,或透過kadmin服務來完成
kdcrotate--設置配置文件/etc/krb5.con中的kdcs表項
keytable--該程序的功能是轉載您在/etc/sysconfig/keyboards里說明的鍵盤映射表
klogin--接受bsd方式的rlogin會話,但需要使用kerbeos5驗證
kprop--是否允許kdc接收來的master kdc的升級
krb5-telnet--允許普通的telnet登陸,但也可使用kerberos5驗證
krb524--是以改變kerberos5到kerberosIV的賃證
krb5kdc--開啟kerberosIV和5所需的連接以獲得賃證
kshell--接受rshell命令鑒證和用kerberos加密的服務
kudzu--運行硬件檢測,并可選擇性地設置硬件變化
lpd--lpd是系統打印守護程序,負責將lpr等程序提交給打印作業
netfs--負責裝載/卸載nfs、samba、ncp文件系統
network--激活/關閉啟動時的各個網絡接口 (必須)
nfs--nfs是一個流行的基于tcp/ip網絡的文件共享協議.該服務提供了nfs文件共享服務
nfslock--提供nfs文件上鎖功能
nscd--該服務負責密碼和組的查詢,并且緩沖查詢結果
portmap--portmap用來支持rpc連接,rpc被用于nfs以及nis等服務
postgresql--postgresql關系數據庫引擎
random--保存和恢復系統的高質量隨機數生成器,這些隨機數是系統一些隨機行為提供的
rlogin--rlogin程序服務,提供來自遠程信任主機的注冊功能
routed--該守護程序支持rip協議的自動ip路由表維護.rip主要使用在小型網絡上,大一點的網絡就需要復雜一點的協議
rsh--提供rcmd程序或者rsh程序的服務
rstatd--rstat協議允許網絡上的用戶獲得同一網絡上各機器的性能參數
rsync--對ftp服務的一個很好的附加,允許循環碼求和校驗等
rusersd--該服務使網絡用戶可以定位同一網絡上的其他用戶
rwalld--rwall協議允許遠程用戶向在同一系統中活躍著的終端發送消息,類似wall的本地行為
rwhod--允許遠程用戶獲得運行rwho精靈的機器上所有已登錄用戶的列表,與finger類似
smb--啟動和關閉smbd和nmbd精靈程序以提供smb網絡服務
snortd--一個輕量級的網絡入侵檢測工具
swat--samba網絡配置工具,可以通過流覽器的901端口連接使用swat
syslog--syslog是操作系統提供一種機制,守護程序通常使用這些機制將各種信息寫到各個系統日志文件 (必須)
telnet--提供telnet服務,使用未加密的用戶/密碼組進行驗證
time--tcp版本的rfc 868 time server
time-udp--udp版本的rfc 868 time server
webmin--webmin是基于web的集系統管理與網絡管理于一身的強大管理工具
xfs--在引導和關閉時啟動和停上x字體服務,并可能重新生成字體表 (必須)
xinetd--因特網操作服務程序。提供類似于inetd+tcp_wrapper的功能,但是更加強大和安全,監控網絡對各種它管理的服務的需求,并在要的時候啟動相應的服務程序
ypbind--實現網絡信息服務的服務器端
redhat 下常用服務介紹
anacron 不考慮系統downtime期間的cron服務
amd 自動安裝NFS守候進程
apmd 高級電源管理
arpwatch 記錄日志并構建一個在LAN接口上看到的以太網地址和IP地址對數據庫
atd 用于at和batch的服務
autofs 自動安裝管理進程automount,與NFS相關,依賴于NIS
crond 為Linux下自動安排的進程提供運行服務.
Gpm 提供字符模式下對鼠標的支持.
Keytable 用于裝載鍵盤鏡像
Kudzu 硬件探測器
Netfs 安裝和卸載NFS、SAMBA和NETWARE網絡文件系統
Network 激活已配置網絡接口的腳本程序
Nfslock NFS鎖定
Pcmcia 安裝pcmcia卡(一般用于筆記本電腦)
Sshd OpenSSH服務器
Syslog 一個讓系統引導時啟動syslog和klogd系統日志守候里程的腳本
Xfs Xwindow字型服務器,為本地和遠程X服務器提供字型集
Xinetd 支持多種網絡服務的核心守候程序。
SELECT COUNT(*)
FROM (SELECT 分組字段 FROM 表
GROUP BY 分組字段
)別名
或者
SELECT COUNT(*)
FROM (SELECT distinct 分組字段 FROM 表)別名
擴展資料:
SQL分組查詢
在SQL Server中使用的分組查詢是ORDER BY子句,使用ORDER BY子句要同聚合函數配合使用才能完成分組查詢,在SELECT查詢的字段中如果字段沒有使用聚合函數就必須出現在ORDER BY子句中(即SELECT后邊的字段名要么出現在聚合函數中,要么在ORDER BY子句中使用)
在分組查詢中還可以配合使用HAVING子句,定義查詢條件。
使用group by進行分組查詢
在使用group by關鍵字時,在select列表中可以指定的項目是有限制的,select語句中僅許以下幾項:
1、被分組的列
2、為每個分組返回一個值得表達式,例如用一個列名作為參數的聚合函數
3、group by 有一個原則,就是 select 后面的所有列中,沒有使用聚合函數的列,必須出現在 group by 后面
運行級就是操作系統當前正在運行的功能級別。這個級別從1到6,具有不同的功能。不同的運行級定義如下#0-停機(千萬不能把initdefault設置為0)#1-單用戶模式#sinits=init1#2-多用戶,沒有NFS#3-完全多用戶模式(標準的運行級)#4-沒有用到#5-X11多用戶圖形模式(xwindow)#6-重新啟動(千萬不要把initdefault設置為6)這些級別在/etc/inittab文件里指定。這個文件是init程序尋找的主要文件,最先運行的服務是放在/etc/rc.d目錄下的文件。在大多數的Linux發行版本中,啟動腳本都是位于/etc/rc.d/init.d中的。這些腳本被用ln命令連接到/etc/rc.d/rcn.d目錄。(這里的n就是運行級0-6)chkconfig命令有五項功能:添加服務,刪除服務,列表服務,改變啟動信息以及檢查特定服務的啟動狀態。語法為:chkconfig--list[name]chkconfig--addnamechkconfig--delnamechkconfig[--levellevels]namechkconfig[--levellevels]namechkconfig沒有參數運行時,顯示用法。如果加上服務名,那么就檢查這個服務是否在當前運行級啟動。如果是,返回true,否則返回false。--level選項可以指定要查看的運行級而不一定是當前運行級。如果在服務名后面指定了on,off或者reset,那么chkconfig會改變指定服務的啟動信息。on和off分別指服務在改變運行級時的啟動和停止。reset指初始化服務信息,無論有問題的初始化腳本指定了什么。對于on和off開關,系統默認只對運行級3,4,5有效,但是reset可以對所有運行級有效。指定--level選項時,可以選擇特定的運行級。需要說明的是,對于每個運行級,只能有一個啟動腳本或者停止腳本。當切換運行級時,init不會重新啟動已經啟動的服務,也不會再次去停止已經停止的服務。選項介紹:--levellevels指定運行級,由數字0到7構成的字符串,如:--level35表示指定運行級3和5。要在運行級別3、4、5中停運nfs服務,使用下面的命令:chkconfig--level345nfsoff--addname這個選項增加一項新的服務,chkconfig確保每個運行級有一項啟動(S)或者殺死(K)入口。如有缺少,則會從缺省的init腳本自動建立。--delname用來刪除服務,并把相關符號連接從/etc/rc[0-6].d刪除。--listname列表,如果指定了name那么只是顯示指定的服務名,否則,列出全部服務在不同運行級的狀態。運行級文件每個被chkconfig管理的服務需要在對應的init.d下的腳本加上兩行或者行的注釋。第一行告訴chkconfig缺省啟動的運行級以及啟動和停止的優先級。如果某服務缺省不在任何運行級啟動,那么使用-代替運行級。第二行對服務進行描述,可以用跨行注釋。例如,random.init包含三行:#chkconfig:23452080#description:Savesandrestoressystementropypoolfor#higherqualityrandomnumbergeneration.表明random腳本應該在運行級2,3,4,5啟動,啟動優先權為20,停止優先權為80。好了,介紹就到這里了,去看看自己目錄下的/etc/rc.d/init.d下的腳本吧。設置自啟動服務:chkconfig--level345nfson配置啟動項方法命令行模式#serviceservicenamestatus是當前狀態#chkconfig--listservicename是查看啟動狀態,也就是是否開機自動啟動#chkconfig--list列出所有開機啟動項#chkconfig--level345xxoff把不想啟動的項345級別設置為off(關閉)(服務名xx)界面模式終端中直接輸入#ntsysvLinux啟動項說明apmd--apmd用來監視系統用電狀態,并將相關信息通過syslogd寫入日志。也可以用來在電源不足時關機arpwatch--用來維護以太網物理地址和ip地址的對應關系atd--運行用戶用at命令調度的任務。也在系統負荷比較低時運行批處理任務autofs--當您需要時自動轉載文件系統,而當您不需要時自動卸載chargen--tcp版本的chargenserverchargen-udp--udp版本的chargenservercrond--周期地運行用戶調度的任務。比起傳統的unix版本添加了不少屬性,而且更安全,配置更簡單daytime--tcp版本的daytimeserverdaytime-udp--udp版本的daytimeserverecho--tcp版本的echoserverecho-udp--udp版本的echoservereklogin--接受rlogin會話鑒證和用kerberos5加密的一種服務finger--用于應答finger請求的服務gpm--為文本模式下的linux程序提供了鼠標的支持。它也支持控制臺鼠標的拷貝,粘帖操作以及彈出式菜單(必須)gssftp--接受可被kerberos5驗證的ftp連接httpd--http是著名的www服務器,可用來提供html文件以及cgi動態內容服務identd--提供驗證身份的方法ipchains--ipchains包過濾防火墻iptables--iptables包過濾防火墻ipvsadm--調用ipvsadm來建立和維護ipvs路由選擇表isdn--啟用isdn(綜合服務數字網)服務kadmin--更改在主控kdc中使用本機的kadmin工具,或透過kadmin服務來完成kdcrotate--設置配置文件/etc/krb5.con中的kdcs表項keytable--該程序的功能是轉載您在/etc/sysconfig/keyboards里說明的鍵盤映射表klogin--接受bsd方式的rlogin會話,但需要使用kerbeos5驗證kprop--是否允許kdc接收來的masterkdc的升級krb5-telnet--允許普通的telnet登陸,但也可使用kerberos5驗證krb524--是以改變kerberos5到kerberosIV的賃證krb5kdc--開啟kerberosIV和5所需的連接以獲得賃證kshell--接受rshell命令鑒證和用kerberos加密的服務kudzu--運行硬件檢測,并可選擇性地設置硬件變化lpd--lpd是系統打印守護程序,負責將lpr等程序提交給打印作業netfs--負責裝載/卸載nfs、samba、ncp文件系統network--激活/關閉啟動時的各個網絡接口(必須)nfs--nfs是一個流行的基于tcp/ip網絡的文件共享協議.該服務提供了nfs文件共享服務nfslock--提供nfs文件上鎖功能nscd--該服務負責密碼和組的查詢,并且緩沖查詢結果portmap--portmap用來支持rpc連接,rpc被用于nfs以及nis等服務postgresql--postgresql關系數據庫引擎random--保存和恢復系統的高質量隨機數生成器,這些隨機數是系統一些隨機行為提供的rlogin--rlogin程序服務,提供來自遠程信任主機的注冊功能routed--該守護程序支持rip協議的自動ip路由表維護.rip主要使用在小型網絡上,大一點的網絡就需要復雜一點的協議rsh--提供rcmd程序或者rsh程序的服務rstatd--rstat協議允許網絡上的用戶獲得同一網絡上各機器的性能參數rsync--對ftp服務的一個很好的附加,允許循環碼求和校驗等rusersd--該服務使網絡用戶可以定位同一網絡上的其他用戶rwalld--rwall協議允許遠程用戶向在同一系統中活躍著的終端發送消息,類似wall的本地行為rwhod--允許遠程用戶獲得運行rwho精靈的機器上所有已登錄用戶的列表,與finger類似smb--啟動和關閉smbd和nmbd精靈程序以提供smb網絡服務snortd--一個輕量級的網絡入侵檢測工具swat--samba網絡配置工具,可以通過流覽器的901端口連接使用swatsyslog--syslog是操作系統提供一種機制,守護程序通常使用這些機制將各種信息寫到各個系統日志文件(必須)telnet--提供telnet服務,使用未加密的用戶/密碼組進行驗證time--tcp版本的rfc868timeservertime-udp--udp版本的rfc868timeserverwebmin--webmin是基于web的集系統管理與網絡管理于一身的強大管理工具xfs--在引導和關閉時啟動和停上x字體服務,并可能重新生成字體表(必須)xinetd--因特網操作服務程序。提供類似于inetd+tcp_wrapper的功能,但是更加強大和安全,監控網絡對各種它管理的服務的需求,并在要的時候啟動相應的服務程序ypbind--實現網絡信息服務的服務器端redhat下常用服務介紹anacron不考慮系統downtime期間的cron服務amd自動安裝NFS守候進程apmd高級電源管理arpwatch記錄日志并構建一個在LAN接口上看到的以太網地址和IP地址對數據庫atd用于at和batch的服務autofs自動安裝管理進程automount,與NFS相關,依賴于NIScrond為Linux下自動安排的進程提供運行服務.Gpm提供字符模式下對鼠標的支持.Keytable用于裝載鍵盤鏡像Kudzu硬件探測器Netfs安裝和卸載NFS、SAMBA和NETWARE網絡文件系統Network激活已配置網絡接口的腳本程序NfslockNFS鎖定Pcmcia安裝pcmcia卡(一般用于筆記本電腦)SshdOpenSSH服務器Syslog一個讓系統引導時啟動syslog和klogd系統日志守候里程的腳本XfsXwindow字型服務器,為本地和遠程X服務器提供字型集Xinetd支持多種網絡服務的核心守候程序。
下面的資料是在百度找的,樓主有空可以看看。
我是做it的,跟你說說我的感受吧,僅供參考。
數據庫是為了數據的存儲和操作方便才使用的。如果不用也可以,有的時候,
把數據記錄在文件上(如txt)也是可以的,但大量數據操作起來比較麻煩。
現在數據庫類型多,大型小型都有,所以能用的話,還是比較方便的。
定義1
當人們從不同的角度來描述這一概念時就有不同的定義(當然是描述性的)。例如,稱數據庫是一個“記錄保存系統”(該定義強調了數據庫是若干記錄的集合)。又如稱數據庫是“人們為解決特定的任務,以一定的組織方式存儲在一起的相關的數據的集合”(該定義側重于數據的組織)。更有甚者稱數據庫是“一個數據倉庫”。當然,這種說法雖然形象,但并不嚴謹。
嚴格地說,數據庫是“按照數據結構來組織、存儲和管理數據的倉庫”。在經濟管理的日常工作中,常常需要把某些相關的數據放進這樣“倉庫”,并根據管理的需要進行相應的處理。例如,企業或事業單位的人事部門常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,這張表就可以看成是一個數據庫。有了這個"數據倉庫"我們就可以根據需要隨時查詢某職工的基本情況,也可以查詢工資在某個范圍內的職工人數等等。這些工作如果都能在計算機上自動進行,那我們的人事管理就可以達到極高的水平。此外,在財務管理、倉庫管理、生產管理中也需要建立眾多的這種"數據庫",使其可以利用計算機實現財務、倉庫、生產的自動化管理。
J.Martin給數據庫下了一個比較完整的定義:數據庫是存儲在一起的相關數據的集合,這些數據是結構化的,無有害的或不必要的冗余,并為多種應用服務;數據的存儲獨立于使用它的程序;對數據庫插入新數據,修改和檢索原有數據均能按一種公用的和可控制的方式進行。當某個系統中存在結構上完全分開的若干個數據庫時,則該系統包含一個“數據庫集合”。
定義2
數據庫是依照某種數據模型組織起來并存放二級存儲器中的數據集合。這種數據集合具有如下特點:盡可能不重復,以最優方式為某個特定組織的多種應用服務,其數據結構獨立于使用它的應用程序,對數據的增、刪、改和檢索由統一軟件進行管理和控制。從發展的歷史看,數據庫是數據管理的高級階段,它是由文件管理系統發展起來的。
[編輯本段]數據庫的基本結構
數據庫的基本結構分三個層次,反映了觀察數據庫的三種不同角度。
(1)物理數據層。
它是數據庫的最內層,是物理存貯設備上實際存儲的數據的集合。這些數據是原始數據,是用戶加工的對象,由內部模式描述的指令操作處理的位串、字符和字組成。
(2)概念數據層。
它是數據庫的中間一層,是數據庫的整體邏輯表示。指出了每個數據的邏輯定義及數據間的邏輯聯系,是存貯記錄的集合。它所涉及的是數據庫所有對象的邏輯關系,而不是它們的物理情況,是數據庫管理員概念下的數據庫。
(3)邏輯數據層。
它是用戶所看到和使用的數據庫,表示了一個或一些特定用戶使用的數據集合,即邏輯記錄的集合。
數據庫不同層次之間的聯系是通過映射進行轉換的。
[編輯本段]數據庫的主要特點
(1)實現數據共享。
數據共享包含所有用戶可同時存取數據庫中的數據,也包括用戶可以用各種方式通過接口使用數據庫,并提供數據共享。
(2)減少數據的冗余度。
同文件系統相比,由于數據庫實現了數據共享,從而避免了用戶各自建立應用文件。減少了大量重復數據,減少了數據冗余,維護了數據的一致性。
(3)數據的獨立性。
數據的獨立性包括數據庫中數據庫的邏輯結構和應用程序相互獨立,也包括數據物理結構的變化不影響數據的邏輯結構。
(4)數據實現集中控制。
文件管理方式中,數據處于一種分散的狀態,不同的用戶或同一用戶在不同處理中其文件之間毫無關系。利用數據庫可對數據進行集中控制和管理,并通過數據模型表示各種數據的組織以及數據間的聯系。
(5)數據一致性和可維護性,以確保數據的安全性和可靠性。
主要包括:①安全性控制:以防止數據丟失、錯誤更新和越權使用;②完整性控制:保證數據的正確性、有效性和相容性;③并發控制:使在同一時間周期內,允許對數據實現多路存取,又能防止用戶之間的不正常交互作用;④故障的發現和恢復:由數據庫管理系統提供一套方法,可及時發現故障和修復故障,從而防止數據被破壞
[編輯本段]數據庫發展階段
數據庫發展階段大致劃分為如下幾個階段:
人工管理階段;
文件系統階段;
數據庫系統階段;
高級數據庫階段。
[編輯本段]數據庫結構與數據庫種類
數據庫通常分為層次式數據庫、網絡式數據庫和關系式數據庫三種。而不同的數據庫是按不同的數據結構來聯系和組織的。
1.數據結構模型
(1)數據結構
所謂數據結構是指數據的組織形式或數據之間的聯系。如果用D表示數據,用R表示數據對象之間存在的關系集合,則將DS=(D,R)稱為數據結構。例如,設有一個電話號碼簿,它記錄了n個人的名字和相應的電話號碼。為了方便地查找某人的電話號碼,將人名和號碼按字典順序排列,并在名字的后面跟隨著對應的電話號碼。這樣,若要查找某人的電話號碼(假定他的名字的第一個字母是Y),那么只須查找以Y開頭的那些名字就可以了。該例中,數據的集合D就是人名和電話號碼,它們之間的聯系R就是按字典順序的排列,其相應的數據結構就是DS=(D,R),即一個數組。(2)數據結構種類
數據結構又分為數據的邏輯結構和數據的物理結構。數據的邏輯結構是從邏輯的角度(即數據間的聯系和組織方式)來觀察數據,分析數據,與數據的存儲位置無關。數據的物理結構是指數據在計算機中存放的結構,即數據的邏輯結構在計算機中的實現形式,所以物理結構也被稱為存儲結構。這里只研究數據的邏輯結構,并將反映和實現數據聯系的方法稱為數據模型。
目前,比較流行的數據模型有三種,即按圖論理論建立的層次結構模型和網狀結構模型以及按關系理論建立的關系結構模型。
2.層次、網狀和關系數據庫系統
(1)層次結構模型
層次結構模型實質上是一種有根結點的定向有序樹(在數學中"樹"被定義為一個無回的連通圖)。例如圖20.6.4是一個高等學校的組織結構圖。這個組織結構圖像一棵樹,校部就是樹根(稱為根結點),各系、專業、教師、學生等為枝點(稱為結點),樹根與枝點之間的聯系稱為邊,樹根與邊之比為1:N,即樹根只有一個,樹枝有N個。
按照層次模型建立的數據庫系統稱為層次模型數據庫系統。IMS(Information Manage-mentSystem)是其典型代表。
(2)網狀結構模型
按照網狀數據結構建立的數據庫系統稱為網狀數據庫系統,其典型代表是DBTG(Data Base Task Group)。用數學方法可將網狀數據結構轉化為層次數據結構。
(3)關系結構模型
關系式數據結構把一些復雜的數據結構歸結為簡單的二元關系(即二維表格形式)。例如某單位的職工關系就是一個二元關系。
由關系數據結構組成的數據庫系統被稱為關系數據庫系統。
在關系數據庫中,對數據的操作幾乎全部建立在一個或多個關系表格上,通過對這些關系表格的分類、合并、連接或選取等運算來實現數據的管理。dBASEII就是這類數據庫管理系統的典型代表。對于一個實際的應用問題(如人事管理問題),有時需要多個關系才能實現。用dBASEII建立起來的一個關系稱為一個數據庫(或稱數據庫文件),而把對應多個關系建立起來的多個數據庫稱為數據庫系統。dBASEII的另一個重要功能是通過建立命令文件來實現對數據庫的使用和管理,對于一個數據庫系統相應的命令序列文件,稱為該數據庫的應用系統。因此,可以概括地說,一個關系稱為一個數據庫,若干個數據庫可以構成一個數據庫系統。數據庫系統可以派生出各種不同類型的輔助文件和建立它的應用系統。
[編輯本段]常用數據庫
1. IBM 的DB2
作為關系數據庫領域的開拓者和領航人,IBM在1997年完成了System R系統的原型,1980年開始提供集成的數據庫服務器—— System/38,隨后是SQL/DSforVSE和VM,其初始版本與SystemR研究原型密切相關。DB2 forMVSV1 在1983年推出。該版本的目標是提供這一新方案所承諾的簡單性,數據不相關性和用戶生產率。1988年DB2 for MVS 提供了強大的在線事務處理(OLTP)支持,1989 年和1993 年分別以遠程工作單元和分布式工作單元實現了分布式數據庫支持。最近推出的DB2 Universal Database 6.1則是通用數據庫的典范,是第一個具備網上功能的多媒體關系數據庫管理系統,支持包括Linux在內的一系列平臺。
2. Oracle
Oracle 前身叫SDL,由Larry Ellison 和另兩個編程人員在1977創辦,他們開發了自己的拳頭產品,在市場上大量銷售,1979 年,Oracle公司引入了第一個商用SQL 關系數據庫管理系統。Oracle公司是最早開發關系數據庫的廠商之一,其產品支持最廣泛的操作系統平臺。目前Oracle關系數據庫產品的市場占有率名列前茅。
3. Informix
Informix在1980年成立,目的是為Unix等開放操作系統提供專業的關系型數據庫產品。公司的名稱Informix便是取自Information 和Unix的結合。Informix第一個真正支持SQL語言的關系數據庫產品是Informix SE(StandardEngine)。InformixSE是在當時的微機Unix環境下主要的數據庫產品。它也是第一個被移植到Linux上的商業數據庫產品。
4. Sybase
Sybase公司成立于1984年,公司名稱“Sybase”取自“system”和“database” 相結合的含義。Sybase公司的創始人之一Bob Epstein 是Ingres 大學版(與System/R同時期的關系數據庫模型產品)的主要設計人員。公司的第一個關系數據庫產品是1987年5月推出的Sybase SQLServer1.0。Sybase首先提出Client/Server 數據庫體系結構的思想,并率先在Sybase SQLServer 中實現。
5. SQL Server
1987 年,微軟和IBM合作開發完成OS/2,IBM 在其銷售的OS/2 ExtendedEdition 系統中綁定了OS/2Database Manager,而微軟產品線中尚缺少數據庫產品。為此,微軟將目光投向Sybase,同Sybase 簽訂了合作協議,使用Sybase的技術開發基于OS/2平臺的關系型數據庫。1989年,微軟發布了SQL Server 1.0 版。
6. PostgreSQL
PostgreSQL 是一種特性非常齊全的自由軟件的對象——關系性數據庫管理系統(ORDBMS),它的很多特性是當今許多商業數據庫的前身。PostgreSQL最早開始于BSD的Ingres項目。PostgreSQL 的特性覆蓋了SQL-2/SQL-92和SQL-3。首先,它包括了可以說是目前世界上最豐富的數據類型的支持;其次,目前PostgreSQL 是唯一支持事務、子查詢、多版本并行控制系統、數據完整性檢查等特性的唯一的一種自由軟件的數據庫管理系統.
7.mySQL
mySQL是一個小型關系型數據庫管理系統,開發者為瑞典MySQL AB公司。在2008年1月16號被Sun公司收購。目前MySQL被廣泛地應用在Internet上的中小型網站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站數據庫。MySQL的官方網站的網址是:
[編輯本段]數據庫發展史
數據庫技術從誕生到現在,在不到半個世紀的時間里,形成了堅實的理論基礎、成熟的商業產品和廣泛的應用領域,吸引越來越多的研究者加入。數據庫的誕生和發展給計算機信息管理帶來了一場巨大的革命。三十多年來,國內外已經開發建設了成千上萬個數據庫,它已成為企業、部門乃至個人日常工作、生產和生活的基礎設施。同時,隨著應用的擴展與深入,數據庫的數量和規模越來越大,數據庫的研究領域也已經大大地拓廣和深化了。30年間數據庫領域獲得了三次計算機圖靈(C.W. Bachman,E.F.Codd, J.Gray),更加充分地說明了數據庫是一個充滿活力和創新精神的領域。就讓我們沿著歷史的軌跡,追溯一下數據庫的發展歷程。
一、數據庫發展簡史
1. 數據管理的誕生
數據庫的歷史可以追溯到五十年前,那時的數據管理非常簡單。通過大量的分類、比較和表格繪制的機器運行數百萬穿孔卡片來進行數據的處理,其運行結果在紙上打印出來或者制成新的穿孔卡片。而數據管理就是對所有這些穿孔卡片進行物理的儲存和處理。然而,1 9 5 1 年雷明頓蘭德公司(Remington Rand Inc.)的一種叫做Univac I 的計算機推出了一種一秒鐘可以輸入數百條記錄的磁帶驅動器,從而引發了數據管理的革命。1956 年IBM生產出第一個磁盤驅動器—— the Model 305 RAMAC。此驅動器有50 個盤片,每個盤片直徑是2 英尺,可以儲存5MB的數據。使用磁盤最大的好處是可以隨機地存取數據,而穿孔卡片和磁帶只能順序存取數據。
1951: Univac系統使用磁帶和穿孔卡片作為數據存儲。
數據庫系統的萌芽出現于60 年代。當時計算機開始廣泛地應用于數據管理,對數據的共享提出了越來越高的要求。傳統的文件系統已經不能滿足人們的需要。能夠統一管理和共享數據的數據庫管理系統(DBMS)應運而生。數據模型是數據庫系統的核心和基礎,各種DBMS 軟件都是基于某種數據模型的。所以通常也按照數據模型的特點將傳統數據庫系統分成網狀數據庫、層次數據庫和關系數據庫三類。
最早出現的是網狀 DBMS,是美國通用電氣公司Bachman等人在1961年開發成功的IDS(Integrated DataStore)。1961年通用電氣公司(General ElectricCo.)的Charles Bachman 成功地開發出世界上第一個網狀DBMS也是第一個數據庫管理系統—— 集成數據存儲(Integrated DataStore IDS),奠定了網狀數據庫的基礎,并在當時得到了廣泛的發行和應用。IDS 具有數據模式和日志的特征。但它只能在GE主機上運行,并且數據庫只有一個文件,數據庫所有的表必須通過手工編碼來生成。之后,通用電氣公司一個客戶——BF Goodrich Chemical 公司最終不得不重寫了整個系統。并將重寫后的系統命名為集成數據管理系統(IDMS)。
網狀數據庫模型對于層次和非層次結構的事物都能比較自然的模擬,在關系數據庫出現之前網狀DBMS要比層次DBMS用得普遍。在數據庫發展史上,網狀數據庫占有重要地位。
層次型DBMS是緊隨網絡型數據庫而出現的。最著名最典型的層次數據庫系統是IBM 公司在1968 年開發的IMS
(Information Management System),一種適合其主機的層次數據庫。這是IBM公司研制的最早的大型數據庫系統程序產品。從60 年代末產生起,如今已經發展到IMSV6,提供群集、N路數據共享、消息隊列共享等先進特性的支持。這個具有3 0 年歷史的數據庫產品在如今的WWW應用連接、商務智能應用中扮演著新的角色。
1973 年Cullinane 公司(也就是后來的Cullinet軟件公司),開始出售Goodrich 公司的IDMS 改進版本,并且逐漸成為當時世界上最大的軟件公司。
2. 關系數據庫的由來
網狀數據庫和層次數據庫已經很好地解決了數據的集中和共享問題,但是在數據獨立性和抽象級別上仍有很大欠缺。用戶在對這兩種數據庫進行存取時,仍然需要明確數據的存儲結構,指出存取路徑。而后來出現的關系數據庫較好地解決了這些問題。
1970年,IBM的研究員E.F.Codd博士在刊物《Communication of the ACM》上發表了一篇名為“A Relational Model of Data for Large Shared Data Banks”的論文,提出了關系模型的概念,奠定了關系模型的理論基礎。盡管之前在1968年Childs已經提出了面向集合的模型,然而這篇論文被普遍認為是數據庫系統歷史上具有劃時代意義的里程碑。Codd的心愿是為數據庫建立一個優美的數據模型。后來Codd又陸續發表多篇文章,論述了范式理論和衡量關系系統的12條標準,用數學理論奠定了關系數據庫的基礎。關系模型有嚴格的數學基礎,抽象級別比較高,而且簡單清晰,便于理解和使用。但是當時也有人認為關系模型是理想化的數據模型,用來實現 DBMS是不現實的,尤其擔心關系數據庫的性能難以接受,更有人視其為當時正在進行中的網狀數據庫規范化工作的嚴重威脅。為了促進對問題的理解,1974 年ACM牽頭組織了一次研討會,會上開展了一場分別以Codd和Bachman為首的支持和反對關系數據庫兩派之間的辯論。這次著名的辯論推動了關系數據庫的發展,使其最終成為現代數據庫產品的主流。
1969: Edgar F。“Ted” Codd發明了關系數據庫
1970年關系模型建立之后,IBM公司在San Jose實驗室增加了更多的研究人員研究這個項目,這個項目就是著名的System R。其目標是論證一個全功能關系DBMS的可行性。該項目結束于1979年,完成了第一個實現SQL的 DBMS。然而IBM對IMS的承諾阻止了System R的投產,一直到1980年System R才作為一個產品正式推向市場。IBM產品化步伐緩慢的三個原因:IBM重視信譽,重視質量,盡量減少故障;IBM是個大公司,官僚體系龐大;IBM內部已經有層次數據庫產品,相關人員不積極,甚至反對。
然而同時,1973年加州大學伯克利分校的Michael Stonebraker和Eugene Wong利用System R已發布的信息開始開發自己的關系數據庫系統Ingres。他們開發的Ingres項目最后由Oracle公司、Ingres公司以及硅谷的其他廠商所商品化。后來,System R和Ingres系統雙雙獲得ACM的1988年“軟件系統獎”。
1976年霍尼韋爾公司(Honeywell)開發了第一個商用關系數據庫系統——Multics Relational Data Store。關系型數據庫系統以關系代數為堅實的理論基礎,經過幾十年的發展和實際應用,技術越來越成熟和完善。其代表產品有Oracle、IBM公司的 DB2、微軟公司的MS SQL Server以及Informix、ADABASD等等。
3. 結構化查詢語言 (SQL)
1974 年,IBM的Ray Boyce和Don Chamberlin將Codd關系數據庫的12條準則的數學定義以簡單的關鍵字語法表現出來,里程碑式地提出了SQL(Structured Query Language)語言。SQL語言的功能包括查詢、操縱、定義和控制,是一個綜合的、通用的關系數據庫語言,同時又是一種高度非過程化的語言,只要求用戶指出做什么而不需要指出怎么做。SQL集成實現了數據庫生命周期中的全部操作。SQL提供了與關系數據庫進行交互的方法,它可以與標準的編程語言一起工作。自產生之日起,SQL語言便成了檢驗關系數據庫的試金石,而SQL語言標準的每一次變更都指導著關系數據庫產品的發展方向。然而,直到二十世紀七十年代中期,關系理論才通過SQL在商業數據庫Oracle和DB2中使用。
1986年,ANSI把SQL作為關系數據庫語言的美國標準,同年公布了標準SQL文本。目前SQL標準有3個版本。基本SQL定義是ANSIX3135-89,“Database Language - SQL with Integrity Enhancement”[ANS89],一般叫做SQL-89。SQL-89定義了模式定義、數據操作和事務處理。
SQL- 89和隨后的ANSIX3168-1989,“Database Language-Embedded SQL”構成了第一代SQL標準。ANSIX3135-1992[ANS92]描述了一種增強功能的SQL,現在叫做SQL-92標準。SQL-92包括模式操作,動態創建和SQL語句動態執行、網絡環境支持等增強特性。在完成SQL-92標準后,ANSI和ISO即開始合作開發SQL3標準。SQL3的主要特點在于抽象數據類型的支持,為新一代對象關系數據庫提供了標準。
1969:Edgar F. Codd發明了關系數據庫
1976 年IBM E.F.Codd發表了一篇里程碑的論文“R系統:數據庫關系理論”,介紹了關系數據庫理論和查詢語言SQL。Oracle的創始人Ellison非常仔細地閱讀了這篇文章,被其內容震驚,這是第一次有人用全面一致的方案管理數據信息。作者E.F.Codd十年前就發表了關系數據庫理論,并在IBM 研究機構開發原型,這個項目就是R系統,存取數據表的語言就是SQL。Ellison看完后,敏銳意識到在這個研究基礎上可以開發商用軟件系統。而當時大多數人認為關系數據庫不會有商業價值。Ellison認為這是他們的機會:他們決定開發通用商用數據庫系統Oracle,這個名字來源于他們曾給中央情報局做過的項目名。幾個月后,他們就開發了Oracle 1.0 。但這只不過是個玩具,除了完成簡單關系查詢不能做任何事情,他們花相當長的時間才使Oracle變得可用,維持公司運轉主要靠承接一些數據庫管理項目和做顧問咨詢工作。而IBM卻沒有計劃開發,為什么藍色巨人放棄了這個價值上百億的產品,原因有很多:IBM的研究人員大多是學術出身,他們最感興趣的是理論,而非推向市場的產品,從學術上看,研究成果應公開,發表論文和演講能使他們成名,為什么不呢?還有一個很主要的原因就是IBM 當時有一個銷售得還不錯的層次數據庫產品IMS。直到1985年I B M 才發布了關系數據庫D B 2 ,Ellision那時已經成了千萬富翁。Ellison曾將IBM 選擇Microsoft 的MS-DOS作為IBM-PC機的操作系統比為:“世界企業經營歷史上最嚴重的錯誤,價值超過了上千億美元。”IBM 發表R系統論文,而且沒有很快推出關系數據庫產品的錯誤可能僅僅次之。Oracle 的市值在1996年就達到了280億美元。
目前SQL標準有3個版本。基本SQL定義是ANSIX3135-89,“DatabaseLan guage —— SQL with IntegrityEnhancement”[ANS89],一般叫做SQL-89。SQL-89 定義了模式定義、數據操作和事務處理。S Q L - 8 9 和隨后的ANSIX3168-1989,“Database Language——Embedded SQL”構成了第一代SQL標準。ANSIX3135-1992[ANS92]描述了一種增強功能的SQL,現在叫做SQL-92標準。SQL-92 包括模式操作,動態創建和SQL語句動態執行、網絡環境支持等增強特性。在完成SQL-92標準后,ANSI和ISO即開始合作開發SQL3標準。 SQL3的主要特點在于抽象數據類型的支持,為新一代對象關系數據庫提供了標準。
4. 面向對象數據庫
隨著信息技術和市場的發展,人們發現關系型數據庫系統雖然技術很成熟,但其局限性也是顯而易見的:它能很好地處理所謂的“表格型數據”,卻對技術界出現的越來越多的復雜類型的數據無能為力。九十年代以后,技術界一直在研究和尋求新型數據庫系統。但在什么是新型數據庫系統的發展方向的問題上,產業界一度是相當困惑的。受當時技術風潮的影響,在相當一段時間內,人們把大量的精力花在研究“面向對象的數據庫系統(object oriented database)”或簡稱“OO數據庫系統”。值得一提的是,美國Stonebraker教授提出的面向對象的關系型數據庫理論曾一度受到產業界的青睞。而Stonebraker本人也在當時被Informix花大價錢聘為技術總負責人。
然而,數年的發展表明,面向對象的關系型數據庫系統產品的市場發展的情況并不理想。理論上的完美性并沒有帶來市場的熱烈反應。其不成功的主要原因在于,這種數據庫產品的主要設計思想是企圖用新型數據庫系統來取代現有的數據庫系統。這對許多已經運用數據庫系統多年并積累了大量工作數據的客戶,尤其是大客戶來說,是無法承受新舊數據間的轉換而帶來的巨大工作量及巨額開支的。另外,面向對象的關系型數據庫系統使查詢語言變得極其復雜,從而使得無論是數據庫的開發商家還是應用客戶都視其復雜的應用技術為畏途。
5. 數據管理的變革
二十世紀六十年代后期出現了一種新型數據庫軟件:決定支持系統(DSS),其目的是讓管理者在決策過程中更有效地利用數據信息。于是在1970年, 第一個聯機分析處理工具——Express誕生了。其他決策支持系統緊隨其后,許多是由公司的IT部門開發出來的。
1985年,第一個商務智能系統(business intelligence)由Metaphor計算機系統有限公司為Procter Gamble公司開發出來,主要是用來連接銷售信息和零售的掃描儀數據。同年, Pilot 軟件公司開始出售第一個商用客戶/服務器執行信息系統——Command Center。同樣在這年,加州大學伯克利分校Ingres項目演變成Postgres,其目標是開發出一個面向對象的數據庫。此后一年, Graphael公司開發了第一個商用的對象數據庫系統—Gbase。
1988年,IBM公司的研究者Barry Devlin和Paul Murphy發明了一個新的術語—信息倉庫,之后,IT的廠商開始構建實驗性的數據倉庫。1991年,W.H. "Bill" Inmon出版了一本“如何構建數據倉庫”的書,使得數據倉庫真正開始應用。
1991: W.H.“Bill” Inmon發表了”構建數據倉庫”
二十世紀九十年代,隨著基于PC的客戶/服務器計算模式和企業軟件包的廣泛采用,數據管理的變革基本完成。數據管理不再僅僅是存儲和管理數據,而轉變成用戶所需要的各種數據管理的方式。Internet的異軍突起以及XML語言的出現,給數據庫系統的發展開辟了一片新的天地。
[編輯本段]數據庫未來發展趨勢
隨著信息管理內容的不斷擴展,出現了豐富多樣的數據模型(層次模型,網狀模型,關系模型,面向對象模型,半結構化模型等),新技術也層出不窮(數據流,Web數據管理,數據挖掘等)。目前每隔幾年,國際上一些資深的數據庫專家就會聚集一堂,探討數據庫研究現狀,存在的問題和未來需要關注的新技術焦點。過去已有的幾個類似報告包括:1989 年Future Directions inDBMS Research-The Laguna BeachParticipants ,1990 年DatabaseSystems : Achievements and Opportunities ,1995 年的Database 1991:W.H. Inmon 發表了《構建數據倉庫》
sql語句從一張表中查詢數據插入到另一張表中的方法如下:
1、select * into destTbl from srcTbl。
2、insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl。
以上兩句都是將 srcTbl 的數據插入到 destTbl,但兩句又有區別的:
第一句(select into from)要求目標表(destTbl)不存在,因為在插入時會自動創建。
第二句(insert into select from)要求目標表(destTbl)存在,由于目標表已經存在,所以我們除了插入源表(srcTbl)的字段外,還可以插入常量。
拓展資料:
結構化查詢語言(Structured Query Language)簡稱SQL,結構化查詢語言是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統。sql 語句就是對數據庫進行操作的一種語言。
常見語句:
1、更新:update table1 set field1=value1 where 范圍。
2、查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’這個模式的字符串)。
3、排序:select * from table1 order by field1,field2 [desc]。
4、求和:select sum(field1) as sumvalue from table1。
5、平均:select avg(field1) as avgvalue from table1。
6、最大:select max(field1) as maxvalue from table1。
7、最小:select min(field1) as minvalue from table1[searator]。
網站名稱:包含postgresql求和的詞條
本文網址:http://vcdvsql.cn/article28/dsdgpjp.html
成都網站建設公司_創新互聯,為您提供云服務器、服務器托管、外貿建站、App開發、虛擬主機、網站策劃
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯