2015.11.29 HTML5真題練習
一、SQL簡述
1.SQL的概述
Structure Query Language(結構化查詢語言)簡稱SQL,它被美國國家標準局(ANSI)確定為關係型資料庫語言的美國標準,後被國際化標準組織(ISO)採納為關係資料庫語言的國際標準。資料庫管理系統可以通過SQL管理資料庫;定義和操作資料,維護資料的完整性和安全性。
2.SQL的分類
1、DDL(Data Definition Language) 資料定義語言,用來操作資料庫、表、列等; 常用語句:CREATE、 ALTER、DROP
2、DML(Data Manipulation Language) 資料操作語言,用來操作資料庫中表裡的資料;常用語句:INSERT、 UPDATE、 DELETE
3、DCL(Data Control Language) 資料控制語言,用來操作訪問許可權和安全級別; 常用語句:GRANT、DENY
4、DQL(Data Query Language) 資料查詢語言,用來查詢資料 常用語句:SELECT
二、資料庫的三大正規化
1、第一正規化(1NF)是指資料庫表的每一列都是不可分割的基本資料線;也就是說:每列的值具有原子性,不可再分割。
2、第二正規化(2NF)是在第一正規化(1NF)的基礎上建立起來得,滿足第二正規化(2NF)必須先滿足第一正規化(1NF)。如果表是單主鍵,那麼主鍵以外的列必須完全依賴於主鍵;如果表是複合主鍵,那麼主鍵以外的列必須完全依賴於主鍵,不能僅依賴主鍵的一部分。
3、第三正規化(3NF)是在第二正規化的基礎上建立起來的,即滿足第三正規化必須要先滿足第二正規化。第三正規化(3NF)要求:表中的非主鍵列必須和主鍵直接相關而不能間接相關;也就是說:非主鍵列之間不能相關依賴。
三、資料庫的資料型別
1.整數型別
根據數值取值範圍的不同MySQL 中的整數型別可分為5種,分別是TINYINT、SMALUNT、MEDIUMINT、INT和 BIGINT。最常用的為INT型別的,
2.浮點數型別和定點數型別
在MySQL資料庫中使用浮點數和定點數來儲存小數。
浮點數的型別有兩種:單精度浮點數型別(FLOAT)和雙精度浮點數型別(DOUBLE)。
而定點數型別只有一種即DECIMAL型別。
3.字串型別
在MySQL中常用CHAR 和 VARCHAR 表示字串。
兩者不同的是:VARCHAR儲存可變長度的字串。
當資料為CHAR(M)型別時,不管插入值的長度是實際是多少它所佔用的儲存空間都是M個位元組;
而VARCHAR(M)所對應的資料所佔用的位元組數為實際長度加1
4.日期與時間型別
MySQL提供的表示日期和時間的資料型別分別是 :YEAR、DATE、TIME、DATETIME 和 TIMESTAMP。
YEAR型別
YEAR型別用於表示年份,在MySQL中,可以使用以下三種格式指定YEAR型別 的值。
1、使用4位字串或數字表示,範圍為’1901’—'2155’或1901—2155。例如,輸人 ‘2019’或2019插人到資料庫中的值均為2019。
2、使用兩位字串表示,範圍為’00’—‘99’。其中,‘00’—'69’範圍的值會被轉換為 2000—2069範圍的YEAR值,‘70’—'99’範圍的值會被轉換為1970—1999範圍的YEAR 值。例如,輸人’19’插人到資料庫中的值為2019。
3、使用兩位數字表示,範圍為1—99。其中,1—69範圍的值會被轉換為2001— 2069範圍的YEAR值,70—99範圍的值會被轉換為1970—1999範圍的YEAR值。例 如,輸人19插入到資料庫中的值為2019。
請注意:當使用YEAR型別時,一定要區分’0’和0。因為字串格式的’0’表示的YEAR值是2000而數字格式的0表示的YEAR值是0000。
DATE型別
DATE型別用於表示日期值,不包括時間部分。在MySQL中,可以使用以下四種格式指定DATA型別的值
1、以‘YYYY-MM-DD'或者’YYYYMMDD'字串格式表示。
例如,輸入‘2014-01-21’或‘20140121’,插入資料庫中的日期都是2014-02-21。
2、以’YY-MM-DD’或者‘YYMMDD’字串格式表示。YY表示的是年,範圍為‘00‘~’99’,其中‘00’~’69’範圍的值會被轉換為2000~2069範圍的值,‘70’~‘99’範圍的值會被轉化為1970~1999範圍的值。
例如,輸入‘14-01-21’或者‘140121’,插入資料庫中的日期都是2014-01-21.
3、以YY-MM-DD或者YYMMDD數字格式表示。
例如,輸入14-021-21或140121,插入資料庫中的日期都為2014-01-21.
4、使用CURRENT_DATE或者NOW()表示當前系統日期
TIME型別
TIME型別用於表示時間值,它的顯示形式一般為HH:MM:SS,其中,HH表示小時, MM表示分,SS表示秒。在MySQL中,可以使用以下3種格式指定TIME型別的值。
1、以’D HH:MM:SS’字串格式表示。其中,D表示日可取0—34之間的值, 插人資料時,小時的值等於(DX24+HH)。
例如,輸入’2 11:30:50’插人資料庫中的日期為59:30:50。
2、以’HHMMSS’字串格式或者HHMMSS數字格式表示。
例如,輸人’115454’或115454,插入資料庫中的日期為11:54:54
3、使用CURRENT_TIME或NOW()輸人當前系統時間。
DATETIME型別
DATETIME型別用於表示日期和時間,它的顯示形式為’YYYY-MM-DD HH: MM:SS’,其中,YYYY表示年,MM表示月,DD表示日,HH表示小時,MM表示分,SS 表示秒。
1、以’YYYY-MM-DD HH:MM:SS’或者’YYYYMMDDHHMMSS’字串格式表示的日期和時間,取值範圍為’1000-01-01 00:00:00’—‘9999-12-3 23:59:59’。例如,輸人’2019-01-22 09:01:23’或 ‘20140122_0_90123’插人資料庫中的 DATETIME 值都為 2019-01-22 09:01:23。
2、以’YY-MM-DD HH:MM:SS’或者’YYMMDDHHMMSS’字串格式表示的日期和時間,其中YY表示年,取值範圍為’00’—‘99’。與DATE型別中的YY相同,‘00’— '69’範圍的值會被轉換為2000—2069範圍的值,‘70’—'99’範圍的值會被轉換為1970—1999範圍的值。
3、以YYYYMMDDHHMMSS或者YYMMDDHHMMSS數字格式表示的日期 和時間。例如,插入20190122090123或者190122090123,插人資料庫中的DATETIME值都 為 2019-01-22 09:01:23。
4、使用NOW來輸人當前系統的日期和時間。
TIMESTAMP型別
TIMESTAMP型別用於表示日期和時間,它的顯示形式與DATETIME相同但取值範圍比DATETIME小。在此,介紹幾種TIMESTAMP型別與DATATIME型別不同的形式:
1、使用CURRENT_TIMESTAMP輸人系統當前日期和時間。
2、輸人NULL時系統會輸人系統當前日期和時間。
3、無任何輸人時系統會輸入系統當前日期和時間。
時間函式:
SELECT NOW(); 當前年月日時間 2022-4-15 13:35:50
SELECT DAY (NOW()); 當前月份的第幾天 15
SELECT DATE (NOW()); 當前年月日 2022-4-15
SELECT TIME (NOW()); 當前時間 13:35:50
SELECT YEAR (NOW()); 當前年份 2022
SELECT MONTH (NOW()); 當前月份 4
SELECT CURRENT_DATE(); 當前年月 2022-4-15
SELECT CURRENT_TIME(); 當前時間 13:35:50
SELECT CURRENT_TIMESTAMP(); 當前年月日時間 2022-4-15 13:35:50
SELECT ADDTIME('14:23:12','01:02:01'); 兩個時間相加 15:25:13
SELECT DATE_ADD(NOW(),INTERVAL 1 DAY); 當前時間的後一天2022-4-16 13:35:50
SELECT DATE_ADD(NOW(),INTERVAL 1 MONTH);當前時間的後一月2022-5-15 13:35:50
SELECT DATE_SUB(NOW(),INTERVAL 1 DAY); 當前時間的前一天2022-4-14 13:35:50
SELECT DATE_SUB(NOW(),INTERVAL 1 MONTH);當前時間的前一月2022-3-15 13:35:50
SELECT DATEDIFF('2019-07-22','2019-05-05'); 兩個時間點中間有多少天78