1. 程式人生 > >SQL Server資料庫常見問題(一)

SQL Server資料庫常見問題(一)

1.當要刪除某個表中的索引時,出現

不允許對索引 ‘grade.pk_grade’ 顯式地使用 DROP INDEX。該索引正用於 PRIMARY KEY 約束的強制執行。
可使用如下語句完成刪除索引:

alter table grade
drop constraint pk_grade

語法為:

alter table table_name
drop constraint index_name

2.關於sql server 中語句是否加分號的問題
對於在sql server中的命令,一般來說是不加分號的,加分號一般是為了能夠一次執行多條語句。但在有些資料庫中是要加分號的。
在將sql 語句嵌入在某些高階語言程式中時,也不能加分號,這是會編譯出錯,因為編譯器會將分號視作sql語句的一部分。
但是也有必須加分號的情況,詳情請見

sql中必須加分號的兩種情況

3.無法繫結由多個部分組成的識別符號(未完美解決)
我在sql server 2017中編寫了如下命令

select student.sno,student.sname from student
where student.sno = grade.sno

在執行時發生瞭如下錯誤:

無法繫結由多個部分組成的識別符號 “grade.sno”。

在網上查閱了很多資料,按照網上一些資料的意思是說grade表有別名,在使用這個表的時候需要使用別名,因為在sql中一般會優先使用別名。但是我並沒有取別名,對其中的任何一列也沒有取別名,所以很是奇怪,後來查看了一下w3cschool,使用了inner join就解決了問題:

select student.sno,student.sname from student
inner join grade
on student.sno = grade.sno

這是就能成功執行了。
雖然問題解決了,但是還是很疑惑,因為我那樣的寫法並沒有什麼錯誤,裡面肯定有什麼我不知道的原因。
這裡補充一下設定別名的語法:

表的 SQL Alias 語法:

SELECT column_name(s)
FROM table_name
AS alias_name

列的 SQL Alias 語法 :

SELECT column_name AS alias_name FROM table_name