SQL(一)- 数据库介绍与基础操作
數(shù)據(jù)庫介紹
一、常用的數(shù)據(jù)庫分為兩大類:
- 關(guān)系型數(shù)據(jù)庫
- 非關(guān)系型數(shù)據(jù)庫(NoSql)
關(guān)系型數(shù)據(jù)庫
概念:是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。
關(guān)系型數(shù)據(jù)庫的優(yōu)勢:
- 保持?jǐn)?shù)據(jù)的一致性(事務(wù)處理)
- 由于以標(biāo)準(zhǔn)化為前提,數(shù)據(jù)更新的開銷很小(相同的字段基本上都只有一處)
- 可以進(jìn)行Join等復(fù)雜查詢
缺點(diǎn):
- 高并發(fā)讀寫需求:網(wǎng)站的用戶并發(fā)非常高,往往達(dá)到每秒上萬次讀寫請求,對于傳統(tǒng)關(guān)系型數(shù)據(jù)庫來說,硬盤I/O是一個很大的瓶頸
- 海量數(shù)據(jù)的高效率讀寫:對于數(shù)據(jù)量巨大的網(wǎng)站來說,關(guān)系型數(shù)據(jù)庫的查詢效率非常低
非關(guān)系型數(shù)據(jù)庫
非關(guān)系型數(shù)據(jù)庫也叫NoSQL。區(qū)別于關(guān)系數(shù)據(jù)庫,它們不保證關(guān)系數(shù)據(jù)的ACID特性。NoSQL是一項全新的數(shù)據(jù)庫革命性運(yùn)動,其擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)據(jù)存儲,相對于鋪天蓋地的關(guān)系型數(shù)據(jù)庫運(yùn)用,這一概念無疑是一種全新的思維的注入。
優(yōu)點(diǎn):
- 成本:NoSql數(shù)據(jù)庫簡單易部署,基本都是開源軟件,不需要使用像oracle那樣花費(fèi)大量成本購買使用,相比關(guān)系型數(shù)據(jù)庫價格便宜。
- 查詢速度:NoSql數(shù)據(jù)庫將數(shù)據(jù)存儲于緩存之中,關(guān)系型數(shù)據(jù)庫將數(shù)據(jù)存儲在硬盤中,自然查詢速度遠(yuǎn)不及NoSql數(shù)據(jù)庫。
- 存儲格式:NoSql數(shù)據(jù)庫的存儲格式是Key,Value形式,文檔形式,圖片形式等,所以可以存儲基礎(chǔ)類型以及對象或者是集合等各種格式,而數(shù)據(jù)庫則只支持基礎(chǔ)類型。
- 擴(kuò)展性:關(guān)系型數(shù)據(jù)庫有類似join這樣的多表查詢機(jī)制的限制,導(dǎo)致擴(kuò)展很艱難。
缺點(diǎn):
- 維護(hù)的工具和資料有限,因為NoSql屬于新技術(shù),不能和關(guān)系型數(shù)據(jù)庫10幾年的技術(shù)同日而語。
- 不提供對Sql的支持,如果不支持Sql這樣的工業(yè)標(biāo)準(zhǔn),將產(chǎn)生一定用戶的學(xué)習(xí)和使用成本。
- 不提供關(guān)系型數(shù)據(jù)庫對事物的處理。
常見的關(guān)系型數(shù)據(jù)庫:
常見的非關(guān)系型數(shù)據(jù)庫:
- Redis[鍵值存儲數(shù)據(jù)庫]
- MongoDB[鍵值存儲數(shù)據(jù)庫]
二、SQL、DB、DBMS分別是什么?他們之間時什么關(guān)系?
- DB:DataBase(數(shù)據(jù)庫,數(shù)據(jù)庫實際在硬盤上以文件的形式存在)
- DBMS:DataBase Management
System(數(shù)據(jù)庫管理系統(tǒng),常用的有:MySQL、Oracle、DB2、Sybase、sqlServer……) - SQL:結(jié)構(gòu)化查詢語言,是一門標(biāo)準(zhǔn)的通用語言,標(biāo)準(zhǔn)的sql適合于所有的數(shù)據(jù)庫產(chǎn)品。
SQL屬于高級語言,只要能看懂英語單詞,寫出的SQL語句,可以讀懂什么意思。
SQL語句在執(zhí)行的時候,實際上內(nèi)部也會進(jìn)行編譯,然后在執(zhí)行sql(編譯有DBMS完 成)
DBMS負(fù)責(zé)執(zhí)行程序員寫的sql語句,通過執(zhí)行sql語句來操作DB中的數(shù)據(jù)。
DBMS -(執(zhí)行)-> SQL - (操作) -> DB
三、什么是表?
表:table是數(shù)據(jù)庫的基本組成單元,所有的數(shù)據(jù)都要以表的形式組織,目的是可讀性強(qiáng)。
一個表包括行和列:
行:被稱為數(shù)據(jù)/記錄(data)
列:被稱為字段(column)
每一個字段應(yīng)該包括哪些屬性?
- 字段名
- 數(shù)據(jù)類型
- 相關(guān)的約束
四、那么SQL語句包括增刪改查,SQL語句怎么分類呢?
DQL(數(shù)據(jù)查詢語言): 查詢語句,凡是select語句都是DQL。 DML(數(shù)據(jù)操作語言):insert delete update,對表當(dāng)中的數(shù)據(jù)進(jìn)行增刪改。 DDL(數(shù)據(jù)定義語言):create drop alter,對表結(jié)構(gòu)的增刪改。 TCL(事務(wù)控制語言):commit提交事務(wù),rollback回滾事務(wù)。(TCL中的T是Transaction) DCL(數(shù)據(jù)控制語言): grant授權(quán)、revoke撤銷權(quán)限等。SQL的基礎(chǔ)操作
假設(shè)我們現(xiàn)在以經(jīng)成功安裝了MySQL,下面開始介紹MySQL的基礎(chǔ)操作。
1.啟動/停止mysql
net start mysql net stop mysql注意:如果是安裝win版本,執(zhí)行語句的時候提示“拒絕訪問”,可以推出命令提示符,用管理員權(quán)限打開命令提示符即可。
2.登錄mysql賬號密碼
mysql -uroot -p //回車后輸入密碼 Enter password: *****3.修改密碼
alter user user() identified by "新密碼"4.登錄進(jìn)去后查看有哪些數(shù)據(jù)庫
show databases;5.創(chuàng)建屬于我們自己的數(shù)據(jù)庫(bjpowernode)
create database bjpowernode;6.使用數(shù)據(jù)庫(bjpowernode)
use bjpowernode;7.查看數(shù)據(jù)庫中的表;
show tables;8.創(chuàng)建自己的表(studentstest)如下參考圖片
8.初始化數(shù)據(jù)
source 文件路徑\XXX.sql注意:初始化數(shù)據(jù)可以不要分號“;”
這里用于初始化的文件稱為sql腳本文件—bjpowernode.sql
bjpowernode.sql,這個文件以sql結(jié)尾,這樣的文件被稱為“sql腳本”。什么是sql腳本呢?
當(dāng)一個文件的擴(kuò)展名是.sql,并且該文件中編寫了大量的sql語句,我們稱這樣的文件為sql腳本。
注意:直接使用source命令可以執(zhí)行sql腳本。
sql腳本中的數(shù)據(jù)量太大的時候,無法打開,請使用source命令完成初始化。
bjpowernode.sql中包含了三張表格,在對它完成初始化后,數(shù)據(jù)庫中就得到了這三張表后面我們在練習(xí)SQL查詢語句的時候就拿這三張表格來重點(diǎn)反復(fù)練習(xí)。下面分別介紹一下這三張表格:
查看當(dāng)前數(shù)據(jù)庫中的表:
查看數(shù)據(jù)庫中的表;
show tables;
9.查看表的數(shù)據(jù)結(jié)構(gòu):
表一:部門表
表二:員工信息表
表三:薪資表
10.刪除表格
11.刪除表格
drop database 數(shù)據(jù)庫名;12.查看表中數(shù)據(jù):
select 字段 from 表名;我們剛好可以順便看看前面三張表中的數(shù)據(jù)吧:
員工表中的數(shù)據(jù):
部門表中的數(shù)據(jù):
薪資表中的數(shù)據(jù):
13.查看當(dāng)前使用的是哪個數(shù)據(jù)庫:
13.查看當(dāng)前使用mysql的版本:
select version();14.查看當(dāng)前使用的是哪個數(shù)據(jù)庫:
select 字段 from 表名;15.命令,提前結(jié)束一條語句(寫到一半不想寫了):
\c16.命令,推出mysql:
exit / quit / Ctrl + C13.查看創(chuàng)建表的語句:
show create table 表名;總結(jié)
以上是生活随笔為你收集整理的SQL(一)- 数据库介绍与基础操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 海菜的功效与作用、禁忌和食用方法
- 下一篇: SQL(二)- 基础查询语句