sql語言有以下幾個部分:
sql的ddl包含:
sql標準支援多種固有型別,包括:
create
table r
(a1 d1,
a2 d2,
...,
an dn,
《完整性約束1>,
《完成性約束k>);
sql支援許多不同的完整性約束, sql禁止破壞完整性約束的任何資料庫更新:
-primary key(aj
1 , aj
2 , … aj
m ): 其中aj
1 , aj
2 , … aj
m 構成關係的主碼。主碼屬性必須非空且唯一。
-foreign key(ak
1 , ak
2 , … , ak
n ) reference:foreign key宣告表示關係中任意元組在屬性(ak
1 , ak
2 , … , ak
n )上的取值必須對應於關係s中某元組在主碼屬性上的取值。
-not null: 乙個屬性上的not null 約束表明在該屬性上不允許空值。
insert into table_name
values(v1, v2, ..., vn);
delete
from table_name;
drop
table table_name;
drop table命令從資料庫中刪除關於被去掉關係的所有資訊。
drop table r 是比delete from r 更強的語句,delete from 儲存關係r,但刪除r的所有元組。而drop table from 不僅刪除r的所有元組,還刪除r的模式。
alter
table r add a d;
其中r是現有關係的名字,a是待新增屬性的名字,d是待新增屬性的域。
使用alter table命令為已有關係增加屬性。關係上的所有元組在新屬性上的取值將被設定為null。
sql查詢格式:
select a1, a2, ..., an
from r1, r2, ..., rn
where p;
其中ai代表乙個屬性,每個ri代表乙個關係。p是乙個謂詞。如果省略where子句,則謂詞p為true.
為了發揚自然連線的優點,同時避免不必要的相等屬性帶來的危險,sql提供了一種自然連線的構造形式,允許使用者來指定哪些列相等。
select name, title
from (instructor natural
join teaches) join course using (course_id);
join…using運算中需要給定乙個屬性名列表,其兩個輸入中都必須具有相同名稱的屬性。
old_name as new_name
as語句既可出現在select子句中,也可以出現在from子句中。
重新命名關係的原因:
1. 把乙個長的關係名替換成短的,這樣在查詢的其他地方使用起來就更為方便。
2. 為了適用於需要比較同一關係中的元組的情況(表別名).
like 'ab\%cd%' eacape '\';
匹配所有以"ab%cd"開頭的字串
select *
from instructor
order
by salary desc, name asc;
SQL那些事兒(一)
比如這樣 insert into student id,code,name,sql values 1 001 張三 insert into student id values 1 where name 李四 這樣肯定會報錯,因為 會影響外面sql語句 這時我們要修改為這樣 insert into s...
原創 SQL優化之索引的那些事兒
sql專欄 sql基礎知識彙總 sql高階知識彙總 提到索引,想必小夥伴們都知道,它是為了提高查詢效率而生。但是在查詢過程中,怎麼才能讓我們的查詢語句使用索引?相必大家或多或少都會遇到這樣的問題。今天我們就來回答這個問題。1 聚集索引和非聚集索引 索引一般分為聚集索引和非聚集索引。聚集索引速度很快,...
object的那些事兒
昨天和大姐qq。說給我看了,今年找到物件。我就在那裡騙他們。說我找了乙個 人。明年去 以後就沒有多少機會見到他們了。呵呵,大姐就說這樣我不聽話,那樣不聽話,不讓我去,說還借我錢買房子,不能去,去了父母白養這麼大了,我總是騙他們,逗他們。以前還騙他們說我出家。有一段時間,工作不順心,我壓力挺大的。不知...