MsSQL數(shù)據(jù)庫(kù)基礎(chǔ)與庫(kù)的基本操作方法
一,數(shù)據(jù)庫(kù)基礎(chǔ)
1,什么是數(shù)據(jù)庫(kù)
存儲(chǔ)數(shù)據(jù)用文件就可以了,為什么還要弄個(gè)數(shù)據(jù)庫(kù)
文件保存數(shù)據(jù)有以下幾個(gè)缺點(diǎn):
文件的安全性問(wèn)題
文件不利于數(shù)據(jù)查詢和管理
文件不利于存儲(chǔ)海量數(shù)據(jù)
文件在程序中控制不方便
數(shù)據(jù)庫(kù)存儲(chǔ)介質(zhì):
磁盤
內(nèi)存
為了解決上述問(wèn)題,專家們?cè)O(shè)計(jì)出更加利于管理數(shù)據(jù)的東西——數(shù)據(jù)庫(kù),它能更有效的管理數(shù)據(jù)。數(shù)據(jù)庫(kù)的水平是衡量一個(gè)程序員水平的重要指標(biāo)。
2,主流的數(shù)據(jù)庫(kù)
SQL Sever: 微軟的產(chǎn)品,.Net程序員的最愛,中大型項(xiàng)目。
Oracle: 甲骨文產(chǎn)品,適合大型項(xiàng)目,復(fù)雜的業(yè)務(wù)邏輯,并發(fā)一般來(lái)說(shuō)不如MySQL。
MySQL:世界上最受歡迎的數(shù)據(jù)庫(kù),屬于甲骨文,并發(fā)性好,不適合做復(fù)雜的業(yè)務(wù)。主要用在電商,SNS,論 壇。對(duì)簡(jiǎn)單的SQL處理效果好。
PostgreSQL :加州大學(xué)伯克利分校計(jì)算機(jī)系開發(fā)的關(guān)系型數(shù)據(jù)庫(kù),不管是私用,商用,還是學(xué)術(shù)研究使用,可 以免費(fèi)使用,修改和分發(fā)。
SQLite: 是一款輕型的數(shù)據(jù)庫(kù),是遵守ACID的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它包含在一個(gè)相對(duì)小的C庫(kù)中。它的設(shè) 計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可 能只需要幾百K的內(nèi)存就夠了。
H2: 是一個(gè)用Java開發(fā)的嵌入式數(shù)據(jù)庫(kù),它本身只是一個(gè)類庫(kù),可以直接嵌入到應(yīng)用項(xiàng)目中。
3,連接服務(wù)器
輸入:
mysql -h 127.0.0.1 -P 3306 -u root -p
一般我們用 mysql -u root -p 就可以了
輸出:
輸入指令后,再輸入密碼即可;
注意:
如果沒有寫 -h 127.0.0.1 默認(rèn)是連接本地
如果沒有寫 -P 3306 默認(rèn)是連接3306端口號(hào)
4,服務(wù)器,數(shù)據(jù)庫(kù),表關(guān)系
1,所謂安裝數(shù)據(jù)庫(kù)服務(wù)器,只是在機(jī)器上安裝了一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)程序,這個(gè)管理程序可以管理多個(gè)數(shù)據(jù)庫(kù), 一般開發(fā)人員會(huì)針對(duì)每一個(gè)應(yīng)用創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)
2,為保存應(yīng)用中實(shí)體的數(shù)據(jù),一般會(huì)在數(shù)據(jù)庫(kù)中創(chuàng)建多個(gè)表,以保存程序中實(shí)體的數(shù)據(jù)
3,數(shù)據(jù)庫(kù)服務(wù)器、數(shù)據(jù)庫(kù)和表的關(guān)系如下:
5,使用案例
創(chuàng)建數(shù)據(jù)庫(kù)
create database helloworld;
使用數(shù)據(jù)庫(kù)
use helloworld;
創(chuàng)建數(shù)據(jù)庫(kù)表
create table student( id int, name varchar(32), gender varchar(2) );
表中插入數(shù)據(jù)
insert into student (id, name, gender) values (1, ‘張三', ‘男'); insert into student (id, name, gender) values (2, ‘李四', ‘女'); insert into student (id, name, gender) values (3, ‘王五', ‘男');
查詢表中的數(shù)據(jù)
select * from student;
二,庫(kù)的操作
1,創(chuàng)建數(shù)據(jù)庫(kù)
語(yǔ)法:
CREATE DATABASE [IFNOTEXISTS]db_name[create_specification[,create_specification] …] create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name
說(shuō)明:
大寫的表示關(guān)鍵字
[ ] 是可選項(xiàng)
CHARACTER SET: 指定數(shù)據(jù)庫(kù)采用的字符集
COLLATE: 指定數(shù)據(jù)庫(kù)字符集的校驗(yàn)規(guī)則
2,創(chuàng)建數(shù)據(jù)庫(kù)案例
創(chuàng)建名為 db1 的數(shù)據(jù)庫(kù)
create database db1;
說(shuō)明:
當(dāng)我們創(chuàng)建數(shù)據(jù)庫(kù)沒有指定字符集和校驗(yàn)規(guī)則時(shí),系統(tǒng)使用默認(rèn)字符集:utf8
校驗(yàn)規(guī)則是:utf8_ general_ ci
創(chuàng)建一個(gè)使用utf8字符集的 db2 數(shù)據(jù)庫(kù)
show databases; 指令是查看數(shù)據(jù)庫(kù)
創(chuàng)建一個(gè)使用utf8字符集的 db2 數(shù)據(jù)庫(kù)
create database db2 charset=utf8;
創(chuàng)建一個(gè)使用utf字符集,并帶校對(duì)規(guī)則的 db3 數(shù)據(jù)庫(kù)。
create database db3 charset=utf8 collate utf8_general_ci;
3,字符集和校驗(yàn)規(guī)則
1,查看系統(tǒng)默認(rèn)字符集以及校驗(yàn)規(guī)則
show variables like ‘character_set_database'; show variables like ‘collation_database';
2,查看數(shù)據(jù)庫(kù)支持的字符集
show charset;
字符集主要是控制用什么語(yǔ)言。比如utf8就可以使用中文。
3,查看數(shù)據(jù)庫(kù)支持的字符集校驗(yàn)規(guī)則
show collation;
如果想快速知道指定數(shù)據(jù)庫(kù)的字符集和校驗(yàn)集的話:
var/lib/mysql 在這個(gè)目錄里面,mysql 的數(shù)據(jù)庫(kù)在里面就是一個(gè)目錄;
進(jìn)入想要查看的數(shù)據(jù)庫(kù)目錄,里面有文件 db.opt 里面存放了字符集和校驗(yàn)集;
4,校驗(yàn)規(guī)則對(duì)數(shù)據(jù)庫(kù)的影響
不區(qū)分大小寫
創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),校驗(yàn)規(guī)則使用utf8_ general_ ci[不區(qū)分大小寫]
create database test1 collate utf8_general_ci; use test1;
create table person(name varchar(20));
insert into person values(‘a(chǎn)'); insert into person values(‘A'); insert into person values(‘b'); insert into person values(‘B');
不區(qū)分大小寫的查詢以及結(jié)果
區(qū)分大小寫
創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),校驗(yàn)規(guī)則使用utf8_ bin[區(qū)分大小寫]
create database test2 collate utf8_bin; use test2 create table person(name varchar(20)); insert into person values(‘a(chǎn)'); insert into person values(‘A'); insert into person values(‘b'); insert into person values(‘B');
一對(duì)比一目了然;
結(jié)果排序不區(qū)分大小寫排序以及結(jié)果:
區(qū)分大小寫排序以及結(jié)果:
4,操縱數(shù)據(jù)庫(kù)
1,查看數(shù)據(jù)庫(kù)
show databases;
database 下面全是數(shù)據(jù)庫(kù);
2,顯示創(chuàng)建語(yǔ)句
說(shuō)明:
MySQL 建議我們關(guān)鍵字使用大寫,但是不是必須的。
數(shù)據(jù)庫(kù)名字的反引號(hào)``,是為了防止使用的數(shù)據(jù)庫(kù)名剛好是關(guān)鍵字
/*!40100 default… */ 這個(gè)不是注釋,表示當(dāng)前mysql版本大于4.01版本,就執(zhí)行這句話
3,修改數(shù)據(jù)庫(kù)
語(yǔ)法:
ALTER DATABASE db_name [alter_spacification [,alter_spacification]…] alter_spacification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name
說(shuō)明:
對(duì)數(shù)據(jù)庫(kù)的修改主要指的是修改數(shù)據(jù)庫(kù)的字符集,校驗(yàn)規(guī)則
實(shí)例: 將 test1 數(shù)據(jù)庫(kù)字符集改成 gbk
4,數(shù)據(jù)庫(kù)刪除
DROP DATABASE [IF EXISTS] db_ name;
執(zhí)行刪除之后的結(jié)果:
數(shù)據(jù)庫(kù)內(nèi)部看不到對(duì)應(yīng)的數(shù)據(jù)庫(kù)
對(duì)應(yīng)的數(shù)據(jù)庫(kù)文件夾被刪除,
級(jí)聯(lián)刪除,里面的數(shù)據(jù)表全部被刪
注意:不要隨意刪除數(shù)據(jù)庫(kù)
5,備份和恢復(fù)
1,備份
語(yǔ)法:
# mysqldump -P3306 -u root -p 密碼 -B 數(shù)據(jù)庫(kù)名 > 數(shù)據(jù)庫(kù)備份存儲(chǔ)的文件路徑
示例:將 test2 庫(kù)備份到文件(退出連接)
# mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql
因?yàn)槲疫@個(gè) mytest 數(shù)據(jù)庫(kù)是新建的里面沒有東西;
我們看看另一個(gè) D:test2.sql 的;
里面就有很多東西了;
2,還原
mysql> source D:/mysql-5.7.22/mytest.sql;
先刪除原數(shù)據(jù)庫(kù);
還原;
也是成功還原了;
3,注意事項(xiàng)
如果備份的不是整個(gè)數(shù)據(jù)庫(kù),而是其中的一張表,怎么做?
# mysqldump -u root -p 數(shù)據(jù)庫(kù)名 表名1 表名2 > D:/mytest.sql
同時(shí)備份多個(gè)數(shù)據(jù)庫(kù)
# mysqldump -u root -p -B 數(shù)據(jù)庫(kù)名1 數(shù)據(jù)庫(kù)名2 … > 數(shù)據(jù)庫(kù)存放路徑
如果備份一個(gè)數(shù)據(jù)庫(kù)時(shí),沒有帶上-B參數(shù), 在恢復(fù)數(shù)據(jù)庫(kù)時(shí),需要先創(chuàng)建空數(shù)據(jù)庫(kù),然后使用數(shù)據(jù)庫(kù),再使用 source來(lái)還原。
6,查看連接情況
語(yǔ)法:
show processlist
可以告訴我們當(dāng)前有哪些用戶連接到我們的MySQL,如果查出某個(gè)用戶不是你正常登陸的,很有可能你的數(shù)據(jù)庫(kù)被 人入侵了。以后大家發(fā)現(xiàn)自己數(shù)據(jù)庫(kù)比較慢時(shí),可以用這個(gè)指令來(lái)查看數(shù)據(jù)庫(kù)連接情況
到此這篇關(guān)于MsSQL數(shù)據(jù)庫(kù)基礎(chǔ)與庫(kù)的基本操作的文章就介紹到這了,更多相關(guān)MsSQL數(shù)據(jù)庫(kù)基礎(chǔ)與庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
sqlserver實(shí)現(xiàn)樹形結(jié)構(gòu)遞歸查詢(無(wú)限極分類)的方法
下面小編就為大家?guī)?lái)一篇sqlserver實(shí)現(xiàn)樹形結(jié)構(gòu)遞歸查詢(無(wú)限極分類)的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07SQL Server數(shù)據(jù)庫(kù)文件過(guò)大而無(wú)法直接導(dǎo)出解決方案
這篇文章主要介紹了SQL Server數(shù)據(jù)庫(kù)文件過(guò)大而無(wú)法直接導(dǎo)出解決方案,文中通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-08-08Transactional replication(事務(wù)復(fù)制)詳解之如何跳過(guò)一個(gè)事務(wù)
事務(wù)復(fù)制由 SQL Server 快照代理、日志讀取器代理和分發(fā)代理實(shí)現(xiàn)。 快照代理準(zhǔn)備快照文件(其中包含了已發(fā)布表和數(shù)據(jù)庫(kù)對(duì)象的架構(gòu)和數(shù)據(jù)),然后將這些文件存儲(chǔ)在快照文件夾中,并在分發(fā)服務(wù)器中的分發(fā)數(shù)據(jù)庫(kù)中記錄同步作業(yè)。2014-08-08SQL Server 數(shù)據(jù)庫(kù)優(yōu)化
設(shè)計(jì)1個(gè)應(yīng)用系統(tǒng)似乎并不難,但是要想使系統(tǒng)達(dá)到最優(yōu)化的性能并不是一件容易的事。2009-07-07用sql腳本創(chuàng)建sqlserver數(shù)據(jù)庫(kù)觸發(fā)器范例語(yǔ)句
創(chuàng)建SqlServer數(shù)據(jù)庫(kù)觸發(fā)器腳本范例,方便大家用sql來(lái)創(chuàng)建觸發(fā)器,學(xué)習(xí)sqlserver的朋友可以參考下。2010-09-09對(duì)SQL Server中敏感數(shù)據(jù)進(jìn)行加密解密的操作方法
近幾年有不少關(guān)于個(gè)人數(shù)據(jù)泄露的新聞(個(gè)人數(shù)據(jù)通常包含如姓名、地址、身份證號(hào)碼、財(cái)務(wù)信息等),給事發(fā)公司和被泄露人都帶來(lái)了不小的影響,所以本文給大家介紹了如何對(duì)SQL Server中的敏感數(shù)據(jù)進(jìn)行加密解密,需要的朋友可以參考下2024-05-05SQL Server 日期和時(shí)間的內(nèi)部存儲(chǔ)過(guò)程
在SQL Server的內(nèi)部存儲(chǔ)中,日期和時(shí)間不是以字符串的形式存儲(chǔ)的,而是使用整數(shù)來(lái)存儲(chǔ)的。這篇文章主要介紹了SQL Server 日期和時(shí)間的內(nèi)部存儲(chǔ),需要的朋友可以參考下2019-12-12sqlserver 存儲(chǔ)過(guò)程分頁(yè)代碼
sqlserver 存儲(chǔ)過(guò)程分頁(yè)代碼并說(shuō)明了用vc#調(diào)用上面的存儲(chǔ)過(guò)程2010-06-06SQL Server 2016 Alwayson新增功能圖文詳解
sqlserver2016發(fā)布有一段時(shí)間了,下面跟著腳本之家小編一起看看2016在Alwyson上做了哪些改進(jìn)?需要的朋友通過(guò)本文了解下吧2017-09-09