一.Sql Management的簡單的使用:
1.第一次運行默認windows混合模式直接點擊鏈接sql
2.建立一個數據庫數據庫
粘貼如下代碼到查詢窗口windows
USE master GO IF NOT EXISTS ( SELECT name FROM sys.databases WHERE name = N'TutorialDB' ) CREATE DATABASE [TutorialDB] GO
點擊F5或者執行服務器
3.建立一個表
首先將master更改成以前建立的數據庫的名字
而後在窗口裏面輸入以下sql語句學習
-- Create a new table called 'Customers' in schema 'dbo' -- Drop the table if it already exists IF OBJECT_ID('dbo.Customers', 'U') IS NOT NULL DROP TABLE dbo.Customers GO -- Create the table in the specified schema CREATE TABLE dbo.Customers ( CustomerId INT NOT NULL PRIMARY KEY, -- primary key column Name [NVARCHAR](50) NOT NULL, Location [NVARCHAR](50) NOT NULL, Email [NVARCHAR](50) NOT NULL ); GO
4.插入一個行編碼
-- Insert rows into table 'Customers' INSERT INTO dbo.Customers ([CustomerId],[Name],[Location],[Email]) VALUES ( 1, N'Orlando', N'Australia', N''), ( 2, N'Keith', N'India', N'keith0@adventure-works.com'), ( 3, N'Donna', N'Germany', N'donna0@adventure-works.com'), ( 4, N'Janet', N'United States', N'janet1@adventure-works.com') GO
5.查看查詢結果spa
-- Select rows from table 'Customers' SELECT * FROM dbo.Customers;
這裏能夠更改顯示方式和保存結果.net
6.更改查詢窗口的服務器鏈接code
注意:這並無改變你的服務器對象資源管理器鏈接,只是當前查詢窗口。
二者之間的區別:否容許鏈接到數據庫引擎」和「登陸」的區別--轉載自CSDN的xcntime。對象
(舒適提示:必定要選擇本身要操做的數據庫而後選中所須要的代碼區域再點擊執行!)
一. SQL包含的主要動詞
1.數據定義:
CREATE (建立)、DROP(刪除)、ALTER(修改)
2.數據查詢:
SELECT (查詢出數據,也可用於變量賦值)
3.數據操做:
INSERT(插入)、UPDATE(更新)、DELETE(刪除)
4.數據控制:
GRANT(受權)、REVOKE(回收權限)、DENY(拒絕權限)
二. 經常使用的SQL的數據類型
1.精確數字
數據類型 | 範圍 | 存儲 |
bigint | -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807 | 8 字節 |
int | -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647) | 4 字節 |
smallint | -2^15 (-32,768) 到 2^15-1 (32,767) | 2 字節 |
tinyint | 0 到 255 | 1 字節 |
bit | 能夠取值爲 一、0 或 NULL 的 integer 數據類型。 | 1(2)個字節 |
2.近似數字
float | -1.79E + 308 至 -2.23E - 30八、0 以及 2.23E - 308 至 1.79E + 308 | 8 字節 |
realt | -3.40E + 38 至 -1.18E - 3八、0 以及 1.18E - 38 至 3.40E + 38 | 4 字節 |
3.日期和時間
datetime | 存儲從1753年1月1日到9999年12月31日的日期和時間數據,精確到百分之三秒 | 8 字節 |
smalldatetime | 存儲從1900年1月1日到2079年6月6日的日期和時間數據,精確到分鐘 | 4 字節 |
4.字符串
char(n) | char:字符型,存儲指定長度的定長非統一編碼型的數據,必須指定列寬,列寬最大爲8000 個字符 |
varchar(n) | 字符型,存儲非統一編碼型字符數據,數據類型爲變長,要指定該列的最大長度,存儲的長度不是列長,而是數據的長度 |
text | 字符型,存儲大量的非統一編碼型字符數據 |
5.Unicode 字符串
nchar(n) | 統一編碼字符型,存儲定長統一編碼字符型數據,能存儲4000種字符,統一編碼用雙字節結構來存儲每一個字符 |
nvarchar(n) | 統一編碼字符型,用做變長的統一編碼字符型數據 |
ntext | 統一編碼字符型,用來存儲大量的統一編碼字符型數據 |
6.二進制字符串
binary(n) | 二進制數據類型,存儲可達8000 字節長的定長的二進制數據 |
varbinary(n) | 二進制數據類型,用來存儲可達8000 字節長的變長的二進制數據 |
image | 二進制數據類型,用來存儲變長的二進制數據 |
注意:默認的sql語言不區分大小寫。
1.
CREATE TABLE<表名>() <列名> 數據類型[列級完整性的約束定義] {,<列名> 數據類型[列級完整性約束定義]...} [,表級完整性約束定義])
值得提的一點是:
大部分完整性約束都既能夠在「列級完整性約束定義」出定義,也能夠在「表級完整性約束定義」,但有些涉及多個列的完整性約束必須在「表級完整性約束定義」
文法描述經常使用符號解釋(在sql語法中並不輸入):
'[]'表示內容是可選的
'{}'與'...'一塊兒表示能夠出現0次或者屢次
'|'表示在多個短語中選擇一個,好比:term1|term2|trem3
在列級完整性約束能夠定義以下的約束
表級完整性約束除了NOT NULL和DEFAULT不能定義外其餘約束均可以。
如下須要注意幾點:
一.若是check約束定義多列之間的取值約束則只能定義在表級完整性約束定義
二.若是在"表級完整性約束定義"處定義主碼,則主碼列要用括號括起來,即:PRIMARY KEY(列 1{[,列 2]*});
三.若是在"表級完整性約束定義"處定義外碼,則FOREIGN KEY和<列名>均不能省略。
2.定義主碼約束
若是是在列級完整性約束處定義主碼,則語法格式爲:
<列名> 數據類型 PRIMARY KEY[(<列名> [,....n])]
若是是在表級完整性約束處定義主碼,則語法格式爲:
PRIMARY KEY(<列名> [,...n])
3.定義外碼的約束
通常狀況下外碼是單列的,他能夠定義在列級完整性約束處,也能夠定義在表級完整性約束處。定義外碼的語法格式爲:
[FOREIGN KEY(<列名>)] REFERENCES <外表名>(<外表列名>) [ON DELETE { CASCADE |NO ACTION }] [ON UODATE { CASCADE |NO ACTION }]
其中各項含義爲:
代碼: CREATE TABLE Student( sno char(7) PRIMARY KEY,/*在列級完整性約束處定義主碼的約束*/ Sname char(10) NOT NULL, Ssex char(2), Sage tinyint, Sdept char(20) ) CREATE TABLE COURES( Cno char(6) NOT NULL, Cname char(20) NOT NULL, Credit tinyint, Semester tinyint, PRIMARY KEY(cno) /*在表級完整性約束處定義主碼的約束*/ ) CREATE TABLE SC ( Sno char(7) NOT NULL, Cno char(6) NOT NULL, Grade tinyint, PRIMARY KEY(Sno,Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) )
SQL語句爲:
DROP TABLE <表名> {[, <表名>]...}
例如刪除test表:
DROP TABLE test
若是須要添加列,刪除列或者修改列定義,實現添加和刪除約束功能,則可使用ALTER TABLE 語句實現。
alter table的語法:
ALTER TABLE<表名> [ ALTER COLUMN <列名>新數據類型] --修改列的定義 | [ADD <列名>數據類型約束定義] --添加新的列 | [DROP COLUMN<列名>] --刪除列 | [ADD [constraint <約束名>] 約束定義]--添加約束 | [DROP [constraint] <約束名>] --刪除約束
舉例:
添加"專業"這個新列
ALTER TABLE Student ADD Spec char(10) NULL
修改類型爲char(20)
ALTER TABLE Student ADD COLUMN Spec char(20)
刪除該列
ALTER TABLE Student DROP COLUMN Spec
(添加和刪除約束在後面會提到)
1.列級約束
主要是對列的數據類型,數據格式(學號各個位所表明的意義),取值範圍(學生成績取值範圍)和取值集合,是否能爲空值的約束。
2.元組約束
元組約束指元組各個字段之間的相互約束,如開始日期小於結束日期。
3.關係約束
若干個元組之間,關係之間的聯繫的約束。學號的取值不能重複也不能取空值,學生選課表的學號要受學生表中的學號約束。
1.主碼約束
添加主碼約束注意:
語法格式:
ALTER TABLE 表名 ADD [ CONSTRAINT <約束名>] PRIMARY KEY (<列名> [,... n])
舉例:對僱員表和工做表分別添加主碼約束
ALTER TABLE 僱員表 ADD CONSTRAINT PK_EMP PRIMARY KEY(僱員編號) ALTER TABLE 工做表 ADD CONSTRAINT PK_JOB PRIMARY KEY(工做編號)
2.UNIQUE約束
限制一個列中不能有重複的值
語法:
ALTER TABLE 表名 ADD [CONSTRAINT <約束名>] UNIQUE(<列名> [, ....n])
爲僱員表「電話號碼」列添加UNIQUE約束。
ALTER TABLE 僱員表 ADD CONSTRAINT UK_UID UNIQUE (電話號碼)
3.外碼約束
注意:外碼所引用的列必須是又primary key約束的或者unique約束定義的列。
語法:
ALTER TABLE 表名 ADD [CONSTRIANT <約束名>] FOREIGN KEY(<列名>) REFERENCES 引用表名(<列名>)
爲僱員表的工做編號添加外碼引用約束,此列引用工做表的工做編號列
ALTER TABLE 僱員表 ADD CONSTRAINT JOB_ID FOREIGN KEY (工做編號)REFERENCES 工做表(工做編號)
4.default約束
用於初始化數據
ALTER TABLE 表名 ADD [CONSTRAINT <約束名>] DEFAULT 默認值 FOR 列名
設置默認工資爲1000
ALTER TABLE 僱員表 ADD CONSTRAINT DEFAULT 1000 FOR 工資
5.CHECK約束
限制值的取值範圍,讓每個數據都有意義
語法:
ALTER TABLE 表名 ADD [CONSTRAINT<約束名>] CHECK (邏輯表達式)
在僱員表中添加員工的工資大於1000
ALTER TABLE 僱員表 ADD CONSTRAINT CHK_Salary CHECK(工資>=1000)
在工做表中添加最低工資小於等於最大工資
ALTER TABLE 工做表 ADD CONSTRAINT CHK_job_Salary CHECK(最低工資<=最高工資)
上述這些約束均可以在定義表時同時定義
CREATE TABLE 工做表( 工做編號 char(8) PRIMARY KEY, 最低工資 int, 最高工資 Int, CHECK (最低工資<=最高工資) ) CREATE TABLE 僱員表( 僱員編號 char(7) primary key, 僱員名 char(10), 工做編號 char(8) REFERENCES 工做表(工做編號), 工資 int DEFAULT 1000 CHECK(工資>=1000), 電話號碼 char(8)NOT NULL UNIQUE )