1. sql入門新手教程是什麼
在關系資料庫實現過程中,第一步是建立關系模式,定義基本表的結構,即該關系模式是哪些屬性組成的,每一屬性的數據類型及數據可能的長度、是否允許為空值以及其它完整性約束條件。
定義基本表:
CREATE TABLE([列級完整性約束條件]
[,[列級完整性約束條件]]…
[,[列級完整性約束條件]]
[,表列級完整性約束條件]);
說明:
1、中是SQL語句必須定義的部分,[]中是SQL語句可選擇的部分,可以省略的。
2、CREATE TABLE表示是SQL的關鍵字,指示本SQL語句的功能。
3、是所要定義的基本表的名稱,一個表可以由一個或若干個屬性(列)組成,但至少有一個屬性,不允許一個屬性都沒有的表,這樣不是空表的含義。
多個屬性定義由圓括弧指示其邊界,通過逗號把各個屬性定義分隔開,各個屬性名稱互不相同,可以採用任意順序排列,一般按照實體或聯系定義屬性的順序排列,關鍵字屬性組在最前面,這樣容易區分,也防止遺漏定義的屬性。
4、每個屬性由列名、數據類型、該列的多個完整性約束條件組成。其中列名一般為屬性的英文名縮寫,在Microsoft Access 2010中也可以採用中文,建議不要這樣做,編程開發時不方便。
5、完整性約束條件,分為列級的完整性約束和表級的完整性約束,如果完整性約束條件涉及該表的多個屬性列,則必須定義在表級上,否則既可以定義在列級也可以定義在表級。
這些完整性約束條件被存入系統的數據字典中,當用戶操作表中數據時由RDBMS自動檢查該操作是否違背這些完整性約束,如果違背則RDBMS拒絕本次操作;
這樣保持了資料庫狀態的正確性和完整性,不需要用戶提供檢查,提高了編程的效率,降低了編程難度。列級的完整性通常為主關鍵字的定義、是否允許為空。表級的完整性約束條件一般為外碼定義。
數據操縱
數據操縱語言是完成數據操作的命令,一般分為兩種類型的數據操縱。
1、數據檢索(常稱為查詢):尋找所需的具體數據。
2、數據修改:插入、刪除和更新數據。
數據操縱語言一般由 INSERT(插入)、 DELETE(刪除)、 UPDATE(更新)、 SELECT(檢索,又稱查詢)等組成。由於 SELECT經常使用,所以一般將它稱為查詢(檢索)語言並單獨出現。
2. SQL怎麼在已經創建的表中插入一列,對這一列進行唯一約束。
如果已經存在的表中是有數據的,那麼你不能用一句SQL實現你的目標。
因為,如果表中已經有數據,那麼你創建的新列,在已有的記錄中要麼是空值,要麼是你設置的預設值,因此所有記錄中,該列的值都是一樣的,因此對該列不能建立唯一性約束。
可採用兩種做法:
1.刪除原表的所有數據,就可以創建;
2.先不建立唯一約束,只建立列,然後給每行記錄的該列賦於不同的值。
然後再設置該列為非空;
然後再為該列設置唯一約束。
3. 如何使用建立SQL查詢教程
1.創建表
(1)用Create Table 命令創建表
語法:
Create Table tabl_name
({
}column_name As computed_column_expression
}
}[,...n]
)
[On {fiegroup | Default}]
[Textimage_On {fiegroup | Default}]
例子:
打開cust資料庫,創建一個表,該表包含了學生的有關信息,即有學號、姓名、性別、出生日期、籍貫、聯系電話、住址和備注信息。
Use cust
Create Table students
(
number int not null,
name varchar(10) not null,
sex char(2) null,
birthday datetime null,
hometown varchar(30) null,
telphone_no varchar(12) null,
address varchar(30) null,
others varchar(50) null
)
在這個表中number表示學生代號,數據類型為int,不允許為空;name表示學生姓名,數據類型為varchar,長度為10,不允許為空;sex表示學生的性別,數據類型為char,長度為2,允許為空;birthday表示學生的出生日期,數據類型為datetime,允許為空;hometown表示學生的籍貫,數據類型為varchar,長度為30,允許為空;telephone_no表示學生的聯系電腦,數據類型為varchar,長度為12,允許為空;address表示學生的住址,數據類型為varchar,長度為30,允許為空;others表示學生的備注信息,長度為50,允許為空。
2.修改表的結構
(1)使用T-SQL語句增加和刪除一個新列
語法:
Alter Table table
{
ADO
{[]
|colun_name As computed_column_expression
|[]
}[,...n]
|Drop
{Column column
}[,...n]
}
例子:打開cust資料庫,修改其中的表students的結構,增加一個新欄位,欄位名為ying,數據類型是varchar,長度是10,沒有默認值,充許為空。
Use cust
Alter Table students Add ying varchar(10) null
打開cust資料庫,修改其中的表students的結構,刪除一個欄位,欄位名為ying。
Use cust
Alter Table students Drop Column ying
3.向表中插入數據
(1)用 Insert 語句
語法如下:
Insert [Into]
{table_name|view_name}[(column_list)]
{Values|values_list|select_statement}
注意:在插入數據時,字元數據和日期數據要使用引號引起來。
例子:
Use cust
Insert Into students
Values (11,"影子","男","1999-12-12","湖北","83779805","武漢市橋口區","VB愛好者")
打開cust資料庫,向students表中插入數據
(2)用Default 選項
在插入數據時,可以使用Default選項。Default選項有兩種形式,一種形式是Default Values,另一種是Default。
Default Values 形式為表中的某一行的所有列插入默認值。使用這種形式的前提條件是表中的所有列必須是這四種類型之一:Identity屬性,Timestamp數據類型,允許為Null,或者有一個指定的默認值。否則,會錯誤信息。
例子:
Use cust
Insert Into students Default Values
這個例子會出現錯誤,因為students表的number欄位是設置為不允許為空的。
Default 形式是為表中的某一列插入默認值。要插入的該列必須具備一定的條件,即該列要麼是Timestamp 數據類型,要麼是允許為Null,要麼是有一個指定的默認值,否則,會出現錯誤信息。
例子:
Use cust
Insert Into students Values(11,"影子",Default,Default,Default,Default,Default,Default)
由天前2個欄位不能為空,所以要賦值,否則會出現錯誤,而後面的6個欄位允許為空,因此可以調用Default默認。
(3)插入部分數據
在使用Insert語句插入數據是,還可以插入部分數據,也就是可以為每一行的指定的部分列插入數據。在插入部分數據時,應該注意以下三個問題:
☆在 Insert 子句中,指定要插入數據的列名。
☆在 Values 子句中,列出與列名對應的數據。列名的順序和數據的順序應該完全對應。
☆在 Insert 子句中,沒有列出的列應該至少具有這四種類型之一:Identtty 屬性,Timestamp 數據類型,允許為 Null,或者有一個指定的默認值。否則,會出現錯誤信息。
例子:
Use cust
Insert Into students (number,name)
Values (110,"影子")
打開cust資料庫,向students表中插入一行數據
注意:如用下例語句將發生錯誤,因為name欄位是不允許為空的(在創建資料庫時設定的)
Insert Into students (number)
Values (110)
(4)用 Select 語句插入多條數據
Insert 語句插入數據的特點是每一次只能插入一行數據。相反,Select 也可以用在 Insert 語句中,並且可以一次插入多條數據。使用 Select 語句插入數據的語法形式如下:
Insert table_name
Select column_list
From table_list
Where search_conditions
在使用 Select 語句插入數據時,應該注意下面幾點:
☆在 Insert 語句中使用 Select 時,他們參考的表既可以是相同的,也可以是不同的。
☆要插入數據的表必須已經存在。
☆要插入數據的表必須和 Select 的結果集兼容。兼容的含義是列的數量和順序必須相同,列的數據類型或者相同,或者SQL Server 可以自動轉換。
例子:
Use cust
Insert students
Select number,name,sex,birthday,hometown,telphone_no,address,others
From students
注意:
Select 後面的欄位要輸完整,這個例子是自己向自己插入多條數據(自己向自己插入是被允許的)
補充:
你還可以「From students」後面加上「Where name="影子"」,只插入name等於影子的記錄,可以用And 和 Or 加上多個條件。
(5)使用 Select Into 插入數據到一個新表中
帶有 Into 子句的 Select 語句允許用戶定義一個新表並且把數據插入到新表中。這種方法不同於前面講述的那些方法。在前面的那些方法中,一個共同的特點,是在數據輸入之前表已經存在。而使用 Select Into 插入數據的方法,是在插入數據的過程中建立新表。
Select Into 語句的語法如下:
Select select_list
Into new_table_name
From table_list
Where search_conditions
在使用 Select Into 插入數據時,要注意下面幾點:
☆在某個資料庫中使用 Select Into 插入數據時,設置該資料庫的 Select Into/Bulk Copy 為真。
☆新表不能存在,否則會產生錯誤信息。
☆新表中的列和行是基於查詢結果集
☆要插入的數據不記錄在日誌中。
☆在select_list 中出現的列應該使用別名,否則,新表中的列沒有列名。沒列名的表只能通過 Select * From new_table_name 的形式查詢。因此,應該為列起個別名。
☆這種方法多用在對列進行各種計算的情況。
例子:
Select number,name
Into newcust1
From students
創建新的表newcust1,插入students表中的number和name欄位的所有數據。
補充:如果要插入所有欄位的記錄,則「Select *」,也可在「From students」後加條件,方法和上個例子一樣。
(6)用 UPdate 語句修改表中的數據
Update 語句用來修改表中已存在的數據。Update 語句既可以一次修改一行數據,也可以一次修改許多行,甚至可以一次修改表中的全部數據。Update 語句使用 Where 子句指定要修改的行,使用 Set 子句給出新的數據。新數據可以是常量,也可以是指定的表達式,還可以是使用 From 子句來自其他表的數據。
Update 語句的語法如下:
Update {table_name|view_name}
Set {column_list}=expression [,. . .]
[Where clause]
在使用 Update 語句時,如果沒有使用 Where 子句,那麼就對表中所有的行進行修改。如果使用Update 語句修改數據時與數據完整性約束有沖突,那麼修改就不會發生,整個修改事務全部滾回。例如,這種沖突可能是所輸入的值是錯誤的數據類型,或者所輸入的值違背了在該列定義的規則約束,等等。
例子:
Use cust
Update students
Set name=name+"007"
Where number>100
打開cust資料庫,修改students表,使number>100的數據的name的值全部加"007"。
4.用 Delete 語句刪除表中的數據
當資料庫中的數據不需要的進修可以刪除。一般情況下,刪除數據使用 Delete 語句。Delete 語句可以一次
4. 怎麼使用sql語句添加列
alter table 表名 add 列名 數據類型。
5. (Sqlserver)將在查詢結果插入新表中的時候添加一個自動增長列么 SQL語句怎麼寫
假設表有主鍵ID列,以下生成比原表多一個序號列並按ID號大小填充的新表。
select 序號=(select count(1) from tablename a where a.id>=tablename.id),* from tablename
6. sqlserver向資料庫插入數據的時候,自增張(標識列)列不允許為空,怎樣插入該列數據
只要設置了自動增長類型,在寫sql語句時顯式調用要插入的各欄位名,不要寫標識列就可以了,如下:
insert into 表名 列名1,列名2... values(值1,值2...);
7. SQL語句怎麼加列
ALTER TABLE 語句
ALTER TABLE 語句用於在已有的表中添加、修改或刪除列。
ALTER TABLE 語法
如需在表中添加列,請使用下列語法:
ALTERTABLEtable_name
ADDcolumn_namedatatype
在表 "Persons" 中添加一個名為 "Birthday" 的新列。
ALTERTABLEPersons
ADDBirthdaydate
新列 "Birthday" 的類型是 date,可以存放日期。數據類型規定列中可以存放的數據的類型。
(7)sql語句添加列教程擴展閱讀:
基本語句
1、數據記錄篩選:
sql="select * from 數據表 where欄位名 = 欄位值 order by 欄位名[desc]"(按某個欄位值降序排列,默認升序ASC)。
sql="select * from 數據表 where 欄位名 like '%欄位值%' order by 欄位名 [desc]"
sql="select top 10 * from 數據表 where欄位名=欄位值 order by 欄位名 [desc]"
sql="select * from 數據表 where欄位名in ('值1','值2','值3')"
sql="select * from 數據表 where 欄位名 between 值1 and 值2"
sql="select 列名1,列名2 from 數據表 where 欄位名=欄位值 group by 列名1,列名2 " (group by 用來分組,並且只有出現自group by 中的列名,才允許出現在select 語句中)。
2、更新數據記錄:
sql="update 數據表 set欄位名=欄位值 where 條件表達式"
sql="update 數據表 set 欄位1=值1,欄位2=值2 …… 欄位n=值n where 條件表達式"
3、刪除數據記錄:
sql="delete from 數據表 where 條件表達式"
sql="delete from 數據表" (將數據表所有記錄刪除)
8. 如何用SQL創建一個表格
1、打開SQL Server,在資料庫處,右鍵資料庫,點擊新建資料庫。
9. SQL命令怎麼用
SQL語句:
通過SQL語句可以完成對資料庫、表、數據的操作,也就是我們本教程要學習的主要內容。
一條SQL語句類似這樣,它的含義是:從Users表中取出列名為UserName的數據。
一些重要的SQL命令:
SELECT – 從資料庫中提取數據
UPDATE – 更新資料庫中的數據
DELETE – 從資料庫中刪除數據
INSERT INTO – 向資料庫中插入新數據
CREATE DATABASE – 創建新資料庫
ALTER DATABASE – 修改資料庫
CREATE TABLE – 創建新表
ALTER TABLE – 變更資料庫表
DROP TABLE – 刪除表
CREATE INDEX – 創建索引
DROP INDEX – 刪除索引
-from shulanxt
10. 如何利用SQL創建與修改列的說明信息詳解
我們先創建一個測試表:
if exists(select 1 from sys.tables where object_id=object_id('test'))
begin
drop table test
end
create table test
(
col1 varchar(50),
col2 varchar(50)
)
這個我們已經很熟悉了,那麼怎麼為列col1及col2加上說明信息呢?
這就要用到系統存儲過程sp_addextendedproperty。
在添加之前我們先看一下sp_addextendedproperty的語法:
sp_addextendedproperty
[ @name = ] { 'property_name' }
[ , [ @value = ] { 'value' }
[ , [ @level0type = ] { 'level0_object_type' }
, [ @level0name = ] { 'level0_object_name' }
[ , [ @level1type = ] { 'level1_object_type' }
, [ @level1name = ] { 'level1_object_name' }
[ , [ @level2type = ] { 'level2_object_type' }
, [ @level2name = ] { 'level2_object_name' }
]
]
]
]
該存儲過程一共有8個參數,估計初學者一看就暈了,不要著急,我們可以通過實例來理解,下面我們先利用sp_addextendedproperty為col1列加上說明:
execute sp_addextendedproperty N'MS_Description',N'這是測試列1',N'SCHEMA',N'dbo',N'table',N'test',N'column',N'col1'
上面就是為列col1加上說明的SQL命令,來理解一下:
雖然sp_addextendedproperty有8個參數,但我們可以把這個8個參數理解為4對,其實看參數名我們也可以猜出大概了:
@name與@value為一對
@level0type與@level0name為一對
@level1type與@level1name為一對
@level2type與@level2name為一對
那麼這4對參數分別代表什麼呢?
1,@name與@value
@name:指定我們是要為列添加什麼信息,比如我們要為列添加擴展信息,那麼@name就等於'Caption',本篇是要為列添加說明信息,所以@name等於'MS_Description'
@value:指定與@name關聯的值,本篇也就是列的具體說明。
2,@level0type與@level0name
@level0type:指定我們要修改的列的表所於那個資料庫架構,所以它等於'SCHEMA',有些網上教程中會說它也可以等於'user',但在sql server的未來版本中,將刪除'user',所以推薦大家用'SCHEMA'
@level0name:指定我們要修改的表所在架構的名稱
3,@level1type與@level1name
@level1type:指明我們要修改的列所屬對象是表,還是視圖等。本篇是修改表中的列,所以為'table',
@@level1name: 指明要修改的列所屬表的名稱
4,@level2type與@level2name
@level2type:指明我們要修改的對象是列,還是主鍵,還是約束等。本篇修改的是列,所以為'column'
@level2name:指明要修改列的列名
到此,我們應該了解sp_addextendedproperty中各參數的意思了,完整的SQL命令如下:
if exists(select 1 from sys.tables where object_id=object_id('test'))
begin
drop table test
end
create table test
(
col1 varchar(50),
col2 varchar(50)
)
execute sp_addextendedproperty N'MS_Description',N'這是測試列1',N'SCHEMA',N'dbo',N'table',N'test',N'column',N'col1'
execute sp_addextendedproperty N'MS_Description',N'這是測試列2',N'SCHEMA',N'dbo',N'table',N'test',N'column',N'col2'
執行命令後通過如下查詢語句來驗證我們的結果:
select B.Name,A.value from sys.extended_properties A
inner join sys.columns B on A.major_id=B.object_id
and A.minor_id=B.column_id
where A.major_id=object_id('test')
關於如何利用SQL語句查詢指定表的列說明信息,請參看本站:
利用SQL語句查詢出指定表的所有擴展屬性(列說明)
執行,返回的結果如下:
Name value
col1 這是測試列1
col2 這是測試列2
創建表時同時為表中的列添加說明信息我們已經完成了,那麼,我們要如何利用SQL來修改列的說明信息呢?利用系統存儲過程sp_updateextendedproperty,它的用法和sp_addextendedproperty一樣,就不多加說明了,修改示例如下:
execute sp_updateextendedproperty N'MS_Description',N'這是修改後的測試列1',N'SCHEMA',N'dbo',N'table',N'test',N'column',N'col1'
execute sp_updateextendedproperty N'MS_Description',N'這是修改後的測試列2',N'SCHEMA',N'dbo',N'table',N'test',N'column',N'col2'
同樣利用上面的SQL語句查詢修改後的結果:
Name value
col1 這是修改後的測試列1
col2 這是修改後的測試列2
-----------------------------------------------------------------註:轉載自.NET學習網