使用T-sql建庫建表建約束

来源:http://www.cnblogs.com/wangzheand/archive/2016/01/08/5112798.html
-Advertisement-
Play Games

為什麼要使用sql語句建庫建表? 現在假設這樣一個場景,公司的項目經過測試沒問題後需要在客戶的實際環境中進行演示,那就需要對數據進行移植,現在問題來了:客戶的資料庫版本和公司開發階段使用的資料庫不相容怎麼移植? 行之有效的辦法就是編寫比較通用的SQL語句,編寫完畢後存入*.sql文件中,最後複製到客...


為什麼要使用sql語句建庫建表?

現在假設這樣一個場景,公司的項目經過測試沒問題後需要在客戶的實際環境中進行演示,那就需要對數據進行移植,現在問題來了:客戶的資料庫版本和公司開發階段使用的資料庫不相容怎麼移植?

行之有效的辦法就是編寫比較通用的SQL語句,編寫完畢後存入*.sql文件中,最後複製到客戶的電腦中,並執行*.sql文件中的SQL語句,從而實現後臺資料庫的移植。所以我們很有必要掌握如何使用SQL語句,實現創建資料庫、創建表、添加約束和創建登錄賬戶等!

使用SQl語句創建和刪除資料庫

創建資料庫

語法:

            create database 資料庫名

            on    【primary】

             (

                   <數據文件參數>   【,……..N】          【<文件組參數>】

              )

             【log     on】

                (

                    {<日誌文件參數>     【,……..N】    }

                  )

             數據文件的具體參數如下:

                     (【name=邏輯文件名,】

                         filename=物理文件名

                         【,size=大小】

                      【,maxsize={最大容量|unlimited}】

                       【,filegrowth=增長量】)            【,………N】

         文件組的具體參數如下:

                   filegroup      文件組名       <文件參數>         【,………N】

其中,“【】”表示可選的部分,“{}”表示必需的部分。各參數的含義如下:

資料庫名:資料庫的名稱,最長為128個字元。

primary:給選項是一個關鍵字,指定主文件組中的文件。

log   on :指明事務日誌文件的明確定義。

name:指定資料庫的邏輯名稱,這是在SQL Server中使用的名稱,是資料庫在SQL   Server 中的標識符。

filename:指定資料庫所在文件的操作系統文件名稱和路徑,該操作系統文件名和name的邏輯名稱一一對應。

size:指定資料庫的初始容量的大小。

maxsize:制定操作系統文件文件可以增長到的最大值。

filegrowth:指定文件每次增長的大小,當指定數據為0時,表示文件不增長。

提示:一個資料庫可以有多個數據文件(一個為主數據文件其他的為次要數據文件)和多個日誌文件組成,但不能沒有數據文件和日誌文件。

刪除資料庫

當我們創建資料庫是如果該資料庫已存在就需要先刪除之後才能創建成功。

語法:

         drop  database   資料庫名

那如何檢測該資料庫是否存在呢?

在SQL Server將資料庫的清單存放在master系統資料庫的sysdatabases表中,只需藉助select語句查看sysdatabases表中是否存在該資料庫的記錄即可。

demo:
use master 
go --批處理語句和下麵的T-SQL語句分開
 exec sp_configure 'show advanced options',1--設置“show advanced options”參數為一獲取修改"sp_cmdshell"系統高級選項的許可權 
go
 reconfigure --提交操作 
go
 exec sp_configure 'xp_cmdshell',1--允許sql server調用資料庫之外的操作系統命令
 go
 reconfigure 
go 
exec xp_cmdshell 'mkdir E:\text'--在E盤創建文件夾“text”
go
 --檢測資料庫中是否已存在資料庫text_data
 if exists(select * from sysdatabases where name='text_data') 
drop database text_data --刪除資料庫text——data 
--創建資料庫text——data 
create database text_data 
on primary
 (
 name ='text_data1',
 filename ='E:\text\text_data1.mdf', 
size=10MB, 
maxsize =50MB, 
filegrowth=3MB 
),
 (
 name='text_data2',
 filename ='E:\text\text_data2.ndf'
 )
 log on 
( 
name ='text_log', 
filename ='E:\text\text_log.ldf', 
size =3MB, 
maxsizes=10MB, 
filegrowth=1MB 
)

使用SQL語句創建和刪除表

創建表

create    tabe   表名

列1   數據類型     列的特征,

列2   數據類型      列的特征,

……

其中”列的特征“包括是否為空(NULL)、是否為標識列(自動編號(IDENTITY(1,1)))、是否有預設值(DEFAULT)及是否為主建(PRIMARY KEY )等

刪除表

同創建資料庫一樣如果該表已經存在我們需要先刪除表在創建

語法:

drop table  表名

表的清單存放在該庫的系統表sysobjects中

demo:

use text_data
go
if exists(select * from sysobjects where name ='textinfo')--檢測textinfo表是否存在
drop table textinfo--刪除表textinfo
create table textinfo--創建表textinfo
(
Tid int identity(1,1) primary key not null,--主鍵、標識列訂、不可為空
Tinfo nvarchar(200) not null--不可為空
)

添加約束

語法:

alter   table 表名

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

demo:

alter table textinfo--添加約束的表
add constraint fK_typeid foreign key(typeid) references texttype(typeid)--添加外建約束

刪除約束

語法:

alter   table    表名

drop   constraint   約束名

demo:

alter table textinfo--要刪除約束的表
drop constraint fK_typeid --要刪除的約束

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

-Advertisement-
Play Games
更多相關文章
  • Ubuntu 15.10 (似乎從14.04開始) 的小坑,使用自帶遠程桌面連接出錯,弄得我很不爽,偶爾從 上看到一視頻,解決了。聊以記之。 順便說一下,這個自帶的桌面共用的名字是:vino 原本使用 vnc4server 也挺好,無奈 `lubuntu ubuntu unity` 就是灰屏,...
  • Linux 系統 網路配置配置Linux系統網路的方法有幾種,這裡介紹本人常用的兩種。第一種:使用命令ifconfig配置,具體用法:Ipconfig ethx x.x.x.x netmask x.x.x.x效果如下圖:通常,此種配置法只是用來測試用,因為重啟機器後,該配置的內容將會失效。第二種方....
  • 最近準備做一個公司物品申領系統,資料庫的表已經設計好,目前正在搭建開發和運行環境。計劃使用ASP.Net + SQL Server完成此次的設計。以下為會員註冊的存儲過程,預計把註冊頁面中的兩個Text框中的數值作為參數傳入資料庫中,最後返回1或0表示成功/失敗: 1 ALTER procedure...
  • 昨天在做一個sql代碼查詢的問題,發現了一些可優化的東西,藉此記錄一下。1,善用with as之前在寫sql 分頁查詢的時候,就只是用嵌套查詢,然後一個普通的關聯幾個表查詢,例如:SELECT * FROM( SELECT TOP 100 lr.SKU,lr.ItemPrice,lr.La...
  • 一、簡介思考一下這個場景:如果重做日誌可以無限地增大,同時緩衝池也足夠大,那麼是不需要將緩衝池中頁的新版本刷新回磁碟。因為當發生宕機時,完全可以通過重做日誌來恢復整個資料庫系統中的數據到宕機發生的時刻。但是這需要兩個前提條件:1、緩衝池可以緩存資料庫中所有的數據;2、重做日誌可以無限增大因此Chec...
  • 本文目錄列表:1、SQL Server旬時間粒度2、SQL Server月有關時間粒度3、SQL Server函數重構4、總結語5、參考清單列表SQL Server旬時間粒度 SQL Server不存在旬這個時間粒度,這個時間粒度在我們國家存在的。一個月分為上、中、下3旬,上旬和中旬均10天,分別對...
  • 整理和學習了一下網上高手關於rownum的帖子:參考資料: http://www.cnblogs.com/mabaishui/archive/2009/10/20/1587165.html對於Oracle的rownum問題,很多資料都說不支持>,>=,=,between……and,只能用以上符號(,...
  • MyCAT是mysql中間件,前身是阿裡大名鼎鼎的Cobar,Cobar在開源了一段時間後,不了了之。於是MyCAT扛起了這面大旗,在大數據時代,其重要性愈發彰顯。這篇文章主要是MyCAT的入門部署。一、安裝java因Mycat是用java開發的,所以需要在實驗環境下安裝java,官方建議jdk1....
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...