MySQL
數(shù)據(jù)庫概念
范式
范式是數(shù)據(jù)庫設(shè)計規(guī)范熟掂,范式越高則數(shù)據(jù)庫冗余越小洞翩,但查詢也更復(fù)雜港令,一般只需滿足第三范式。
范式 | 含義 |
---|---|
第一范式 | 每列都是不可再分的數(shù)據(jù)單元秕磷。 |
第二范式 | 在第一范式的基礎(chǔ)上消除部分依賴诵闭,非主鍵列必須完全依賴于主鍵列。 |
第三范式 | 在第二范式的基礎(chǔ)上消除傳遞依賴澎嚣,非主鍵列只依賴于主鍵列疏尿。 |
SQL
類型 | 含義 |
---|---|
DQL | 數(shù)據(jù)查詢語言。通常是由 SELECT币叹、FROM润歉、WHERE 組成的語句。 |
DML | 數(shù)據(jù)操縱語言颈抚。包括 INSERT踩衩、UPDATE、DELETE 語句贩汉。 |
DCL | 數(shù)據(jù)控制語言驱富。通過 GRANT 和 REVOKE,設(shè)置用戶或用戶組的訪問權(quán)限匹舞。 |
DDL | 數(shù)據(jù)定義語言褐鸥。常用的有 CREATE 和 DROP和truncate,用于創(chuàng)建赐稽、刪除表和索引等叫榕。 |
TCL | 事務(wù)控制語句SAVEPOINT:保存點浑侥;ROLLBACK:回退到某點;COMMIT:提交事務(wù) |
基本語句(1)
SQL中的升序和降序:
select * from 表名 order by 字段名 desc //降序
select * from 表名 order by 字段名 asc //升序
降序:
select * from emp order by empid desc; //按empid這一列的值降序來排列查詢出emp表
升序:
select * from emp order by age asc; //按age這一列的值升序來排列查詢出emp表
select * from emp order by age ; //默認為升序
sql中使一個字段升序晰绎,一個字段降序
ORDER BY _column1, _column2; /* _column1升序寓落,_column2升序 */
ORDER BY _column1, _column2 DESC; /* _column1升序,_column2降序 */
ORDER BY _column1 DESC, _column2 ; /* _column1降序荞下,_column2升序 */
ORDER BY _column1 DESC, _column2 DESC; /* _column1降序伶选,_column2降序 */
基本語句(2)sql 語句中:select a ,b尖昏,c 然后group by一定要接a仰税,b,c嗎抽诉?
不一定的,select a,b,c from table group by a,b,c,d 也是正確的寫法陨簇。
SQL的grop by 語法為:
select 選取分組中的列+聚合函數(shù) from 表名稱 group by 分組的列
從語法格式來看,是先有分組掸鹅,再確定檢索的列塞帐,檢索的列只能在參加分組的列中選。
所以問題中的巍沙,group by 后的 a,b,c是先確定的葵姥。select后的a,b,c才是可以變的。即
以下語句都是正確的:
select a,b,c from table group by a,b,c,d
select a,b from table group by a,b,c
select a,max(a) from table group by a,b,c
以下語句則是錯誤的:
select a,b,c from table group by a,b
select a,b,c from table group by a