一、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將先執行內部的子查詢,然後將查詢結果返回給外部查詢的作為檢索的資料來源,最後執行外部的主查詢。而在執行包含標準聯接的查...