資料庫的實現----(建庫,建表,建約束)

来源:http://www.cnblogs.com/heyongjun1997/archive/2016/01/11/5115485.html
-Advertisement-
Play Games

首先大家要知道資料庫是由哪三個部分組成的.解析:01.資料庫文件:*.mdf02.次要數據文件:*.ndf03.日誌文件:*.ldf每個資料庫至少要包含兩個文件:一個數據文件和一個日誌文件.數據文件中包含了資料庫的數據和對象,如表,視圖和索引等;日誌文件中包含了用於恢複數據庫所需的信息.創建資料庫時...


首先大家要知道資料庫是由哪三個部分組成的.

解析:

01.資料庫文件:*.mdf

02.次要數據文件:*.ndf

03.日誌文件:*.ldf

每個資料庫至少要包含兩個文件:一個數據文件和一個日誌文件.數據文件中包含了資料庫的數據和對象,如表,視圖和索引等;日誌文件中包含了用於恢複數據庫所需的信息.創建資料庫時,次要資料庫文件可選.一個資料庫可以有多個資料庫文件和多個日誌文件.

一.使用SQL語句創建資料庫

以Myschool資料庫為例:

create database Myschool
on primary  --預設屬於primary主文件組,可省略
(
-----------數據文件的具體描述---------
--主數據文件的邏輯名稱
name='Myschool_data',
--主數據文件的物理名稱
filename='E:\Myschool.mdf',
--主數據文件的初始大小
size=5,
--主數據文件增長的最大值
maxsize=100,
--主數據文件的增長率
filegrowth=15%


)
Log on
(
---------日誌文件的具體描述---------
--日誌文件的邏輯名稱
name='Myschool_log',
--日誌文件的物理名稱
filename='E:\Myschool.ldf',
--日誌文件的初始大小
size=2,
--日誌文件的增長率
filegrowth=1
)

二.使用SQL刪除資料庫

--刪除資料庫名稱為Myschool
drop database Myschool

三.檢測要創建的資料庫是否存在

use master --設置當前資料庫為master ,以便訪問sysdatabase表
if exists(select * from sysdatabases where name='Myschool')
--如果存在則刪除Myschool資料庫
drop database Myschool
--重新創建Myschool資料庫
create database Myschool
on primary  --預設屬於primary主文件組,可省略
(
-----------數據文件的具體描述---------
--主數據文件的邏輯名稱
name='Myschool_data',
--主數據文件的物理名稱
filename='E:\Myschool.mdf',
--主數據文件的初始大小
size=5mb,
--主數據文件增長的最大值
maxsize=100mb,
--主數據文件的增長率
filegrowth=15%


)
Log on
(
---------日誌文件的具體描述---------
--日誌文件的邏輯名稱
name='Myschool_log',
--日誌文件的物理名稱
filename='E:\Myschool.ldf',
--日誌文件的初始大小
size=2mb,
--日誌文件的增長率
filegrowth=1mb
)


四.如何在指定的路徑下創建文件夾.

xp_cmdshell時SQL server的擴展儲存過程,他以操作系統命令行解釋器的方式執行給定的命令字元串,並以文本行的方式返回任何輸入.

在SQL server Management Studio 中,如果希望在操作系統的指定路徑下創建文件夾,可以使用下麵的語句:

EXEC xp_cmdshell 'mkdir E:\project'

其中,字元串mkdir E:\project 是DOS命令用於在E盤下創建文件夾.

註意.在使用xp_cmdshell之前,需要執行sp_configure以啟用xp_cmdshell

EXEX sp_configure 'show advanced options',1
go
reconfigure
co
EXEC sp_configure 'xp_cmdshell',1
go
reconfigure
go

 五.使用SQL語句創建表

create table 表名
(
列1 數據類型 列的特征,
列2 數據類型 列的特征
)

列的特征:包括該列是否為空,是否是標識列,是否有預設值,是否是主鍵等.

eg:

--同創建資料庫一樣,如果當前資料庫中已存在Student表,則再次創建時系統會提示錯誤,所以我們需要先檢測當前資料庫

--中是否存在該表,如果存在該表,則刪除,然後在創建.

use myschool
if exists(select * from sysobjects where name='student') 
drop table student--刪除表student

------------創建表Myschool中的學生表--------
create table student
(
  studentNO int not null,--學號,非空
  studentname nvarchar(20) not null,--學生姓名,非空
  Sex bit not null ,--性別,非空,取值0或1
  gradeid int not null,--年級編號
  phone nvarchar(50) null, --聯繫電話,允許為空
  address nvarchar(200) null, --住址,允許為空
  bornDate datetime null,--出生日期,允許為空
  Email nvarchar(50) null,--郵箱,允許為空
  Cid varchar(18) not null --身份證,非空
  
)

六.使用sql語句刪除表

drop table student

七.使用sql語句創建和刪除約束

01.實體完整性:唯一確定表中一行記錄.

02.域完整性:表中特定列數據的有效性,以確保不會輸入無效的數值.

03.引用完整性:插入或刪除記錄時,維護表之間定義的關係.

04.自定義完整性:為了確保資料庫的數據完整性.

常用的約束類型:

01.主鍵約束(Primary Key Constraint):要求主鍵列數據唯一,並且不允許為空.

02.非空約束:(not null):要求列不能存在空值.

03.檢唯一約束:(Unique Constraint):要求該列的值必須唯一,允許為空,但只能出現一個空值.

04.預設約束:(Dafault Constraint):某列的預設值.

05.外鍵約束:(Foregin Key Constraint):用於在兩表之間建立關係,需要指定引用主表的哪一列.

添加約束的語法:

alter table 表名

add Constraint 約束名 約束類型 具體的約束說明

--把studentno學號列設置為主鍵
alter table student
add constraint PK_studentno primary Key (studentno)
--把身份證號列cid添加唯一約束
alter table student
add constraint UQ_cid unique(cid)
--把地址列添加預設約束
alter table student
add constraint DF_address Default('地址不詳') for address
--為出生日期列添加檢查約束
alter table student
add constraint CK_bornDate Check(bornDate>='1980-01-01')
--添加外鍵約束(主表student和從表result建立關係,關聯列為StudentNo)
alter table result
add constraint FK_studentno foreign key (studentno) references student(studentno)
--添加grade表中的主鍵
alter table grade
add constraint pk_gradeid primary key (gradeid)
--添加外鍵約束(主表grade和從表student建立關係,關聯列為gradeid)
alter table grade
add constraint FK_gradeid foreign key (gradeid) references grade(gradeid)

刪除約束:

語法:

alter table 表名

drop Constraint 約束名

eg:刪除student表中地址預設約束

alter table student
drop constraint DF_adress

八.sqlserver 文檔

如何查看 sql server 幫助:

把游標放置在需要查找某個語法的關鍵字上方,飯F1鍵,就會啟動Sql server聯機叢書,並查找出有關關鍵字的幫助資料.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 題目:Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root). F...
  • 一.前言 我們一起從3個小例子來體驗一下linux內核編程。如下:1.內核編程之hello world2.模塊參數傳遞3.模塊間函數調用二.準備工作 首先,在你的linux系統上面安裝linux頭文件,debian系列:1 $:sudo apt-...
  • centos 7安裝docker什麼是 Docker Docker 是一個開源項目,誕生於 2013 年初,最初是 dotCloud 公司內部的一個業餘項目。它基於 Google 公司推出的 Go 語言實現。 項目後來加入了 Linux 基金會,遵從了 Apache 2.0 協議,項目代碼在 Gi....
  • 註意:我們家的電視是海信的,所以不能代表所有的電視哦~~~ 家裡電視有線電視已經過期很長時間了,早就想把電腦連接到電視上用電視做顯示器的心了,今天來興趣了,就弄了一下!!! 用電腦連接電視需要先解決兩個問題: 1、電視有介面能讓你連,例如HDMI等 備好...
  • 一、全局變數 變數 含義@@ERROR最後一SQL錯誤的錯誤號@@IDENTITY最後一次插入的標識值@@LANGUAGE當前使用的語言名稱@@MAX_CONNETIONS可以創建的、同時連接的最大數目@@ROWCOUNT受上一個SQl語句影響的行數(增加語句)@@SERV...
  • 1創建一個Storage Account1)點擊Browse->Storage accounts2) 填寫Storage account,請記住這個名字,之後創建credential需要用到。3)點擊Create。 一般等待一段時間就好了2 創建container1)All resources->B...
  • YARN DistributedShell源碼分析與修改 轉載請註明出處: "http://www.cnblogs.com/BYRans/" <br/ "1 概述" "2 YARN DistributedShell不能滿足當前需求" "2.1 功能需求" "2.2 YARN Distr...
  • 1.概述 我們熟知的資料庫引擎大部分採用靜態數據類型,即列定義的類型定義了值的存儲,並且值要嚴格滿足列的定義,同一列所有值的存儲方式都相同,比如定義了一個列類型為整型 int,不能在該列上輸入'abc'。SQLite的數據類型則採用了動態類型,列定義不能決定值的存儲,值的存儲由值本身決定,因此在.....
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...