SQL的那些事兒

2021-07-23 20:57:20 字數 2061 閱讀 4547

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 ) referenceforeign 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。說給我看了,今年找到物件。我就在那裡騙他們。說我找了乙個 人。明年去 以後就沒有多少機會見到他們了。呵呵,大姐就說這樣我不聽話,那樣不聽話,不讓我去,說還借我錢買房子,不能去,去了父母白養這麼大了,我總是騙他們,逗他們。以前還騙他們說我出家。有一段時間,工作不順心,我壓力挺大的。不知...