三種數據庫總結

SqlServer 數據庫

一.數據庫的建立在開發中的步驟

 

   1.1收集信息mysql

   1.2概念設計(E-R圖)sql

   1.3詳細設計(數據庫模型圖)數據庫

   1.4審覈數據庫(三大範式)編程

   2.1 E-R  安全

    矩形:實體服務器

    橢圓:屬性併發

    菱形:關係app

   3.1 映射關係ide

      一對一,一對多,多對一,多對多函數

   4.1 三大範式

      第一範式:每一列都要保證原子性,分的不能再分了

      第二範式:在知足1NF基礎上,每一張表只能表述一件事(有主鍵)

      第三範式:在知足2NF基礎上 ,確保除主鍵以外的列都必須和主鍵有直接的關係,而不是間接地關係

 二.建庫建表建約束

 2.1 建庫

    建庫:create database myschool;

    三種文件格式:主文件.mdf,次要文件 .ndf,日誌文件.ldf

    create database myschool

   --主文件

    on [primary]

   (

     name='', --邏輯名稱

    filename=‘。mdf’,-- 文件路徑

    size=10,--初始大小

    maxsize=100 ,--最大大小

    filegrowth=10 增加率 不能加百分號

    ),

    --次要文件

    (

     name='', --邏輯名稱

     filename=‘.ndf’,-- 文件路徑

    size=10,--初始大小

    maxsize=100 ,--最大大小

    filegrowth=10 增加率 不能加百分號

    )

    on log

   (

     name='', --邏輯名稱

     filename=‘.ldf’,-- 文件路徑

    size=10,--初始大小

    maxsize=100 ,--最大大小

    filegrowth=10 增加率 不能加百分號

  )

 給數據庫添加文件

  alter database myschool

  add file

   --次要文件

    (

     name='', --邏輯名稱

     filename=‘.ndf’,-- 文件路徑

    size=10,--初始大小

    maxsize=100 ,--最大大小

    filegrowth=10 增加率 不能加百分號

    )

 

2.2 建表

 Create table 表名

(

  列 數據類型 數據特性(null or not null)

)

自動增加列 identity(1,1)

好比

Create table student

( id int identity(1,1)  not null

)

刪除表 drop table 表名

刪除數據 delete 表名,truncate 表名

 

2.3 鍵約束

2.3.1 主鍵約束

Alter table 表名

Add constraint  pk_約束名  primary key  (列名)

2.3.2 惟一約束

Alter table 表名

 Add constraint  uq_約束名 unique (列名)

2,3.3 檢查約束

Alter table 表名

Add constraint ck_約束名 check (列名<=100)

2.3.4 默認約束

Alter table 表名

Add constraint df_約束名 default(‘默認值’) for 列名

2.3.5 外鍵約束

Alter table 外鍵表

Add constraint fk_約束名 foreign key  列名 references 主鍵表(列名)

 

2.3.6 刪除約束

Alter table 表名

Drop constraint 約束名

 

三.sql編程

3.1 定義變量

局部變量Declare @變量名 數據類型=值

所有變量 @@error 錯誤號,@@identity 獲取最近一次的值 @@version版本號

3.2 賦值

3.2.1 set

 set @變量名=值 or(set @變量名=(子查詢)) ,一次只能給一個變量賦值

3,2,2 select

Select @變量名 =值  ,select @變量名=字段,@變量名=字段  from 表,能夠給多個變量賦值;當返回多個數據的時候取最後一個

 

3.3 轉換數據類型

3.3.1 convert

Convert (數據類型,變量)

特殊的能夠對datetime 類型的字段轉換 好比convert(字段,102)

3.3.2 Cast

Cast(變量名 as 數據類型)

3.4 if else

If (條件)

Begin

---sql

End

Else

Begin

--sql

end

3.5 while

While(條件)

Begin

End

3.6Case

Case  when 條件 then 結果

      When 條件 then 結果

      Else

 End

 

   

 

3.7 GO

批處理,把多條sql打個包一塊兒發送服務器執行,執行速度加快

 

四:子查詢

select * from ( 子查詢 )別名

 

4.1 in

Select * from 表名 where 列名 in(子查詢)

Select * from 表名 where 列名 in(‘’,’’,’’)

 

4,2 not in

 

Select * from 表名 where 列名 not in(子查詢)

Select * from 表名 where 列名 not in(‘’,’’,’’)

 

4.3 exists and not exists

If exists(sql查詢) 判斷是否能查出數據

能夠改寫in 和not in

執行的效率比in和not 快

Select * from student wehre exists (select * from grade where grade.gradeid=student.gradeid)

 

五.存儲過程

5.1 建立一個無參的存儲過程

Create  proc 存儲過程名稱

As

 Sql 語句

Go

5.2 建立一個有輸入參數的存儲過程

 

Creta proc 存儲過程名稱

@變量名 數據類型

As

Sql 語句

Go

5.3 建立一個有默認值的存儲過程

Creta proc 存儲過程名稱

@變量名 數據類型=’默認值’

As

Sql 語句

Go

 

5.4 建立一個有輸入有輸出的存儲過程

Create proc 存儲過程名

@輸入變量 數據類型,

@輸出變量 數據類型 output

As

Sql語句

Go

5.5 調用存儲過程

Exec 存儲過程名稱

Execute 存儲過程名稱

經驗:當遇到go的時候 exec 能夠省略

 

 

5.6 事務

開啓事務 begin transaction

提交事務 commit transaction

事務回滾 rollback transaction

 

六.索引

 惟一索引:當給一個列建惟一約束的時候,系統自動建立一個惟一索引(不能出現同一列重複的兩行)

主鍵索引:特殊的惟一索引,當給列添加一個主鍵的時候,系統自動建立一個彙集的索引

彙集索引:一張表只能有一個彙集索引(相似與字典的拼音查找)

非彙集索引:一張表能夠有多個非彙集索引(相似與自動偏旁部首)

 

語法

  Create [unique|nonclustered|clustered]

  Index  ix_索引名 on tbale(列,列) with

  Fillfactor=80 (沒有百分號)

刪除索引

 Drop index table.索引名

Mysql 數據庫

一.MySQL的優點

運行速度快

使用成本低

可移植性強

適用用戶廣

社區版 免費,開源。適合普通用戶

  企業版 收費,不可自由下載 功能和服務更完善 適合對功能和安全要求高的企業用戶

二.Mysql相關信息

2.1 相關配置

  端口號:3306

  默認字符集:utf8

  utf8:一種Unicode編碼,解決國際上字符不統一的多字節編碼,通用性強

  將bin目錄寫入環境變量

  root密碼設置

2.2主要文件

  Bin ,include,lib,share

  my.ini:記錄MySQL配置信息,可修改配置內容,如端口號,字符集

2.3系統數據庫

  Information_schema

  Performance_schema

  Mysql

  Test

  Myschool

  Bank

  Hospitaldb

三.建庫建表鍵約束

3.1建立數據庫

  create database myschool;

3.2切換當前數據庫下

  use 數據庫名稱

3.3刪除數據庫

  drop database 數據庫名稱

3.4建立表

  CREATE TABLE [IF NOT EXISTS]  表名(字段 數據類型 特徵)   

3.5字段的約束及屬性

  非空約束 NOT NULL 字段不容許爲空

  默認約束 DEFAULT  賦予某字段默認值

  惟一約束 UNIQUE KEY(UK)  設置字段的值是惟一的容許爲空,但只能有一個空值

  主鍵約束 PRIMARY KEY(PK) 設置該字段爲表的主鍵可惟一標識該表記錄

  外鍵約束 FOREIGN KEY(FK)  用於在兩表之間創建關係,須要指定引用主表的哪一字段

  自動增加 AUTO_INCREMENT  設置該列爲自增字段 默認每條自增1一般用於設置主鍵

  主鍵 PRIMARY KEY

  註釋 COMMENT ‘編號’ COMMENT='測試表’

  設置字符集編碼 CHARSET = 字符集名

3.6查看錶

  查看錶是否存在 USE myschool;SHOW  tables;

  查看錶定義 DESCRIBE 表名;或DESC 表名;

  刪除表 DROP TABLE [IF  EXISTS] 表名;

 

四.數據庫操做指令

 

DML(數據操做語言)

  用來操做數據庫中所包含的數據(update,delete,insert )

    DDL(數據定義語言)

  用於建立和刪除數據庫對象等操做(drop ,alter,create)

    DQL(數據查詢語言)

  用來對數據庫中的數據進行查詢(select)

DCL(數據控制語言)

  用來控制數據庫組件的存取許可、存取權限等(grant)

五.數據類型

5.1數字型

  TINYINT很是小的數據 有符值: -27 ~ 27-1  無符號值:0 ~ 28-1  1字節

  SMALLINT 較小的數據 有符值:  -215 ~ 215-1 無符號值:  0 ~ 216-1 2字節

  MEDIUMINT 中等大小的數據 有符值:  -223 ~ 223-1  無符號值:  0 ~ 224-1 3字節

  INT 標準整數 有符值: -231 ~ 231-1 無符號值:0 ~ 232-1 4字節

  BIGINT 較大的整數 有符值: -263 ~263-1  無符號值:0 ~264-1 8字節

  FLOAT          單精度浮點數 ±1.1754351e -38 4字節

  DOUBLE 雙精度浮點數 ±2.2250738585072014e -308 8字節

  DECIMAL 字符串形式的浮點數 Decimal(M,D) M+2個字節

  UNSIGNED屬性 標識爲無符號數

  ZEROFILL屬性 寬度(位數)不足以0填充

5.2字符串

  CHAR[(M)] 定長字符串 M字節

  VARCHAR[(M)] 可變字符串 可變長度

  TINYTEXT 微型文本串 0~28–1字節

  TEXT 文本串 0~216–1字節

  DATE YYYY-MM-DD,日期格式 1000-01-01~ 9999-12-31

  DATETIME  YY-MM-DD  hh:mm:ss: 1000-01-01 00:00:00 ~9999-12-31 23:59:59

  TIME hh:mm:ss:  -835:59:59 ~ 838:59:59

  TIMESTAMP YYYYMMDDHHMMSS   1970年某時刻~2038年某時刻,精度爲1秒

  YEAR YYYY格式的年份 1901~2155

六.存儲引擎的類型

  MyISAM、InnoDB 、Memory、CSV等9種

  使用MyISAM:   不需事務,空間小,以查詢訪問爲主

  使用InnoDB:     多刪除、更新操做,安全性高,事務處理及併發控制

  修改存儲引擎 InnoDB

  位置

  MyISAM類型表文件:*.frm:表結構定義文件 *.MYD:數據文件 *.MYI:索引文件

  InnoDB類型表文件:*.frm:表結構定義文件 ibdata1文件!!!

七.高級查詢

 

71修改表

    修改表名:ALTER TABLE 舊錶名 RENAME [TO]  新表名;

    添加字段:ALTER TABLE 表名 ADD 字段名  數據類型  [屬性];

    修改字段:ALTER TABLE 表名 CHANGE 原字段名 新字段名 數據類型 [屬性];

    刪除字段:ALTER TABLE 表名 DROP 字段名;

7.2添加主鍵

    ALTER TABLE 表名 ADD CONSTRAINT 主鍵名 PRIMARY KEY 表名(主鍵字段);

7.3添加外鍵

ALTER TABLE 表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY(外鍵字段)REFERENCES 關聯表名(關聯字段);

 

7.4數據插入

插入單條數據記錄

INSERT INTO 表名 [(字段名列表)] VALUES (值列表);

插入多條數據記錄

INSERT INTO 新表(字段名列表) VALUES(值列表1),(值列表2),……,(值列表n);

將查詢結果插入新表

INSERT INTO 新表(字段1,字段2……) SELECT字段1,字段2……FROM 原表;

SELECT字段1,字段2…… INTO 新表 FROM 原表;

更新數據記錄

UPDATE表名 SET字段1=值1,字段2=值2,...,字段n=值n[WHERE條件];

刪除數據記錄

DELETE FROM 表名 [WHERE條件]; TRUNCATE TABLE 表名;

TRUNCATE語句刪除後將重置自增列,表結構及其字段、約束、索引保持不變,執行速度比DELETE語句快

7.5DQL語句

 SELECT  <字段名列表>

[WHERE  <查詢條件>]

[GROUP BY <分組的字段名>]

[HAVING <條件>]

[ORDER BY <排序的字段名> [ASC 或 DESC]]

LIMIT子句

[LIMIT [位置偏移量, ]行數];

7.6經常使用函數——聚合函數

AVG():返回某字段的平均值

COUNT():返回某字段的行數

MAX():返回某字段的最大值

MIN():返回某字段的最小值

SUM():返回某字段的和

7.7經常使用函數——字符串函數

CONCAT(str1,str1...strn) 字符串鏈接 SELECT  CONCAT('My','S','QL');返回:MySQL

INSERT(str,pos,len,newstr) 字符串替換SELECT INSERT('這是SQL Server數據庫', 3,10,'MySQL');返回:這是MySQL數據庫

LOWER(str)將字符串轉爲小寫SELECT LOWER('MySQL');返回:mysql

UPPER(str)將字符串轉爲大寫SELECT UPPER('MySQL');返回:MYSQL

SUBSTRING(str,num,len)字符串截取SELECT SUBSTRING( 'JavaMySQLOracle',5,5);MySQL

7.8經常使用函數——時間日期函數

CURDATE() 獲取當前日期 SELECT CURDATE();返回:2016-08-08

CURTIME() 獲取當前時間 SELECT CURTIME();返回:19:19:26

NOW() 獲取當前日期和時間 SELECT NOW();返回:2016-08-08 19:19:26

WEEK(date) 返回日期date爲一年中的第幾周 SELECT WEEK(NOW());返回:26

YEAR(date)  返回日期date的年份 SELECT YEAR(NOW());返回:2016

HOUR(time) 返回時間time的小時值 SELECT HOUR(NOW());返回:9

MINUTE(time) 返回時間time的分鐘值 SELECT MINUTE(NOW());返回:43

DATEDIFF(date1,date2) 返回日期參數date1和date2之間相隔的天數 

ADDDATE(date,n) 計算日期參數date加上n天后的日期 SELECT ADDDATE(NOW(),5);

返回:2016-09-02  09:37:07 

7.9數學函數

CEIL(x) 返回大於或等於數值x的最小整數 SELECT CEIL(2.3)返回:3

FLOOR(x) 返回小於或等於數值x的最大整數 SELECT FLOOR(2.3)返回:2

RAND() 返回0~1間的隨機數 SELECT RAND()返回:0.5525468583708134

7.10查詢

SELECT … FROM 表1 WHERE 字段1  比較運算符(子查詢)

子查詢是一個嵌套在 SELECT、INSERT、UPDATE 或 DELETE 語句或其餘子查詢中的查詢

子查詢在WHERE語句中的通常用法

八.數據庫還原和備份

8.1. 備份

使用mysqldump 命令

 

在cmd中寫命令(若是報錯,不支持內部名稱-》使用cmd 打開mysqldump.exe的安裝目錄)

 

備份個別表

mysqldump -u 用戶名 -p密碼 數據庫名稱 表1,表2,表3...>文件路徑d:\1.sql  (注意:後面不能寫「;」號)

 

備份整個數據庫中全部的信息

 mysqldump -u 用戶名 -p密碼 數據庫名稱>文件路徑d:\2.sql

8.2還原

   mysql -u 用戶名 -p密碼 數據庫名稱<文件路徑

   (注意:後面的「;」號不能寫)

8.3.導出txt

    select * from tablename into outfile '文件路徑地址';

8.4導入txt

load data infile '文件路徑地址' into table 表名稱

ORACLE數據庫

 

 

一. 建立表空間

create tablespace sa

 datafile 'D:\orcldata\sa.dbf' size 200M

 reuse autoextend on next 1m maxsize unlimited;

--建立用戶 此用戶的密碼是accp 默認表空間是bdqn

create user sa identified by accp  default tablespace sa;  

 

-二.給用戶最高使用權限

grant connect,resource,dba to sa;

 

三.-給表空間添加文件

alter tablespace bdqn

add datafile 'D:\orcldata\bdqn2.dbf' size 200M

 reuse autoextend on next 1m maxsize unlimited;

四.排名和分頁

create table score(id int,

                  studentname varchar2(50),

                  classname varchar2(50),

                  result number(18));

                 

insert into score values(1,'張三','一班',90);

insert into score values(2,'李四','一班',80);

insert into score values(3,'王五','一班',80);

insert into score values(4,'趙六','一班',60);

insert into score values(5,'小七','二班',90);

insert into score values(6,'李連杰','二班',80);

insert into score values(7,'王菲','二班',70);

insert into score values(8,'歐陽','二班',70);          

 

 

4.1over 函數

 

select * from score;

 

--分頁

select id,studentname,classname ,result,rownum from score

--第一種排名

select t.*,rownum mc from (select id,studentname,classname ,result from score

order by result desc)t

--第二種排名

select t.*,rank() over(order by t.result desc ) mc from (select id,studentname,classname

,result from score

order by result desc)t

--第三種

select t.*, DENSE_RANK() over(order by t.result desc ) mc from (select id,

studentname,classname ,result from score

order by result desc)t;

--第四種,根據分組字段排名

select t.*,DENSE_RANK() over(partition by classname order by t.result desc )

mc from (select id,studentname,classname ,result from score

order by result desc)t

--累計

select tt.*,sum(tt.result) over(order by mc) from (select t.*,DENSE_RANK()

over(partition by classname order by t.result desc ) mc from

(select id,studentname,classname ,result from score

order by result desc)t)tt;

--累加

select score.*,sum(result) over(order by id) from score order by id;

 

五.備份和還原

5.1本地備份(cmd執行調用數據棒)

expdp jhpt/1 dumpfile=hbjy20140923.dmp directory=DATA_PUMP_DIR FULL=Y --DATA_PUMP_DIR 在數據庫中查路徑,把文件導出到這個文件夾(select * from dba_directories  查看DATA_PUMP_DIR 對應的目錄)

5.2本機還原

impdp jhpt/1 dumpfile=hbjy20140923.dmp directory=DATA_PUMP_DIR FULL=Y

 

5.3遠程備份

exp jhpt/1@orcl155 file=D:\app\User\admin\orcl\dpdump\jhpt23.dmp  log=d:\jhpt20150424.log

也能夠加owner=jhpt

5.4遠程還原

imp jhpt/1@orcl155 file=D:\app\User\admin\orcl\dpdump\jhpt23.dmp FULL=Y

 

5.5還原表

imp jhpt/qwer1234@orcl155 file=d:\base_purchaseinfo.bak tables=base_purchaseinfo

 

5.6備份還原 說明

本機備份和還原效率最高,可是隻限於本機器

 遠程備份是本地安裝Oracle數據庫,備份遠程數據庫的數據到本地

 遠程還原是,把本地備份的數據還原到遠程數據庫

還原以前,把用戶,表空間,數據文件所有刪除,而後從新建立,還原的數據有幾個數據文件,須要建立幾個數據文件否則還原到一半拋出文件不夠錯誤

/*--刪除表空間已經表空間下的文件

drop tablespace jhpt including contents and datafiles;

--刪除用戶

drop user jhpt cascade;

相關文章
相關標籤/搜索