真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

nosql編程題庫(kù),典型的nosql數(shù)據(jù)庫(kù)是

用sql語(yǔ)句創(chuàng)建一個(gè)教師表教師可以帶多個(gè)班但不能帶多門課

熱門頻道

成都創(chuàng)新互聯(lián)是一家專業(yè)提供老河口企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為老河口眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。

首頁(yè)

博客

研修院

VIP

APP

問答

下載

社區(qū)

推薦頻道

活動(dòng)

招聘

專題

打開CSDN APP

Copyright ? 1999-2020, CSDN.NET, All Rights Reserved

sql

打開APP

SQL數(shù)據(jù)庫(kù)創(chuàng)建學(xué)生、教師、選課表 原創(chuàng)

2020-12-17 12:05:09

7點(diǎn)贊

Chowhound_i

碼齡2年

關(guān)注

SQL數(shù)據(jù)庫(kù)創(chuàng)建學(xué)生、教師、選課表

創(chuàng)建學(xué)生表

create table student (

sno char(14) primary key,

sname char (10) not null,

ssex char(2),

sage tinyint,

sdept varchar(20),

spassword tinyint,

)

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

創(chuàng)建教師表

create table teacher (

tno char(14) primary key,

tname char (10) not null,

tsex char(2),

tage tinyint,

sdept varchar(20),

spassword tinyint,

)

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

創(chuàng)建選課表

create table course (

cno char(10),

sno char(14) not null,

tno char(14) not null,

cyear tinyint,

cterm tinyint,

grade tinyint,

primary key(sno,tno),

foreign key(sno) references student(sno),

foreign key(tno) references teacher(tno),

)

1

2

3

4

5

6

7

8

9

10

11

1

2

3

4

5

6

7

8

9

10

11

文章知識(shí)點(diǎn)與官方知識(shí)檔案匹配

MySQL入門技能樹使用數(shù)據(jù)庫(kù)創(chuàng)建和刪除表

28046 人正在系統(tǒng)學(xué)習(xí)中

點(diǎn)擊閱讀全文

打開CSDN,閱讀體驗(yàn)更佳

3.SQL--創(chuàng)建教師表和向表內(nèi)插入數(shù)據(jù)_weixin_33712881的博客

3.SQL--創(chuàng)建教師表和向表內(nèi)插入數(shù)據(jù) --創(chuàng)建教師表,并向表內(nèi)插入數(shù)據(jù) create table Teacher(Tid varchar(10),Tname nvarchar(10)) --向表內(nèi)插入數(shù)據(jù) insertinto Teacher values('01' , '韓寒') insert into Teacher values('02...

sql語(yǔ)句(學(xué)生表、課程表、分?jǐn)?shù)表、教師表)_煜帆帆的博客

student(學(xué)生表)、teacher(教師表)、course(課程表)、sc(分?jǐn)?shù)表) 2、創(chuàng)建表 //學(xué)生表 create table student( sno varchar2(10) primary key, sname varchar2(20), sage number(2), ssex varchar2(5) ); 1 2 3 4 5 6...

熱門推薦 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),包括四個(gè)表:學(xué)生表(Student)、課程表(Course)、成績(jī)表(Score)以及教師信息表(Teacher)

創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),包括四個(gè)表:學(xué)生表(Student)、課程表(Course)、成績(jī)表(Score)以及教師信息表(Teacher)。四個(gè)表的結(jié)構(gòu)分別如表1-1的表(一)~表(四)所示,數(shù)據(jù)如表1-2的表… 表(一)Student (學(xué)生表) 屬性名 數(shù)據(jù)類型 可否為空 含 義 Sno varchar (20) 否 學(xué)號(hào) Sname varchar (20) 否 學(xué)生姓名 Ssex varchar ...

繼續(xù)訪問

mysql創(chuàng)建教師表_day34 mysql 認(rèn)識(shí)數(shù)據(jù)庫(kù),創(chuàng)建學(xué)生,教師,學(xué)院表

數(shù)據(jù)庫(kù) - 數(shù)據(jù)的倉(cāng)庫(kù)(集散地) - database - 實(shí)現(xiàn)數(shù)據(jù)持久化和數(shù)據(jù)管理持久化 - 將數(shù)據(jù)從內(nèi)存轉(zhuǎn)移到能夠長(zhǎng)久保存數(shù)據(jù)的存儲(chǔ)介質(zhì)的過(guò)程數(shù)據(jù)庫(kù)的分類:關(guān)系型數(shù)據(jù)庫(kù)(SQL)和非關(guān)系型數(shù)據(jù)庫(kù)(NoSQL)文件系統(tǒng) / 層次數(shù)據(jù)庫(kù) / 網(wǎng)狀數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù)1970s - E.F.Codd - IBM研究員 - System R理論基礎(chǔ):關(guān)系代數(shù)和集合論具體表象:用二維表來(lái)保存數(shù)據(jù) - 學(xué)生...

繼續(xù)訪問

使用SQL語(yǔ)句創(chuàng)建及使用SQLServer數(shù)據(jù)庫(kù)_MyAnqi的博客

1使用SQL語(yǔ)句在數(shù)據(jù)庫(kù)中Student表插入對(duì)應(yīng)表格前2行元組。 insert into Student(sno,sn,sex,bor,clano,age)values(108,'曾華','男','1992-09-01','09033',22); insert into Student(sno,sn,sex,bor,clano,age)values(105,...

...名學(xué)生的SQL語(yǔ)句。_白一曉的博客_查詢教師表中的總?cè)藬?shù)

在Mysql面試的寫SQL語(yǔ)句環(huán)節(jié)中,有人曾碰到了這樣一道這樣的一道SQL語(yǔ)句題。目前有兩張數(shù)據(jù)表,一張學(xué)生,一張老師表。里面都有Name和Code兩個(gè)字段。求出張三的老師一共有多少名學(xué)生。 這樣,我們還是先建兩張普通的數(shù)據(jù)表。

最新發(fā)布 mysql 創(chuàng)建學(xué)生表、課程表、學(xué)生選課表

學(xué)生-課程數(shù)據(jù)庫(kù)中包含以下三個(gè)表關(guān)系的主碼加粗表示,各個(gè)表中的數(shù)據(jù)實(shí)例:StudentCourseSCSno為Student表的主鍵,Cno為Course表的主鍵,SC表中外鍵Sno,Cno分別是Student表和Course表的主鍵

繼續(xù)訪問

數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告一

KingBase數(shù)據(jù)庫(kù)下SQL語(yǔ)句的基本使用

繼續(xù)訪問

數(shù)據(jù)庫(kù)sql語(yǔ)句練習(xí)_Young_991的博客

一、設(shè)有一數(shù)據(jù)庫(kù),包括四個(gè)表:學(xué)生表(Student)、課程表(Course)、成績(jī)表(Score)以及教師信息表(Teacher)。四個(gè)表的結(jié)構(gòu)分別如表1-1的表(一)~表(四)所示,數(shù)據(jù)如表1-2的表(一)~表(四)所示。用SQL語(yǔ)句創(chuàng)建四個(gè)表并完成相關(guān)題...

...和MySQL示例查詢_庫(kù)特社區(qū)的博客_sql創(chuàng)建教師信息表

了解如何在其中創(chuàng)建表是一個(gè)重要且基本的概念。SQL 在本教程中,我將使用 PostgreSQL 和 MySQL 的代碼示例向您介紹語(yǔ)句的語(yǔ)法。SQLCREATE TABLE 基本語(yǔ)法CREATE TABLE 以下是該語(yǔ)句的基本語(yǔ)法:CREATE TABLE ...

【SQL】基本SQL數(shù)據(jù)表(學(xué)生、老師、課程、成績(jī))

create table student--創(chuàng)建student數(shù)據(jù)表 ( s_no char(10) not null, --學(xué)號(hào) s_name nchar(10), --姓名 s_sex char(2), --性別 borndate smalldatetime,--出生日期 ClassName nvarchar(50), --班級(jí)名稱 Telephone varchar(11), --電話號(hào)碼 EnrollDate smal.

繼續(xù)訪問

數(shù)據(jù)庫(kù)題:學(xué)生表,選課表,課程表寫SQL(多表)

設(shè)教學(xué)數(shù)據(jù)庫(kù)中有三個(gè)基本表: 學(xué)生表 S(SNO,SNAME,AGE,SEX),其屬性表示學(xué)生的學(xué)號(hào)、姓名、年齡和性別;選課表 SC(SNO,CNO,GRADE),其屬性表示學(xué)生的學(xué)號(hào)、所學(xué)課程的課程號(hào)和成績(jī);課程表 C(CNO,CNAME,TEACHER),其屬性表示課程號(hào)、課程名稱和任課教師姓名。 下面的題目都是針對(duì)上述三個(gè)基本表操作的(原題S#、C#這樣子寫法在查詢的時(shí)候會(huì)報(bào)錯(cuò),這里就用S...

繼續(xù)訪問

2021-09-06

#創(chuàng)建db_test數(shù)據(jù)庫(kù) create DATABASE db_test CHARACTER set utf8; use db_test; #在test數(shù)據(jù)庫(kù)中創(chuàng)建teacher表 create table teacher( number int PRIMARY key auto_increment, tname VARCHAR(30), sex VARCHAR(4), depno int, salary float, address VARCHAR(...

繼續(xù)訪問

太原理工大學(xué)軟件學(xué)院數(shù)據(jù)庫(kù)實(shí)驗(yàn)四(2021.4.26)

太原理工大學(xué)軟件學(xué)院數(shù)據(jù)庫(kù)實(shí)驗(yàn)四(2021.4.26) -- (1)創(chuàng)建Student 表 CREATE TABLE Student ( Sno CHAR(8) PRIMARY KEY, Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK( Ssex in ('男','女')), Sage SMALLINT, Sdept CHAR(20), Sclass CHAR(4) NOT NULL, Stotal smallint DEFAULT 0 ); -- (2)創(chuàng)建Cours

繼續(xù)訪問

SQL語(yǔ)言編程實(shí)戰(zhàn)系列(一)——教學(xué)管理數(shù)據(jù)庫(kù)的創(chuàng)建和簡(jiǎn)單操作

SQL語(yǔ)言編程實(shí)戰(zhàn)系列(一)——教學(xué)管理數(shù)據(jù)庫(kù)的創(chuàng)建和簡(jiǎn)單操作,基于《數(shù)據(jù)庫(kù)原理與設(shè)計(jì)——基于SQL Server2012》王世民等編著P204-綜合題5.3.1編寫的解答。

繼續(xù)訪問

SQL建表語(yǔ)句(建立學(xué)生_課程數(shù)據(jù)庫(kù))

SQL建表語(yǔ)句(建立學(xué)生_課程數(shù)據(jù)庫(kù)) (1)建立學(xué)生_課程數(shù)據(jù)庫(kù) (2)包含學(xué)生表Student 包含Sno(學(xué)號(hào)),Sname(姓名),Ssex(性別),Sage(年齡),Sdapt(所在系)屬性列 學(xué)號(hào)為主碼(主鍵) (3)創(chuàng)建課程表Course 包含Cno(課程號(hào)),Cname(課程名),Cpno(先行課課程號(hào)),Credit(學(xué)分)屬性列 課程號(hào)為主碼(主鍵) (4)學(xué)生_課程表SC 包含Sno(學(xué)號(hào)),Cno(課程號(hào)),Grade(成績(jī))屬性列 學(xué)號(hào),課程號(hào)為主碼(主鍵) Creat

繼續(xù)訪問

Oracle完整的試題

[code="java"]create table student( sno varchar2(10) primary key, sname varchar2(20), sage number(2), ssex varchar2(5) ); create table teacher( tno varchar2(10) primary key, tname varchar2(20) ...

繼續(xù)訪問

用mysql創(chuàng)建學(xué)生成績(jī)表_用SQL創(chuàng)建學(xué)生成績(jī)數(shù)據(jù)庫(kù)

創(chuàng)建數(shù)據(jù)庫(kù)school,這個(gè)數(shù)據(jù)庫(kù)中包含四個(gè)表:分別是學(xué)生表、教師表、課程表和成績(jī)表。語(yǔ)法:create database school;(創(chuàng)建數(shù)據(jù)庫(kù)school)show databases;(查看是否已經(jīng)創(chuàng)建好)drop database school;(刪除數(shù)據(jù)庫(kù)school,這里不必刪除)2.設(shè)計(jì)創(chuàng)建學(xué)生表、教師表、課程表和成績(jī)表。語(yǔ)法:use school;create table st...

繼續(xù)訪問

數(shù)據(jù)庫(kù)面試----學(xué)生、老師、課程、選課表常用sql示例

數(shù)據(jù)庫(kù)面試----學(xué)生、老師、課程、選課表常用sql示例 請(qǐng)先看看六大范式詳解 1——建表 (1)學(xué)生表 student DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `sid` int(11) DEFAULT NULL, `sname` varchar(20) DEFAULT NULL, `sage` int(11) DEFAULT NULL, `ssex` varchar(20) DEFAULT NULL ) ENGIN

繼續(xù)訪問

創(chuàng)建學(xué)院表 學(xué)生表 教師表 課程表 選課記錄表

為什么要使用數(shù)據(jù)庫(kù) 解決數(shù)據(jù)持久化問題 高效的管理數(shù)據(jù)(增刪改查) 數(shù)據(jù)庫(kù)的分類: 關(guān)系型數(shù)據(jù)庫(kù) 理論基礎(chǔ):關(guān)系代數(shù) 具體表象:二維表 行:記錄 列:字段 編程語(yǔ)言:SQL(結(jié)構(gòu)化查詢語(yǔ)言) DDL - 數(shù)據(jù)定義語(yǔ)言 — create / drop / alter DML - 數(shù)據(jù)操作語(yǔ)言 — insert / delete / update DQL - 數(shù)據(jù)查詢語(yǔ)言 — select DCL - 數(shù)據(jù)控制語(yǔ)言 — grant / revoke ...

繼續(xù)訪問

將數(shù)據(jù)插入教師表.sql

sql 插入多條語(yǔ)句

合肥工業(yè)大學(xué)—SQL Server數(shù)據(jù)庫(kù)實(shí)驗(yàn)三:SQL語(yǔ)句創(chuàng)建和刪除基本表

SQL語(yǔ)句創(chuàng)建和刪除基本表1. 編寫6個(gè)基本表2. 修改基本表結(jié)構(gòu),完整性約束條件3. 用Drop table 語(yǔ)句刪除基本表 1. 編寫6個(gè)基本表 設(shè)有簡(jiǎn)單教學(xué)管理的6個(gè)關(guān)系模式如下: 系(系編號(hào),系名稱、系主任、聯(lián)系電話、地址) 專業(yè)(專業(yè)編號(hào)、專業(yè)名稱、所屬系) 教師(教師編號(hào)、姓名、所在系、電話、電子信箱) 學(xué)生(學(xué)號(hào)、姓名、性別、出生日期、所學(xué)專業(yè)) 課程(課程號(hào)、課程名、學(xué)分、先修課) 學(xué)生選課(學(xué)號(hào)、課程號(hào)、成績(jī)) 要求:在數(shù)據(jù)庫(kù)EDUC中,創(chuàng)建對(duì)應(yīng)的6個(gè)基本表,基本表的名稱和屬性名稱由

繼續(xù)訪問

學(xué)習(xí)好sql

科目表 Course數(shù)據(jù)表介紹 --1.學(xué)生表 Student(SId,Sname,Sage,Ssex) --SId 學(xué)生編號(hào),Sname 學(xué)生姓名,Sage 出生年月,Ssex 學(xué)生性別 --2.課程表 Course(CId,Cname,TId) --CId 課程編號(hào),Cname 課程名稱,TId 教師編號(hào) --3.教師表 Teacher(TId,Tname) --TId 教師編號(hào),Tna...

繼續(xù)訪問

CSDN學(xué)霸課表——NoSQL是什么

《NoSQL是什么》 NoSQL(NoSQL = Not Only SQL),意即反SQL運(yùn)動(dòng),是一項(xiàng)全新的數(shù)據(jù)庫(kù)革命性運(yùn)動(dòng)。NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)據(jù)存儲(chǔ),相對(duì)于目前鋪天蓋地的關(guān)系型數(shù)據(jù)庫(kù)運(yùn)用,這一概念無(wú)疑是一種全新的思維的注入。 ?閱讀全文 Redis集群架構(gòu)講師:李興華 Redis是現(xiàn)在使用最為廣泛的NoSQL數(shù)據(jù)庫(kù)技術(shù),其自身不僅擁有著良好的操作性能,也被廣

繼續(xù)訪問

MySQL的teaching表建立_MySQL-一- 創(chuàng)建數(shù)據(jù)表

問題一:如何驗(yàn)證MySQL數(shù)據(jù)庫(kù)安裝成功?問題二:如何用客戶端navicat連接到MySQL數(shù)據(jù)庫(kù)?練習(xí):創(chuàng)建學(xué)校數(shù)據(jù)庫(kù)的表2.創(chuàng)建數(shù)據(jù)庫(kù)2.1 創(chuàng)建學(xué)生表student2.2創(chuàng)建成績(jī)表score2.3創(chuàng)建課程表course2.4創(chuàng)建教師表 teacher注:這里教師姓名可以為null3.練習(xí)插入數(shù)據(jù)3.1 向?qū)W生表里添加數(shù)據(jù)3.2向成績(jī)表中添加數(shù)據(jù)3.3向課程表中添加數(shù)據(jù)3.4向教師表中添加數(shù)據(jù)...

繼續(xù)訪問

學(xué)生選課在MYSQL創(chuàng)建表_設(shè)要建立“學(xué)生選課”數(shù)據(jù)庫(kù),庫(kù)中包括學(xué)生、課程和選課 3 個(gè)表,其表結(jié)構(gòu)為: 學(xué)生(學(xué)號(hào),姓名,性別,年齡,所在系) 課程(課程號(hào),課程名,先行課) 選課(學(xué)號(hào),課程號(hào),成...

【單選題】濕空氣的下列參數(shù):I.干球溫度、II.濕球溫度、III.露點(diǎn)溫度,它們之間的大小關(guān)系是【填空題】在缺省情況下,所創(chuàng)建的索引是_________索引?!酒渌渴褂?T-SQL 命令,完成下面的操作。 1 .創(chuàng)建學(xué)生成績(jī)視圖(學(xué)號(hào),姓名,課程編號(hào),課程名稱,成績(jī)) 。 2 .創(chuàng)建信息系學(xué)生視圖(學(xué)號(hào),姓名,性別,系名,出生日期,民族,總學(xué)分,備注)。 3 .創(chuàng)建優(yōu)秀學(xué)生視圖(學(xué)號(hào),姓名,平均...

繼續(xù)訪問

用sql語(yǔ)句創(chuàng)建一個(gè)教師表

sql

寫評(píng)論

評(píng)論

35

7

分享

前往CSDN APP閱讀全文

閱讀體驗(yàn)更佳

CSDN

成就一億技術(shù)人

前往

Chrome瀏覽器

繼續(xù)

打開CSDN APP閱讀體驗(yàn)更佳

常見的nosql數(shù)據(jù)庫(kù)有哪些

顧名思義就是非關(guān)系型數(shù)據(jù)庫(kù),它的出現(xiàn),就是為了解決關(guān)系型數(shù)據(jù)庫(kù)存在的一些問題,可以用NoSQL來(lái)進(jìn)行彌補(bǔ),現(xiàn)在聽得比較多的NoSQL數(shù)據(jù)庫(kù)有Redis、MongoDB、HBase等。

什么是NoSQL數(shù)據(jù)庫(kù)?

NoSQL,指的是非關(guān)系型的數(shù)據(jù)庫(kù)。

NoSQL 是Not Only SQL 的縮寫,意思是“不僅僅是 SQL”,而不是“不使用 SQL”。

NoSQL 的出現(xiàn)可以解決傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)所不能解決的問題。

簡(jiǎn)述什么是nosql數(shù)據(jù)庫(kù),并列舉兩種常見的nosql數(shù)據(jù)庫(kù)名稱及其特點(diǎn)

NoSQL太火,冒出太多產(chǎn)品了,保守估計(jì)也成百上千了。

互聯(lián)網(wǎng)公司常用的基本集中在以下幾種,每種只舉一個(gè)比較常見或者應(yīng)用比較成功的例子吧。

1. In-Memory KV Store : Redis

in memory key-value store,同時(shí)提供了更加豐富的數(shù)據(jù)結(jié)構(gòu)和運(yùn)算的能力,成功用法是替代memcached,通過(guò)checkpoint和commit log提供了快速的宕機(jī)恢復(fù),同時(shí)支持replication提供讀可擴(kuò)展和高可用。

2. Disk-Based KV Store: Leveldb

真正基于磁盤的key-value storage, 模型單一簡(jiǎn)單,數(shù)據(jù)量不受限于內(nèi)存大小,數(shù)據(jù)落盤高可靠,Google的幾位大神出品的精品,LSM模型天然寫優(yōu)化,順序?qū)懕P的方式對(duì)于新硬件ssd再適合不過(guò)了,不足是僅提供了一個(gè)庫(kù),需要自己封裝server端。

3. Document Store: Mongodb

分布式nosql,具備了區(qū)別mysql的最大亮點(diǎn):可擴(kuò)展性。mongodb 最新引人的莫過(guò)于提供了sql接口,是目前nosql里最像mysql的,只是沒有ACID的特性,發(fā)展很快,支持了索引等特性,上手容易,對(duì)于數(shù)據(jù)量遠(yuǎn)超內(nèi)存限制的場(chǎng)景來(lái)說(shuō),還需要慎重。

4. Column Table Store: HBase

這個(gè)富二代似乎不用贅述了,最大的優(yōu)勢(shì)是開源,對(duì)于普通的scan和基于行的get等基本查詢,性能完全不是問題,只是只提供裸的api,易用性上是短板,可擴(kuò)展性方面是最強(qiáng)的,其次坐上了Hadoop的快車,社區(qū)發(fā)展很快,各種基于其上的開源產(chǎn)品不少,來(lái)解決諸如join、聚集運(yùn)算等復(fù)雜查詢。

nosql數(shù)據(jù)庫(kù)是什么 具有代表性以key-value的形式存儲(chǔ)的

什么是NoSQL

大家有沒有聽說(shuō)過(guò)“NoSQL”呢?近年,這個(gè)詞極受關(guān)注。看到“NoSQL”這個(gè)詞,大家可能會(huì)誤以為是“No!SQL”的縮寫,并深感憤怒:“SQL怎么會(huì)沒有必要了呢?”但實(shí)際上,它是“Not Only SQL”的縮寫。它的意義是:適用關(guān)系型數(shù)據(jù)庫(kù)的時(shí)候就使用關(guān)系型數(shù)據(jù)庫(kù),不適用的時(shí)候也沒有必要非使用關(guān)系型數(shù)據(jù)庫(kù)不可,可以考慮使用更加合適的數(shù)據(jù)存儲(chǔ)。

為彌補(bǔ)關(guān)系型數(shù)據(jù)庫(kù)的不足,各種各樣的NoSQL數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生。

為了更好地了解本書所介紹的NoSQL數(shù)據(jù)庫(kù),對(duì)關(guān)系型數(shù)據(jù)庫(kù)的理解是必不可少的。那么,就讓我們先來(lái)看一看關(guān)系型數(shù)據(jù)庫(kù)的歷史、分類和特征吧。

關(guān)系型數(shù)據(jù)庫(kù)簡(jiǎn)史

1969年,埃德加?6?1弗蘭克?6?1科德(Edgar Frank Codd)發(fā)表了劃時(shí)代的論文,首次提出了關(guān)系數(shù)據(jù)模型的概念。但可惜的是,刊登論文的《IBM Research Report》只是IBM公司的內(nèi)部刊物,因此論文反響平平。1970年,他再次在刊物《Communication of the ACM》上發(fā)表了題為“A Relational Model of Data for Large Shared Data banks”(大型共享數(shù)據(jù)庫(kù)的關(guān)系模型)的論文,終于引起了大家的關(guān)注。

科德所提出的關(guān)系數(shù)據(jù)模型的概念成為了現(xiàn)今關(guān)系型數(shù)據(jù)庫(kù)的基礎(chǔ)。當(dāng)時(shí)的關(guān)系型數(shù)據(jù)庫(kù)由于硬件性能低劣、處理速度過(guò)慢而遲遲沒有得到實(shí)際應(yīng)用。但之后隨著硬件性能的提升,加之使用簡(jiǎn)單、性能優(yōu)越等優(yōu)點(diǎn),關(guān)系型數(shù)據(jù)庫(kù)得到了廣泛的應(yīng)用。

通用性及高性能

雖然本書是講解NoSQL數(shù)據(jù)庫(kù)的,但有一個(gè)重要的大前提,請(qǐng)大家一定不要誤解。這個(gè)大前提就是“關(guān)系型數(shù)據(jù)庫(kù)的性能絕對(duì)不低,它具有非常好的通用性和非常高的性能”。毫無(wú)疑問,對(duì)于絕大多數(shù)的應(yīng)用來(lái)說(shuō)它都是最有效的解決方案。

突出的優(yōu)勢(shì)

關(guān)系型數(shù)據(jù)庫(kù)作為應(yīng)用廣泛的通用型數(shù)據(jù)庫(kù),它的突出優(yōu)勢(shì)主要有以下幾點(diǎn):

保持?jǐn)?shù)據(jù)的一致性(事務(wù)處理)

由于以標(biāo)準(zhǔn)化為前提,數(shù)據(jù)更新的開銷很小(相同的字段基本上都只有一處)

可以進(jìn)行JOIN等復(fù)雜查詢

存在很多實(shí)際成果和專業(yè)技術(shù)信息(成熟的技術(shù))

這其中,能夠保持?jǐn)?shù)據(jù)的一致性是關(guān)系型數(shù)據(jù)庫(kù)的最大優(yōu)勢(shì)。在需要嚴(yán)格保證數(shù)據(jù)一致性和處理完整性的情況下,用關(guān)系型數(shù)據(jù)庫(kù)是肯定沒有錯(cuò)的。但是有些情況不需要JOIN,對(duì)上述關(guān)系型數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)也沒有什么特別需要,這時(shí)似乎也就沒有必要拘泥于關(guān)系型數(shù)據(jù)庫(kù)了。

關(guān)系型數(shù)據(jù)庫(kù)的不足

不擅長(zhǎng)的處理

就像之前提到的那樣,關(guān)系型數(shù)據(jù)庫(kù)的性能非常高。但是它畢竟是一個(gè)通用型的數(shù)據(jù)庫(kù),并不能完全適應(yīng)所有的用途。具體來(lái)說(shuō)它并不擅長(zhǎng)以下處理:

大量數(shù)據(jù)的寫入處理

為有數(shù)據(jù)更新的表做索引或表結(jié)構(gòu)(schema)變更

字段不固定時(shí)應(yīng)用

對(duì)簡(jiǎn)單查詢需要快速返回結(jié)果的處理

。。。。。。

NoSQL數(shù)據(jù)庫(kù)

為了彌補(bǔ)關(guān)系型數(shù)據(jù)庫(kù)的不足(特別是最近幾年),NoSQL數(shù)據(jù)庫(kù)出現(xiàn)了。關(guān)系型數(shù)據(jù)庫(kù)應(yīng)用廣泛,能進(jìn)行事務(wù)處理和JOIN等復(fù)雜處理。相對(duì)地,NoSQL數(shù)據(jù)庫(kù)只應(yīng)用在特定領(lǐng)域,基本上不進(jìn)行復(fù)雜的處理,但它恰恰彌補(bǔ)了之前所列舉的關(guān)系型數(shù)據(jù)庫(kù)的不足之處。

易于數(shù)據(jù)的分散

如前所述,關(guān)系型數(shù)據(jù)庫(kù)并不擅長(zhǎng)大量數(shù)據(jù)的寫入處理。原本關(guān)系型數(shù)據(jù)庫(kù)就是以JOIN為前提的,就是說(shuō),各個(gè)數(shù)據(jù)之間存在關(guān)聯(lián)是關(guān)系型數(shù)據(jù)庫(kù)得名的主要原因。為了進(jìn)行JOIN處理,關(guān)系型數(shù)據(jù)庫(kù)不得不把數(shù)據(jù)存儲(chǔ)在同一個(gè)服務(wù)器內(nèi),這不利于數(shù)據(jù)的分散。相反,NoSQL數(shù)據(jù)庫(kù)原本就不支持JOIN處理,各個(gè)數(shù)據(jù)都是獨(dú)立設(shè)計(jì)的,很容易把數(shù)據(jù)分散到多個(gè)服務(wù)器上。由于數(shù)據(jù)被分散到了多個(gè)服務(wù)器上,減少了每個(gè)服務(wù)器上的數(shù)據(jù)量,即使要進(jìn)行大量數(shù)據(jù)的寫入操作,處理起來(lái)也更加容易。同理,數(shù)據(jù)的讀入操作當(dāng)然也同樣容易。

提升性能和增大規(guī)模

下面說(shuō)一點(diǎn)題外話,如果想要使服務(wù)器能夠輕松地處理更大量的數(shù)據(jù),那么只有兩個(gè)選擇:一是提升性能,二是增大規(guī)模。下面我們來(lái)整理一下這兩者的不同。

首先,提升性能指的就是通過(guò)提升現(xiàn)行服務(wù)器自身的性能來(lái)提高處理能力。這是非常簡(jiǎn)單的方法,程序方面也不需要進(jìn)行變更,但需要一些費(fèi)用。若要購(gòu)買性能翻倍的服務(wù)器,需要花費(fèi)的資金往往不只是原來(lái)的2倍,可能需要多達(dá)5到10倍。這種方法雖然簡(jiǎn)單,但是成本較高。

另一方面,增大規(guī)模指的是使用多臺(tái)廉價(jià)的服務(wù)器來(lái)提高處理能力。它需要對(duì)程序進(jìn)行變更,但由于使用廉價(jià)的服務(wù)器,可以控制成本。另外,以后只要依葫蘆畫瓢增加廉價(jià)服務(wù)器的數(shù)量就可以了。

不對(duì)大量數(shù)據(jù)進(jìn)行處理的話就沒有使用的必要嗎?

NoSQL數(shù)據(jù)庫(kù)基本上來(lái)說(shuō)為了“使大量數(shù)據(jù)的寫入處理更加容易(讓增加服務(wù)器數(shù)量更容易)”而設(shè)計(jì)的。但如果不是對(duì)大量數(shù)據(jù)進(jìn)行操作的話,NoSQL數(shù)據(jù)庫(kù)的應(yīng)用就沒有意義嗎?

答案是否定的。的確,它在處理大量數(shù)據(jù)方面很有優(yōu)勢(shì)。但實(shí)際上NoSQL數(shù)據(jù)庫(kù)還有各種各樣的特點(diǎn),如果能夠恰當(dāng)?shù)乩眠@些特點(diǎn)將會(huì)是非常有幫助。具體的例子將會(huì)在第2章和第3章進(jìn)行介紹,這些用途將會(huì)讓你感受到利用NoSQL的好處。

希望順暢地對(duì)數(shù)據(jù)進(jìn)行緩存(Cache)處理

希望對(duì)數(shù)組類型的數(shù)據(jù)進(jìn)行高速處理

希望進(jìn)行全部保存

多樣的NoSQL數(shù)據(jù)庫(kù)

NoSQL數(shù)據(jù)庫(kù)存在著“key-value存儲(chǔ)”、“文檔型數(shù)據(jù)庫(kù)”、“列存儲(chǔ)數(shù)據(jù)庫(kù)”等各種各樣的種類,每種數(shù)據(jù)庫(kù)又包含各自的特點(diǎn)。下一節(jié)讓我們一起來(lái)了解一下NoSQL數(shù)據(jù)庫(kù)的種類和特點(diǎn)。

NoSQL數(shù)據(jù)庫(kù)是什么

NoSQL說(shuō)起來(lái)簡(jiǎn)單,但實(shí)際上到底有多少種呢?我在提筆的時(shí)候,到NoSQL的官方網(wǎng)站上確認(rèn)了一下,竟然已經(jīng)有122種了。另外官方網(wǎng)站上也介紹了本書沒有涉及到的圖形數(shù)據(jù)庫(kù)和對(duì)象數(shù)據(jù)庫(kù)等各個(gè)類別。不知不覺間,原來(lái)已經(jīng)出現(xiàn)了這么多的NoSQL數(shù)據(jù)庫(kù)啊。

本節(jié)將為大家介紹具有代表性的NoSQL數(shù)據(jù)庫(kù)。

key-value存儲(chǔ)

這是最常見的NoSQL數(shù)據(jù)庫(kù),它的數(shù)據(jù)是以key-value的形式存儲(chǔ)的。雖然它的處理速度非???,但是基本上只能通過(guò)key的完全一致查詢獲取數(shù)據(jù)。根據(jù)數(shù)據(jù)的保存方式可以分為臨時(shí)性、永久性和兩者兼具三種。

臨時(shí)性

memcached屬于這種類型。所謂臨時(shí)性就是 “數(shù)據(jù)有可能丟失”的意思。memcached把所有數(shù)據(jù)都保存在內(nèi)存中,這樣保存和讀取的速度非???,但是當(dāng)memcached停止的時(shí)候,數(shù)據(jù)就不存在了。由于數(shù)據(jù)保存在內(nèi)存中,所以無(wú)法操作超出內(nèi)存容量的數(shù)據(jù)(舊數(shù)據(jù)會(huì)丟失)。

在內(nèi)存中保存數(shù)據(jù)

可以進(jìn)行非??焖俚谋4婧妥x取處理

數(shù)據(jù)有可能丟失

永久性

Tokyo Tyrant、Flare、ROMA等屬于這種類型。和臨時(shí)性相反,所謂永久性就是“數(shù)據(jù)不會(huì)丟失”的意思。這里的key-value存儲(chǔ)不像memcached那樣在內(nèi)存中保存數(shù)據(jù),而是把數(shù)據(jù)保存在硬盤上。與memcached在內(nèi)存中處理數(shù)據(jù)比起來(lái),由于必然要發(fā)生對(duì)硬盤的IO操作,所以性能上還是有差距的。但數(shù)據(jù)不會(huì)丟失是它最大的優(yōu)勢(shì)。

在硬盤上保存數(shù)據(jù)

可以進(jìn)行非??焖俚谋4婧妥x取處理(但無(wú)法與memcached相比)

數(shù)據(jù)不會(huì)丟失

兩者兼具

Redis屬于這種類型。Redis有些特殊,臨時(shí)性和永久性兼具,且集合了臨時(shí)性key-value存儲(chǔ)和永久性key-value存儲(chǔ)的優(yōu)點(diǎn)。Redis首先把數(shù)據(jù)保存到內(nèi)存中,在滿足特定條件(默認(rèn)是15分鐘一次以上,5分鐘內(nèi)10個(gè)以上,1分鐘內(nèi)10000個(gè)以上的key發(fā)生變更)的時(shí)候?qū)?shù)據(jù)寫入到硬盤中。這樣既確保了內(nèi)存中數(shù)據(jù)的處理速度,又可以通過(guò)寫入硬盤來(lái)保證數(shù)據(jù)的永久性。這種類型的數(shù)據(jù)庫(kù)特別適合于處理數(shù)組類型的數(shù)據(jù)。

同時(shí)在內(nèi)存和硬盤上保存數(shù)據(jù)

可以進(jìn)行非??焖俚谋4婧妥x取處理

保存在硬盤上的數(shù)據(jù)不會(huì)消失(可以恢復(fù))

適合于處理數(shù)組類型的數(shù)據(jù)

面向文檔的數(shù)據(jù)庫(kù)

MongoDB、CouchDB屬于這種類型。它們屬于NoSQL數(shù)據(jù)庫(kù),但與key-value存儲(chǔ)相異。

不定義表結(jié)構(gòu)

面向文檔的數(shù)據(jù)庫(kù)具有以下特征:即使不定義表結(jié)構(gòu),也可以像定義了表結(jié)構(gòu)一樣使用。關(guān)系型數(shù)據(jù)庫(kù)在變更表結(jié)構(gòu)時(shí)比較費(fèi)事,而且為了保持一致性還需修改程序。然而NoSQL數(shù)據(jù)庫(kù)則可省去這些麻煩(通常程序都是正確的),確實(shí)是方便快捷。

可以使用復(fù)雜的查詢條件

跟key-value存儲(chǔ)不同的是,面向文檔的數(shù)據(jù)庫(kù)可以通過(guò)復(fù)雜的查詢條件來(lái)獲取數(shù)據(jù)。雖然不具備事務(wù)處理和JOIN這些關(guān)系型數(shù)據(jù)庫(kù)所具有的處理能力,但除此以外的其他處理基本上都能實(shí)現(xiàn)。這是非常容易使用的NoSQL數(shù)據(jù)庫(kù)。

不需要定義表結(jié)構(gòu)

可以利用復(fù)雜的查詢條件

面向列的數(shù)據(jù)庫(kù)

Cassandra、Hbase、HyperTable屬于這種類型。由于近年來(lái)數(shù)據(jù)量出現(xiàn)爆發(fā)性增長(zhǎng),這種類型的NoSQL數(shù)據(jù)庫(kù)尤其引人注目。

面向行的數(shù)據(jù)庫(kù)和面向列的數(shù)據(jù)庫(kù)

普通的關(guān)系型數(shù)據(jù)庫(kù)都是以行為單位來(lái)存儲(chǔ)數(shù)據(jù)的,擅長(zhǎng)進(jìn)行以行為單位的讀入處理,比如特定條件數(shù)據(jù)的獲取。因此,關(guān)系型數(shù)據(jù)庫(kù)也被稱為面向行的數(shù)據(jù)庫(kù)。相反,面向列的數(shù)據(jù)庫(kù)是以列為單位來(lái)存儲(chǔ)數(shù)據(jù)的,擅長(zhǎng)以列為單位讀入數(shù)據(jù)。

高擴(kuò)展性

面向列的數(shù)據(jù)庫(kù)具有高擴(kuò)展性,即使數(shù)據(jù)增加也不會(huì)降低相應(yīng)的處理速度(特別是寫入速度),所以它主要應(yīng)用于需要處理大量數(shù)據(jù)的情況。另外,利用面向列的數(shù)據(jù)庫(kù)的優(yōu)勢(shì),把它作為批處理程序的存儲(chǔ)器來(lái)對(duì)大量數(shù)據(jù)進(jìn)行更新也是非常有用的。但由于面向列的數(shù)據(jù)庫(kù)跟現(xiàn)行數(shù)據(jù)庫(kù)存儲(chǔ)的思維方式有很大不同,應(yīng)用起來(lái)十分困難。

高擴(kuò)展性(特別是寫入處理)

應(yīng)用十分困難

最近,像Twitter和Facebook這樣需要對(duì)大量數(shù)據(jù)進(jìn)行更新和查詢的網(wǎng)絡(luò)服務(wù)不斷增加,面向列的數(shù)據(jù)庫(kù)的優(yōu)勢(shì)對(duì)其中一些服務(wù)是非常有用的,但是由于這與本書所要介紹的內(nèi)容關(guān)系不大,就不進(jìn)行詳細(xì)介紹了。

總結(jié):

NoSQL并不是No-SQL,而是指Not Only SQL。

NoSQL的出現(xiàn)是為了彌補(bǔ)SQL數(shù)據(jù)庫(kù)因?yàn)槭聞?wù)等機(jī)制帶來(lái)的對(duì)海量數(shù)據(jù)、高并發(fā)請(qǐng)求的處理的性能上的欠缺。

NoSQL不是為了替代SQL而出現(xiàn)的,它是一種替補(bǔ)方案,而不是解決方案的首選。

絕大多數(shù)的NoSQL產(chǎn)品都是基于大內(nèi)存和高性能隨機(jī)讀寫的(比如具有更高性能的固態(tài)硬盤陣列),一般的小型企業(yè)在選擇NoSQL時(shí)一定要慎重!不要為了NoSQL而NoSQL,可能會(huì)導(dǎo)致花了冤枉錢又耽擱了項(xiàng)目進(jìn)程。

NoSQL不是萬(wàn)能的,但在大型項(xiàng)目中,你往往需要它!

一、NoSQL數(shù)據(jù)庫(kù)簡(jiǎn)介

Web1.0的時(shí)代,數(shù)據(jù)訪問量很有限,用一夫當(dāng)關(guān)的高性能的單點(diǎn)服務(wù)器可以解決大部分問題。

隨著Web2.0的時(shí)代的到來(lái),用戶訪問量大幅度提升,同時(shí)產(chǎn)生了大量的用戶數(shù)據(jù)。加上后來(lái)的智能移動(dòng)設(shè)備的普及,所有的互聯(lián)網(wǎng)平臺(tái)都面臨了巨大的性能挑戰(zhàn)。

NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,泛指非關(guān)系型的數(shù)據(jù)庫(kù)。

NoSQL 不依賴業(yè)務(wù)邏輯方式存儲(chǔ),而以簡(jiǎn)單的key-value模式存儲(chǔ)。因此大大的增加了數(shù)據(jù)庫(kù)的擴(kuò)展能力。

Memcache Memcache Redis Redis MongoDB MongoDB 列式數(shù)據(jù)庫(kù) 列式數(shù)據(jù)庫(kù) Hbase Hbase

HBase是Hadoop項(xiàng)目中的數(shù)據(jù)庫(kù)。它用于需要對(duì)大量的數(shù)據(jù)進(jìn)行隨機(jī)、實(shí)時(shí)的讀寫操作的場(chǎng)景中。

HBase的目標(biāo)就是處理數(shù)據(jù)量非常龐大的表,可以用普通的計(jì)算機(jī)處理超過(guò)10億行數(shù)據(jù),還可處理有數(shù)百萬(wàn)列元素的數(shù)據(jù)表。

Cassandra Cassandra

Apache Cassandra是一款免費(fèi)的開源NoSQL數(shù)據(jù)庫(kù),其設(shè)計(jì)目的在于管理由大量商用服務(wù)器構(gòu)建起來(lái)的龐大集群上的海量數(shù)據(jù)集(數(shù)據(jù)量通常達(dá)到PB級(jí)別)。在眾多顯著特性當(dāng)中,Cassandra最為卓越的長(zhǎng)處是對(duì)寫入及讀取操作進(jìn)行規(guī)模調(diào)整,而且其不強(qiáng)調(diào)主集群的設(shè)計(jì)思路能夠以相對(duì)直觀的方式簡(jiǎn)化各集群的創(chuàng)建與擴(kuò)展流程。

主要應(yīng)用:社會(huì)關(guān)系,公共交通網(wǎng)絡(luò),地圖及網(wǎng)絡(luò)拓譜(n*(n-1)/2)


網(wǎng)站欄目:nosql編程題庫(kù),典型的nosql數(shù)據(jù)庫(kù)是
新聞來(lái)源:http://weahome.cn/article/hdcooo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部