下麵是我總結的一些基礎的sql知識,主要是為了以後更好的查閱和幫助其他初學的人,同時記錄自己的成長,還寫了一點稍有難度的sql面試題級別的題目,好了廢話不多說,見真題。。。 #創建資料庫 CREATE DATABASE mytest CHARACTER SET gbk #刪除資料庫 DROP DAT... ...
下麵是我總結的一些基礎的sql知識,主要是為了以後更好的查閱和幫助其他初學的人,同時記錄自己的成長,還寫了一點稍有難度的sql面試題級別的題目,好了廢話不多說,見真題。。。 #創建資料庫 CREATE DATABASE mytest CHARACTER SET gbk #刪除資料庫 DROP DATABASE mytest 表的操作 #創建表(create table 表名(columns)) CREATE TABLE students( id INT PRIMARY KEY, NAME CHAR(10) NOT NULL, sex CHAR(4) NOT NULL ); #刪除表(drop table 表名) DROP TABLE students #在表格中插入數據(insert into 表名(屬性) values(對應的值)) INSERT INTO students(id,NAME,sex) VALUES(1,"張三","男") #更新表格數據(update 表名 set 鍵=值,鍵=值 where 條件)中間要用“,”隔開,其他的無效 set只需寫一個 UPDATE students SET id=2 , NAME="a" WHERE id=1 #刪除表中數據(delete from 表名 where 條件) DELETE FROM students WHERE id=0 #查看表中數據(select 查詢的東西 from 表名 where 條件) SELECT * FROM students WHERE id=1 SELECT * FROM students ORDER BY age DESC(order by升序,order by 列名 desc降序) 列 #添加列(alter table 表名 add 列名 欄位類型) ALTER TABLE students ADD tel CHAR(20) ALTER TABLE students ADD address CHAR(50) AFTER sex #刪除列(alter table 表名 drop 列名) ALTER TABLE students DROP address #修改列屬性(alter table 表名 change 需要修改的列名 修改後的列名 新列名欄位類型) ALTER TABLE stu CHANGE telphone tel CHAR(20) DEFAULT "-" ALTER TABLE students CHANGE tel ALTER TABLE students RENAME stu 簡單函數 SELECT SUM(age) AS "總年齡" FROM students SELECT AVG(age) AS "平均年齡" FROM students SELECT MAX(age) AS "最大年齡" FROM students SELECT COUNT(id) AS "人數" FROM students(統計人數選擇主鍵不然可為空的列會影響結果) 分組 表內容: 2005-05-09 勝 2005-05-09 勝 2005-05-09 負 2005-05-09 負 2005-05-10 勝 2005-05-10 負 2005-05-10 負 如果要生成下列結果, 該如何寫sql語句? 勝 負 2005-05-09 2 2 2005-05-10 1 2 SELECT DATA AS " ",SUM(result='勝') AS "勝" ,SUM(result='負') AS "負" FROM test1 GROUP BY DATA
Case when(case 屬性=“” then “” end) 寫出由table1.table2得到table3的sql語句![]()
SELECT t1.部門dep,SUM(CASE WHEN 月份mon='一月份' THEN 業績yj ELSE NULL END) AS '一月份', SUM(CASE WHEN 月份mon='二月份' THEN 業績yj ELSE NULL END) AS '二月份', SUM(CASE WHEN 月份mon='三月份' THEN 業績yj ELSE NULL END) AS '三月份' FROM table1 t1 LEFT JOIN table2 t2 ON t1.部門dep=t2.部門dep GROUP BY 部門dep 左連接與右連接(left join 表名 on 連接語句) Left join與right join區別就是:左連接是以主表為主,顯示所有內容,若連接的表沒有與它對應的值則不顯示或顯示為null,右連接同理。 內連接
用一條SQL語句查詢出每門課都大於80分的學生姓名(表名為score) Select distinct(去重) name from score where name not in( Select name from score where fenshu<=80; );
Union all、union(下分別為t1.t2)![]()
SELECT * FROM t1 UNION ALL SELECT * FROM t2 (不去除重覆)===》t3 SELECT * FROM t1 UNION SELECT * FROM t2 (去除重覆)=====>t4
(上分別為t3.t4)