sql約束與子查詢

2021-09-03 01:30:56 字數 2358 閱讀 2414

1.主鍵約束

1.2聯合主鍵:

例:create table stu(

classid int,

stuid int,

styname varchar(50),

primary key(classid,stuid)

);1.3 建立表之後新增主鍵 :

create table stu(

classid int,

stuid int,

styname varchar(50)

);alter table stu add primary key(stuid);

2.唯一約束 unique:

特點:資料不能重複。

create table stu(

stuid int primary key,

stuname varchar(50)unique

);3.非空約束 not null

create table stu(

stuid int primary key,

stuname varchar(50)not null

);4.預設約束 default

create table stu(

stuid int primary key auto_increment,

stuname varchar(50)default』zhangsan』

);5.自動增長 auto_increment

注意:自定增長只對型別為整數的主鍵有效

create table stu(

stuid int primary key auto_increment,

stuname varchar(50)

);6.外來鍵

1.外來鍵約束:foreign key:

create table score(

id int primary key,

kemu varchar(50),

score double,

stuid int,

constraint fk_id foreign key(你的外來鍵欄位名) references 外表表名(對應的表的主鍵欄位名);

constraint fk_id foreign key(stuid) references stu(stuid)

);主表:從表通過外來鍵匹配在主表中獲取資訊

從表:有外來鍵的

結論1:從表中只能新增主表已有的對應內容

結論2:主表不能刪除或修改從表中已有對應外來鍵的資料

解除外來鍵:alter table 從表 drop foreign key 外來鍵約束的名稱;

alter table score drop foreign key fk_id;

多表查詢:

內連線:[inner] join,從左表中取出每一條記錄,去右表中與所有的記錄進行匹配,匹配必須是某個條件在左表中與右表中相同,最終才會保留結果,否則不保留。

基本語法:

左表 [inner] join 右表 on 左表.欄位 = 右表.欄位;

on表示連線條件:條件字段就是代表相同的業務含義(如my_student.c_id和my_class.id),大多數情況下為兩張表中的主外來鍵關係。

外連線外連線:outer join,以某張表為主,取出裡面的所有記錄,然後每條與另外一張表進行連線,不管能不能匹配上條件,最終都會保留。能匹配,正確保留;不能匹配,其它表的字段都置空(null)。

外連線分為兩種:是以某張表為主,有主表

left join:左外連線(左連線),以左表為主表

right join:右外連線(右連線),以右表為主表

基本語法:

左表 left/right join 右表 on 左表.欄位 = 右表.欄位;

on表示連線條件:條件字段就是代表相同的業務含義(如my_student.c_id和my_class.id),大多數情況下為兩張表中的主外來鍵關係。

自然連線

自然連線:natural join,自然連線,就是自動匹配連線條件,系統以欄位名字作為匹配模式(同名字段就作為條件,多個同名字段就都作為條件)。

子查詢:

乙個select語句中包含另乙個完整的select語句。

子查詢就是巢狀查詢,即select中包含select,如果一條語句中存在兩個,或兩個以上select,那麼就是子查詢語句了。

子查詢出現的位置:

where後,作為條為被查詢的一條件的一部分;

from後,作表;

當子查詢出現在where後作為條件時,還可以使用如下關鍵字:

anyall

子查詢結果集的形式:

單行單列(用於條件)

單行多列(用於條件)

多行單列(用於條件)

多行多列(用於表)

SQL 子查詢與組合查詢

2.組合查詢 union union all 在 where 條件中某個值可以通知子查詢句表示 就是 select 鑲嵌select 語句select from table1 where id select id from table2 where name xx with as 相當於將 as 內...

子查詢 聯結 約束 索引

子查詢作為過濾條件 select name,gender from emp where dept id in select id from dept where name 開發部 子查詢作為計算字段 select name,select count from emp where dept id de...

MySQL約束,多表查詢和子查詢

多表查詢 子查詢主鍵特性 非空唯一 被引用當表的某一列被指定為主鍵後,該列就不能為空,不能有重複值出現 建立表時指定主鍵 方法一 create table emp empno int primary key,ename varchar 20 方法二 create table emp empno in...