SQL 基礎查詢語言 二

2021-06-27 03:42:12 字數 4721 閱讀 1890

一、alias (別名)

格式:表名 as 表的別名,列名 as列的別名;

select 表1別名.列1,表2別名.列2 from 表1 as 表1別名,表2 as 表2別名;

eg:select stu.id,tea.name from student as stu,teacher as tea;

二、sql關鍵字

1.between 關鍵字

在某個範圍內:select *from 表名 where 條件列 between 值1 and 值2;

eg:select *from student where id between  '901' and '905';

不在某個範圍內:select *from 表名 where 條件列 not between 值1 and 值2;

eg:select *from student where id  not between  '903' and '905';   

tip:mysql在between...and中包含邊界值,在not中不包含

2.[inner] join 關鍵字

select*from 表1 [inner]join 表2 on 表1.id=表2.id;

eg:select*from student inner join teacher on student.id=teacher.id;

tip:左右表都匹配則返回

3.left join

select*from 左表 left join 右表 on 左表.id=右表.id;

eg:select*from student left join teacher on student.id=teacher.id;

tips:a)左表所有資料都返回到結果中;

b)若右表無法匹配左表的資料,右錶用null 進行配對.

4.right join

select*from 左表 right join 右表 on 左表.id=右表.id;

eg:select*from student right join teacher on student.id=teacher.id;

tips:a)右表所有資料都返回到結果中;

b)若左表無法匹配右表的資料,左表用null 進行配對.

5.full join

select*from 表1 full join 表2 on 表1.id=表2.id;

eg:select*from student full join teacher on student.id=teacher.id;

tip:只要其中乙個表匹配,就返回,只有5.1以上才能使用這個全聯接功能;

6.union 關鍵字

格式:(select 列 from 表) union [all] (select 列 from 表);

eg:(select id from etudent) union [all] (select name from teacher);

tips:a)兩次查詢子句返回的結果集的列數必須一樣,型別相似。

b)union會自動去掉重複行,不想去掉就在union後面加上all。

c)如果查詢字句中沒有order by,limit,可以不使用()。

d)在聯合語句的查詢子句中如果要使用order by進行排序,那麼必須跟上limit限定,否則order by。

e)返回結果集的欄位名,是用第乙個查詢語句的欄位名來命名。

f)用於將兩個查詢邏輯完全相反的結果集合並到一起。

三、sql 約束

1.not null

create table 表名(欄位名 字段型別 not null);

eg:create table student(id int(20) not null,name varchar(50));

2.unique

新增:create table 表名(欄位名 字段型別,...,unique(id));

create table student(id int(20) not null,name varchar(50),unique(id));

追加:單列:alter table 表名 add unique(列);

eg:alter table student unique (id);

多列:alter table 表名 add constraint unique 約束名 unique(列名...);

eg:alter table student add constraint unique stu_tea unique(id,name);

tip:向表中新增唯一約束時,需注意這一列中是否已有重複值,若已有重複值,將無法新增唯一約束

刪除:alter table 表名 drop index unique 約束名;

eg:alter table student drop index unique stu_tea;

tip:為多列設定unique約束,需多列全部重複,才會生效。

3.primary key(主鍵)

新增:create table 表名(欄位名 字段型別,...,primary key(id));

create table student(id int(20) not null,name varchar(50),primary key(id));

追加:alter table 表名 add primary key(列);

eg:alter table student add primary key(id);

刪除:alter table 表名 drop primary key;

eg:alter table student drop primary key;

tips:a)主鍵必須含唯一值(不能重複);

b)主鍵不能含有null值(第一次可不填,會自動補充預設值);

c)每個表只有乙個主鍵

4.foreign key(外來鍵)

新增:create table 表名(欄位1 字段型別1)foreign key(欄位1)references 表2(表2欄位名);

create table student(id int(20),foreign key(stu_id)references teacher(tea_id));

追加:alter table 表名 add foreign key(欄位1)references 表2(表2欄位名);

eg:alter table student add foreign key(stu_id)references teacher(tea_id);

刪除:alter table 表名 drop foreign key 外來鍵約束名;

5.check 關鍵字

新增:create table 表名(欄位名 字段型別,...,check(欄位名》=值));

eg:create table student(id int(10),...,check(id<=50));

追加:單列:alter table 表名 add check(列》=值);

eg:alter table student check (id<=50);

多列:alter table 表名 add constraint  約束名 check(列》=值 and 列<=值);

eg:alter table student add constraint  stu_tea_check check(id<=50and id>=0);

刪除:alter table 表名 drop check 約束名;

6.default 預設值

新增:create table 表名(欄位名1 字段型別 default 預設值,欄位名2 字段型別...);

create table student(id int(20) default null,name varchar(50));

追加:alter table 表名 alter 列名 set default 預設值;

eg:alter table student alter course set default 『英語』;

刪除:alter table 表名 alter 列名 drop default;

eg:alter table student alter course drop default;

tips:a)mysql會給這些列自動加乙個預設值為null的預設值;

b)如果追加預設值會覆蓋掉前面設定的預設值;

c)若刪除預設值,不會自動回到default null,而是沒有了預設值,沒有預設值那麼我們插入資料的時候就一定需要插入這一列的資料,這個資料也可以是null。

四、view檢視:

約束用於限制介入表的資料的型別;

1.暴露部分資料給外部。

2.檢視主要用於讀取資料,因為插入資料要受到原來的表的限定。

3.檢視實質上並不是一張表,儘管看起來一模一樣,但是資料實質上市存在原來的表中的。

4.簡化我們某些較為複雜的業務邏輯。

建立檢視:create view 檢視名 as select statement(查詢語句);

eg:create view v_stu_tea as select id,name from student where name='范冰冰';

修改檢視:create view 檢視名 as select statement(查詢語句);

eg:create view  v_stu_tea select name from student where id='907';

刪除檢視:drop view 檢視名;

eg:create view v_stu_tea;    

SQL語言基礎二

如何提高select語句的效率?1.使用exists關鍵字檢查結果集 不要用count 來檢查結果集中是否包含行。2.使用標準聯接代替巢狀查詢 在執行巢狀查詢時,sql server將先執行內部的子查詢,然後將查詢結果返回給外部查詢的作為檢索的資料來源,最後執行外部的主查詢。而在執行包含標準聯接的查...

SQL語言基礎二

1.使用exists關鍵字檢查結果集 不要用count 來檢查結果集中是否包含行。2.使用標準聯接代替巢狀查詢 在執行巢狀查詢時,sql server將先執行內部的子查詢,然後將查詢結果返回給外部查詢的作為檢索的資料來源,最後執行外部的主查詢。而在執行包含標準聯接的查詢時,sql server將要執...

SQL語言基礎二

如何提高select語句的效率?1.使用exists關鍵字檢查結果集 不要用count 來檢查結果集中是否包含行。2.使用標準聯接代替巢狀查詢 在執行巢狀查詢時,sql server將先執行內部的子查詢,然後將查詢結果返回給外部查詢的作為檢索的資料來源,最後執行外部的主查詢。而在執行包含標準聯接的查...