關於mysql的sql語句的彙總(學習筆記)02 (三個字段查詢)

這是2018.1.8 22:24的更新筆記 start:

(這裏的筆記有誤被刪除)

這是2018.1.8 22:24的更新筆記 end:
-- 多列組合外鍵,必須用表級約束的方法
-- 自關聯,自引用(一般用與,需要查詢多個相同的列名的情況下)
	create table tree
		(id int auto_increment PRIMARY key,
		name1 varchar(20),
		parent_id int,
		FOREIGN key(parent_id) references tree(id)
		)

–級聯刪除:刪除主表的數據,關聯的從表數據也刪除,則需要在建立外鍵約束的後面增加on delete cascade 或on delete set null,前者是級聯刪除,後者是將從表的關聯列的值設置爲null。

-- 增加 on delete cascade 或 on delete set null,前者是級聯刪除,後者是將從表關聯
-- 的列的值設置爲null;
create table student4
(id int auto_increment primary key,
name4 varchar(8),
classes_name varchar(20),
classes_number int,
foreign key(classes_name,classes_nunber) references classes1(name1,number) on delete cascade
)
-- check 檢查約束,無效果,mysql版本不支持;
create table mm
(id int auto_increment primary key,
name1 varchar(8),
aeg int,
check(age>20)
)

– 修改列

-- 增加add列名
-- 1)alter table 表 add 列 列的類型 列的參數
alter table mm add username char(20) not null DEFAULT ''
-- 2)alter table 表 add 列 列的類型 列的參數 after 某列(把新列加某列後面)
alter table mm add username char(20) not null DEFAULT '' after username
-- 3)alter table 表 add 列 列的類型 列的參數 after 某列(把新列加在最前面)
alter table mm add username char(20) not null DEFAULT '' firstj

– 分組

-- having 一般和group by連用,在結果組後再來設置條件
select ssex as '性別',count(*)
from student
group by ssex
HAVING ssex='男'
-- 查詢選修了三門課以上的學生的學號
-- 一定不能是 * ,而是某一個列或者某個列的聚合函數,
-- 順序:where 
--       GROUP BY
--       HAVING
-- ----------------------------------

select語句的執行順序:

											FROM
											-- ON
											-- JOIN
											WHERE -- where的優先級優於聚集函數;
											GROUP BY
											-- WITH CUBE or WITH ROLLUP
											HAVING -- 聚集函數優於having先執行;
											SELECT
											DISTINCT
											ORDER BY
											limit 


---------------------------------
select * from sc

select sno,count(*)
from sc
group by sno
having count(cno)>3
-- inner join 是比較運算符,只返回符合條件的行。
-- 當在查詢之中,不同的表中有了相同字段名稱的時候,訪問這些字段必須加上表名稱,即“表.字段”
--------------------------------------------------

– 多表連接查詢

select student.*,sc.*
from student,sc
where student.sno=sc.sno
-- 等同於
select student.*,sc.*
from student INNER JOIN sc ON student.sno=sc.sno -- 條件用on引出

當有多個內連接時,執行順序是從前往後執行的;


發佈了29 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章