日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库知识点总结归纳

發布時間:2023/12/31 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库知识点总结归纳 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據庫知識點總結歸納

一、基本概念

1、數據

(1)數據的定義:對客觀事物的符號表示,如圖形符號、數字、字母等,數據是數據庫中存儲的基本對象。

(2)數據的種類:文字、圖形、圖像、聲音

(3)數據的特點:數據與其語義是不可分的

?

2、數據庫

?數據庫(DataBase簡稱DB)是按照數據結構來組織、存儲和管理數據的倉庫。

?

3、數據庫管理系統(比如:MySql)

(1)數據庫管理系統(Database Management System 簡稱DBMS)是一種操縱和管理數據庫的大型軟件,是用于建立、使用和維護數據庫。

(2)關系型數據庫管理系統稱為RDBMS,R指Relation。

(3)DBMS的作用:它對數據庫進行統一的管理和控制,以保證數據庫的安全性和完整性。

?

4、數據庫系統

數據庫系統(Database System,簡稱DBS),是由數據庫及其管理軟件組成的系統。

?

5、數據庫管理員

數據庫管理員(Database Administrator,簡稱DBA),負責全面管理和控制數據庫系統。

?

6、DBA、DBMS、DB和DBS之間的關系

7、數據庫的優點

(1)數據按一定的數據模型組織、描述和儲存

(2)可為各種用戶共享

(3)冗余度較小,節省存儲空間

(4)易擴展,編寫有關數據庫應用程序

?

二、數據庫管理系統(DBMS)

1、DBMS的主要功能

(1)數據定義功能:提供數據定義語言(DDL)

  用于定義數據庫的所有特性和屬性,尤其是行布局、列定義、鍵列(有時是選鍵方法)、文件位置和存儲策略,包括命令:

  DROP(刪除數據庫)

           刪除數據庫:drop database if exists 數據庫名

  CREATE(創建數據庫)

           創建表:create table if not exists 表名(列名 列名約束)

  ALTER(修改數據庫)

           添加列名:alter table 表名 add 列名 約束條件

           修改列名:alter table 表名 change 老列名 新列名 數據類型

           修改列字段數據類型:alter table 表名 modity 列名 數據類型

           刪除列名:alter table 表名 drop 列名

           修改表名:alter table 表名 rename 新表名

  GRANT(賦予權限)

  REVOKE(從當前用戶或組中取消權限)、TRUNCATE(只刪除表中的所有數據,不刪除表的結構)

注意:truncate table命令將快速刪除數據表中的所有記錄,但保留數據表結構。這種快速刪除與delete from數據表的輸出全部數據表記錄不一樣,delete命令刪除的數據將存儲在系統回滾段中,需要的時候,數據可以回滾恢復,而truncate命令刪除的數據是不可恢復的。

?

(2)數據操縱功能:提供數據操縱語言(DML)

操縱數據實現對數據庫的基本操作:

  SELECT(查詢)

          select from 表名 where 條件(條件1 and 條件2)

  INSERT(插入)

          insert into 表名(列1,列2) values(' ',' '),(' ',' '),(' ',' ')

  DELETE(刪除)

          delete from 表名 where 條件

  UPDATE(修改)

          update 表名 set 列名=' ',列名=' ' where 條件

?

(3)數據庫的運行管理

  a、保證數據的安全性、完整性

  b、多用戶對數據的并發使用

  c、發生故障后的系統恢復

?

(4)數據庫的建立和維護功能(實用程序)

  a、數據庫數據批量裝載

  b、數據庫轉儲

  c、介質故障的修復

  d、數據庫的重組織

  e、性能監視

?

2、DBMS的分類(大公司首選oracle-----數據庫中的貴族)

  小型數據庫:Access、foxbase、sqlite

  中型數據庫:mysql、sql server、infomix

  大型數據庫:Sybase、Oracle、db2

?  

  注意:Mysql、SQL server、Oracle、DB2三者的特點

     Oracle:

      ? ?(1)最穩定、功能最強大、性能最好、容量無限、最昂貴、重量級,分布式數據庫 ?系統,適用于大型的項目

      ?(2)"關系----對象"型數據庫

    ? ?MySQL:

    ?  (1)輕量級、易安裝、易管理、速度比較快,使用起來方便,適用于中小型企業

       (2)開源、免費、與PHP組成經典的LAMP組合

    ?  SQL Server:

      ?(1)針對不同用戶群體的五個特殊的版本

       (2)易用性好

     ??DB2:

      ?(1)應用于大型應用系統,具有較好的可伸縮性

?

3、B/S和C/S

  B/S瀏覽器服務器Browser Server

    客戶不需要安裝程序,只需要有瀏覽器引擎即可:淘寶

  C/S客戶端服務器Client Server

    客戶需要安裝程序,比如:QQ

?

三、MySQL的概念、特性以及不足

1、概念

(1)什么是MySQL

  MySQL原本是一個開放源代碼的關系數據庫管理系統,原開發者為瑞典的MySQL AB公司,該公司于2008年被Sun公司收購。2009年,甲骨文公司Oracle收購Sun公司,MySQL成為Oracle旗下產品。

  MySQL在過去由于性能高、成本低、可靠性好,已經成為最流行的開源數據庫,因此被廣泛地應用在Internet上的中小型網站中。隨著MySQL的不斷成熟,它也逐漸用于更多規模網站和應用,比如Google和Facebook等網站。

?

(2)什么是SQL

  SQL是Structured Query Language(結構化查詢語言)的縮寫。SQL是專為數據庫而建立的操作命令集,是一種功能齊全的數據庫語言。在使用它時,只需要發出“做什么”的命令,“怎么做”是不用使用者考慮的。

?

2、MySQL的特征:

  (1)性能快捷、優化SQL語言

  (2)容易使用

  (3)多線程和可靠性

  (4)多用戶支持

  (5)可移植性和開發源代碼

  (6)遵循國際標準和國際化支持

  (7)為多種編程語言提供API

?

3、MySQL5新特性

  (1)子查詢

  (2)視圖

  (3)存儲過程

  (4)觸發器

  (5)事務處理

  (6)熱備份

  (7)二進制Bit類型

   ? ? ? 等等......

?

4、MySQL的不足

  (1)不能直接處理XML數據

  (2)一些功能上支持得不夠完善和成熟

  (3)不能提供任何OLAP(實時分析系統)功能

?

四、MySQL的使用

1、用命令行來執行數據庫(DDL數據庫定義語言)

  (1)輸入登錄密碼(連接的密碼)

?

  (2)顯示MySQL中所有的數據庫

show databases;

  

  (3)退出MySQL

     使用quit、exit、\q退出MySQL

?

  (4)創建數據庫(create database 數據庫名) 

create datebase school

     創建數據庫時,判斷是否具有同名數據庫再創建

create datebase if not exists school

     創建數據庫后,為數據庫設置字符編碼

alter database school character set utf8

  

  (5)刪除數據庫(drop database 數據庫名)

drop database school

  

  (6)使用某個數據庫(user 數據庫名)

     注意:進入到該數據庫,例如你新建表的時候要先寫這句話,這樣保證了我的表創建在該數據庫下,反之會默認放置在默認的數據庫中  

use school

?

  (7)創建表(create table 表名 (列名1 ?數據類型,.......))

create table if not exists user(id int not null primary key,username varchar(40),password varchar(50),power int not null)

  ?  ? ? 創建表時,是id自動遞增用auto_increment

create table if not exists user(id int not null auto_increment primary key,username varchar(40),password varchar(50),power int not null)

   注意:關于數據類型:char和varchar

   char(20):分配20個空間,當只使用5個空間時,沒用的空間會被空格填補

   varchar(20):分配20個空間,當只使用5個空間時,那么空間會占用6個,其中一個保存數據長度。

   因此,建議使用varchar

?

?  (8)顯示選擇的數據庫中所有的表 

show tables

?

  (9)查看表里面的詳細信息(desc 表名)

desc user

?

  (10)刪除表(drop table 表名)

drop table user

?

  (11)刪除一個表的主鍵(alter table 表名 drop primary key)

alter table user drop primary key

?

  (12)往表中添加一列(alter table 表名 add 要添加的列名 數據類型)

alter table user add address varchar(50)

?

  (13)往id列后面添加一列

alter table user add phone varchar(50) after id

?

  (14)增加一列,使其位于第一列

alter table user add id1 int not null first

?

  (15)刪除某一列(alter table 表名 drop 列名)

alter table user drop id1

?

  (16)修改表字段

  ?a、使用change可以修改字段名稱和該字段的數據類型(alter table 表名 change 字段名 新字段名 新數據類型)

alter table user change id userid varchar(30)

   b、使用Modify只能修改數據類型(alter table 表名 modify 字段名 新數據類型)

alter table user modify password varchar(30)

?

2、Navicat進行增刪改查(DML數據操縱語言)

  Navicat代碼注釋的三種:

              --注釋的代碼(注意空格)

              #注釋的代碼

              /*注釋的代碼*/

  (1)創建一張表

CREATE TABLE student( stuId VARCHAR(20) NOT NULL PRIMARY KEY, stuName VARCHAR(40) NOT NULL, stuMsg VARCHAR(80) NOT NULL )

?

  (2)往表中添加記錄

     ?insert into 表名(字段1,字段2,......) values(值1,值2,......)

INSERT INTO student(stuId,stuName,stuSex,stuPassword) VALUES('1','楊惠霞','','123456'), ('2','朱元梅','','985082'), ('3','楊修志','','435291'), ('4','祝橫崗','','648310')

?

  (3)查找表中名字為祝橫崗,密碼為648310的記錄,并列條件使用and

SELECT * FROM student WHERE stuName='祝橫崗' AND stuPassword='648310'

?

  (4)修改表中的記錄(update 表名 set 列名=‘xxx’ where ......)

? ? ? ? ? ?將id為4的字段stuName的值改成“關雎宮”

UPDATE student SET stuName='關雎宮' WHERE stuId='4'

?

  (5)刪除表中的記錄(delete from 表名 where ......)

     ?刪除編號為3的數據

DELETE FROM student WHERE stuId='3'

?

?

五、MySQL數據類型

1、數據類型種類

(1)數值型

      a、整型

          可以由十進制和十六進制表示,整數由數字序列組成,如:100,0xA

      b、浮點型

          浮點數由一個數字加一個小數點再加上一個數字組成,如:10.5

(2)字符串

      由單引號或者雙引號括起來的字符或者數字,如:'abc10',"abc"

      字符串中要用轉義字符才能表示的特殊符號

串轉義序列
序列 說明 序列 說明
\0 NUL(ASCII 0) \n 新行
\' 單引號 \r 回車
\"" 雙引號 \t 制表符
\b 退格 \\ 反斜杠

(3)日期和時間值

  存儲如"2005-1-1"或"12:00:00"這樣數值的值,MySQL中日期是按"年-月-日"的順序

(4)NULL值

  是一種無類型的值,表示“空,什么也沒有”

?

2、數值列類型

(1)所有數值列類型的類型名以及其說明和所占的字節數見下表:

數值列類型
類型名 說明 類型名 說明
TINYINT 非常小的整數 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? BIGINT 大整數
SMALLINT 較小整數 FLOAT 單精度浮點數
MEDIUMINT 中等大小的整數 DOUBLE 雙精度浮點數
INT 標準整數 DECIMAL 一個串的浮點數(多用于銀行的數值)

?

數值列類型的存儲需求
類型說明 存儲需求
TINYINT[(M)] 1字節
SMALLINT[(M)] 2字節
MEDIUMINT[(M)] 3字節
INT[(M)] 4字節
BIGINT[(M)] 8字節
FLOAT[(M,D)],FLOAT(4) 4字節
DOUBLE[(M,D)],FLOAT(8) 8字節
DECIMAL(M,D) M字節

M是從1到255的值,它表示列中值的字符數

?

M與D對DECIMAL(M,D)取值范圍的影響
類型說明 取值范圍(MySQL<3.23) 取值范圍(MySQL>=3.23)
DECIMAL(4,1) -9.9到99.9 -999.9到9999.9
DECIMAL(5,1) -99.9到999.9 -9999.9到99999.9
DECIMAL(6,1) -999.9到99999.9 -99999.9到999999.9
DECIMAL(6,2) -99.99到999.99 -9999.99到99999.99
DECIMAL(6,3) -9.999到99.999 -999.999到9999.999

對于每種浮點型,可指定一個最大的顯示尺寸M和小數位D,M和D對于DECIMAL是必須的

?

(2)數值列的完整性約束

a、auto_increment

  自動標識列,一個表中最多能有一個此屬性的列。對于想使用此屬性的列應該定義為not null,并定義為primary key或定義為unique鍵。

create table student(id int auto_increment not null primary key)

?

b、unsigned

  無符號,此屬性禁用負值,將數值的范圍從0開始。

create table student(num tinyint,num2 tinyint unsigned)

?

c、null和not null

  默認為null,即插入值時沒有在此字段插入值時自動填null,如果指定了not null,則必須在插入值時在此字段添入值,不允許插入null值。

?

d、default

  可以通過此屬性來指定一個缺省值,即如果沒有在此列添加值,那么默認添加default后指定值。

?

e、zerofill

  前導零填充數值類型值以達到列的顯示寬度。

3、字符串列類型

?所有字符串列類型及其說明和所占字節數見下表:

串列類型
類型名 說明
CHAR 定長字符串
VARCHAR 可變長字符串
TINYBLOB 非常小的BLOB(二進制大對象)
BLOB 小BLOB
MEDIUMBLOB 中等的BLOB
LONGBLOB 大BLOB
TINYTEXT 非常小的文本串
TEXT 小文本串
MEDIUMTEXT 中等文本串
LONGTEXT 大文本串
ENUM 枚舉:列可賦予某個枚舉成員
SET 集合:列可賦予多個集合成員

(1)CHAR和VARCHAR類型

  CHAR類型和VARCHAR類型長度范圍都是0~255之間的大小。他們之間的差異在于Mysql處理存儲的方式:

  CHAR把這個大小視為值的準確大小(如果值的長度不夠長,則用空格填補比較短的值)。

  VARCHAR類型把它視為最大值并且只使用了存儲字符串實際上需要的字節數(增加一個額外的字節記錄長度)。因而較短的值當被插入一個語句為VARCHAR類型的字段時,將不會用空格填補(然而,較長的值仍然被截短)。

?

(2)BLOB和TEXT類型

  ?BLOB是二進制大對象,如果想存儲二進制數,BLOB將是最佳選擇,而TEXT與之相同,只是BLOB按照二進制編碼排序(區分大小寫),TEXT按照字符文本模式排序(不區分大小寫)。

?

(3)ENUM和SET類型

  它們是特殊的串類型,其列值必須從固定的串集中選擇,二者差別為前者必須是只能選擇其中的一個值,而后者可以多選。(不推薦使用)

?

枚舉的例子:

alter table test2 add sex enum('',''); insert into test2 values(2,70,'');

?

4、日期和時間列類型

?所有時間和日期列類型的類型名及其說明和所占的字節數見下表:

?

日期與時間列類型
類型名 說明
DATE ‘YYYY-MM-DD’格式表示的日期值
TIME 'hh:mm:ss'格式表示的時間值
DATETIME 'YYYY-MM-DD hh:mm:ss'格式
TIMESTAMP 'YYYYMMDDhhmmss'格式表示的時間戳值
YEAR 'YYYY'格式的年份值

注意:(1)每個時間和日期列類型都有一個零值,當插入非法數值時就用零值來添加

   ?(2)表示日期時必須先按:年,月,日的順序給出

? ? ? ? (3)DATE,TIME,DATETIME分別是存儲日期,時間與日期和時間的組合,其格式為"YYYY-MM-DD","hh:mm:ss"和"YYYY-MM-DD hh:mm:ss",對于DATETIME類型,日期和時間部分都需要。

? ? ? ? (4)TIMESTAMP

      時間戳列類型以YYYYMMDDhhmmss的格式來表示值,主要用于記錄更改或創建某個記錄。

?

5、常見數據類型

常用的數據類型
分類 備注和說明 數據類型 說明
二進制數據類型 存儲非字符和文本的數據 BLOB 可用來存儲圖像
文本數據類型 字符數據包括任意字母、符號或者數字字符的組合 char 固定長度的非Unicode字符數據
varchar 可變長度非Unicode數據
text 存儲長文本信息
日期和時間 日期和時間在單引號內輸入 time 時間
date 日期
datetime 日期和時間
貨幣數據類型 用于財務數據 decimal 定點數
Bit數據類型 表示是/否的數據 bit 存儲布爾數據類型
數值型數據 該數據僅包含數字,包括整數、負數以及浮點數

int

smallint

整數

float

double

浮點數

?

6、常見的完整性約束

常見的完整性約束
類型 說明
PRIMARY KEY 主碼約束主鍵)
UNIQUE 唯一性約束
NOT NULL 非空值約束
AUTO_INCREMENT 用于整數列默認自增1
UNSIGNED 無符號整數
DEAULT?default_value 默認值約束
DEAULT?cur_timestamp

創建新記錄時默認保存當前時間(僅適用timestamp數據列)

ON UPDATE?cur_timestamp 修改記錄時默認保存當前時間(僅適用timestamp數據列)
CHARACTER SET name 指定字符集(僅使用字符串)

?

?

7、數據表的類型(在表上右鍵,點擊對象信息,可以看到表的類型)

?在創建一個新的MySQL數據表時,可以為它設置一個類型,其中最重要的3中類型是:

(1)MyISAM:成熟、穩定和易于管理

(2)InnoDB:加入事物、數據行級鎖定機制、外鍵約束條件、崩潰恢復等新功能(常用)

(3)HEAP:只存在于內存中,可做臨時表

create table tmp(...)ENGINE=MyISAM

?

8、主鍵和外鍵

(1)索引:優化查詢速度

(2)數據表之間的關聯/引用關系是依賴具體的主鍵(primary key)和外鍵(foreign key)建立起來的。

(3)主鍵:幫助MySQL以最快的速度把一條特點的數據記錄的位置確定下來

  ??注意:主鍵必須是唯一的

? ? ? ? ? ? ? ? 主鍵應該是緊湊的,因此整數類型比較適合

(4)外鍵:引用另外一個數據表的某條記錄

? ? ? ??注意:外鍵列類型盡可能與主鍵列類型保持一致

? ? ? ? ? ? ? ? ?外鍵列應該加上NOT NULL

例子:

  主鍵:

CREATE TABLE student(sid INT NOT NULL auto_increment PRIMARY KEY,name VARCHAR(20) NOT NULL )

?

  外鍵:(自動檢查外鍵是否匹配,僅適用InnoDB)

CREATE TABLE score(cid INT NOT NULL auto_increment PRIMARY KEY,score INT,sid INT,FOREIGN KEY(sid)REFERENCES student(sid) );

?

  創建完表之后再創建外鍵的方法:

  格式:ALTER TABLE 表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY(外鍵) REFERENCES 另一個表名(參考主鍵);

ALTER TABLE score ADD CONSTRAINT sid FOREIGN KEY(sid) REFERENCES student(sid);

?

  刪除外鍵:

  格式:ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名字(注意:這里是外鍵的名字,而不是外鍵列名)

ALTER TABLE score DROP FOREIGN KEY sid

?

9、主表和從表

(1)當主表中沒有對應的記錄時,不能將記錄添加到字表

總結

以上是生活随笔為你收集整理的数据库知识点总结归纳的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。