【躍遷之路】【422天】刻意練習系列181—SQL(2018.04.03)

@(躍遷之路)專欄spa

叨叨兩句

  1. 技術的精進不能只是簡單的刷題,而應該是不斷的「刻意」練習
  2. 該系列改版後正式歸入【躍遷之路】專欄,持續更新

刻意練習——MySQL

2018.04.02

題目描述code

DROP TABLE IF EXISTS test1;
CREATE TABLE test1 (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(20) NOT NULL,
course varchar(20) NOT NULL,
score bigint(20) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;blog

INSERT INTO test1 VALUES ('1', '張三', '數學', '34');
INSERT INTO test1 VALUES ('2', '張三', '語文', '44');
INSERT INTO test1 VALUES ('3', '張三', '英語', '54');
INSERT INTO test1 VALUES ('4', '李四', '數學', '134');
INSERT INTO test1 VALUES ('5', '李四', '語文', '144');
INSERT INTO test1 VALUES ('6', '李四', '英語', '154');
INSERT INTO test1 VALUES ('7', '王五', '數學', '234');
INSERT INTO test1 VALUES ('8', '王五', '語文', '244');
INSERT INTO test1 VALUES ('9', '王五', '英語', '254');rem

查出如下結果
數學

法1it

SELECT
    A.username,A.score as '數學',B.score as '語文',C.score as '英語'
FROM 
(select username,course,score from test1 where course = '數學') A,
(select username,course,score from test1 where course = '語文') B,
(select username,course,score from test1 where course = '英語') C
WHERE
    A.username = B.username
and B.username = C.username

法2【推薦】class

select
    username,sum(case course when '數學' then score else 0 end ) as '數學',
sum(case course when '語文' then score else 0 end ) as '語文',
sum(case course when '英語' then score else 0 end ) as '英語'
FROM
    test1
group by username

2018.04.03

題目描述test

在audit表上建立外鍵約束,其emp_no對應employees_test表的主鍵id。
CREATE TABLE employees_test(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);date

CREATE TABLE audit(
EMP_no INT NOT NULL,
create_date datetime NOT NULL
);select

DROP TABLE audit;
CREATE TABLE audit(
    EMP_no INT NOT NULL,
    create_date datetime NOT NULL,
    FOREIGN KEY(EMP_no) REFERENCES employees_test(ID)
);
相關文章
相關標籤/搜索