MySQL 是一個開源的關系型數據庫管理系統,被廣泛應用于Web應用, 也是最常用的數據庫之一。
CREATE TABLE person ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, id_card VARCHAR(18) NOT NULL, age INT NOT NULL );
在設計個人信息表時,有一些字段是必須的,比如姓名、身份證號和年齡。其中,身份證號作為唯一標識符,必須保證正確性和完整性。
根據我國的法律規定,身份證號可以分為18位和15位兩種,其中18位身份證號中包含了出生日期信息。因此,可以通過身份證號計算出一個人的年齡段。
SELECT id, name, id_card, YEAR(CURDATE()) - YEAR(id_card) - IF(STR_TO_DATE(CONCAT(YEAR(CURDATE()), '-MM-DD'), '%Y-%m-%d')< STR_TO_DATE(CONCAT(YEAR(id_card), '-MM-DD'), '%Y-%m-%d'), 1,0) AS age, CASE WHEN YEAR(CURDATE()) - YEAR(id_card) - IF(STR_TO_DATE(CONCAT(YEAR(CURDATE()), '-MM-DD'), '%Y-%m-%d')< STR_TO_DATE(CONCAT(YEAR(id_card), '-MM-DD'), '%Y-%m-%d'), 1,0)< 18 THEN '未成年' WHEN YEAR(CURDATE()) - YEAR(id_card) - IF(STR_TO_DATE(CONCAT(YEAR(CURDATE()), '-MM-DD'), '%Y-%m-%d')< STR_TO_DATE(CONCAT(YEAR(id_card), '-MM-DD'), '%Y-%m-%d'), 1,0) BETWEEN 18 AND 40 THEN '青年' WHEN YEAR(CURDATE()) - YEAR(id_card) - IF(STR_TO_DATE(CONCAT(YEAR(CURDATE()), '-MM-DD'), '%Y-%m-%d')< STR_TO_DATE(CONCAT(YEAR(id_card), '-MM-DD'), '%Y-%m-%d'), 1,0) BETWEEN 41 AND 60 THEN '中年' ELSE '老年' END AS age_range FROM person;
上述代碼中,我們使用了MySQL的日期函數和邏輯表達式計算出每個人的年齡,并通過CASE語句將年齡轉化為相應的年齡段。這樣,我們可以在查詢時方便地查看每個人所屬的年齡段。