sql語言總結合集

未完待續,,本來想在自己的網站上寫的,奈何,那個編輯器太次了,謝謝日記尚可。寫代碼的話就非常不友好。

個人小站

-- 數據操縱語言DML(update, insert ,delete)

-- 1.插入部分列
INSERT INTO exam(id,NAME,English,chinese,math) VALUE( 1,'xucheng',90 ,90,90);
INSERT INTO exam(id,NAME,English,chinese) VALUE(NULL,'zhangshan',91,91);

INSERT INTO score(id,NAME,English,chinese) VALUE(NULL,'李帥',45,60);
-- 2插入所有列
INSERT INTO exam VALUES(2,'小弟',90,100,100);
-- 3、修改記錄
UPDATE exam SET chinese = 99; -- 全表修改
UPDATE exam SET math = 100 WHERE id ='1';
-- 4.刪除記錄
DELETE FROM exam WHERE id = '2';
DELETE FROM exam; -- 全表刪除

-- delete 與 truncate的區別
-- truncate table 刪除表的記錄:將整個表刪除掉。重新創建一個新的表輸入DDL 
-- delete form刪除表的記錄:一條一條進行刪除,delete.

CREATE  TABLE score(
	id INT(11) PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20),
	English INT,
	chinese INT,
	math INT
);

INSERT INTO exame VALUES(3,'成',90,90,90);
INSERT INTO exame VALUES(4,'武',90,90,35);
DELETE FROM exame;
INSERT INTO exame VALUES( NULL ,'李太白',10,10,10);
TRUNCATE table exame;

-- 事務管理:只能作用在DML語句上,如果在一個事務中用delete刪除所有記錄,可以找回
-- 使用delete 刪除後可以用commit 和 rollback 找回數據,使用truncate後就找不回來了。

-- delete 、 truncate、 drop 的區別
DELETE 、truncate \DROP 的區別
DELETE 、truncate \只是刪除表的記錄。而drop會直接刪除表、

USE mybase;
CREATE TABLE (
	id INT(11) PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20),
	english int,
	chinese  INT,
	math int
);
RENAME TABLE exam TO exam1;

INSERT INTO exam1 values(NULL,'小白',80, 80, 80);
INSERT INTO exam1 VALUES(NULL,'小藍',89,89,19);
INSERT INTO exam1 VALUES(NULL,'小綠',90,89,91);

-- 1.全表查詢 select * from 表;
SELECT * FROM exam1;
-- 2. 查詢部分字段:select 字段,字段,字段.... from 表;
SELECT NAME , english, math FROM exam1; 
-- 3.過濾重複字段行。select [distinct] * |列名 from 表;
SELECT DISTINCT math FROM exam1;
SELECT DISTINCT NAME,math,form exam1;
-- 4、查詢字段起別名。select 字段,as 新字段名,字段 新字段名 from 表;
SELECT NAME,english AS my_english FROM exam1;
-- 5,查詢指定字段
SELECT NAME,english,chinese FROM exam1 WHERE NAME='李白';
-- 6.使用表達式+-*/
SELECT id,NAME,english-20 AS _english FROM exam1;
SELECT NAME,english+chinese+math FROM exam1;
-- 7.模糊查詢
SELECT * FROM exam1 WHERE NAME LIKE '小_';
SELECT * FROM exam1 WHERE NAME LIKE '%%';
-- 8.使用and. or
SELECT * FROM exam1 WHERE english > 90 AND chinese > 90;
SELECT * FROM exam1 WHERE engilsh > 90 OR math >90;
-- 9.使用in. not in
SELECT * FROM exam1 WHERE id = 2 OR id = 3 OR id = 4;
SELECT * FROM exam1 WHERE id IN(2,3,4);
SELECT * FROM exam1 WHERE id NOT in (2,3,4);
-- 10使用between ...and []
SELECT * FROM exam WHERE english BETWEEN 90 AND 100;
-- 11,is null,is not null
INSERT INTO exam1(id, NAME ) VALUES(NULL,NULL); 
SELECT * FROM exam1 WHERE NAME IS NULL;
SELECT * FROM exam1 WHERE NAME IS NOT NULL;
-- 12, 排序查詢
SELECT * FROM exam1 ORDER BY chinese ASC;
SELECT * FROM exam1 ORDER BY chinese DESC;
SELECT * FROM exam1 ORDER BY english DESC,chinese DESC;
 -- 如果英語成績相同,按照漢語成績降序排列
 SELECT * FROM exam1 WHERE NAME LIKE '小%' ORDER BY english ASC ;
-- 12。聚合函數
SELECT SUM(english+math+chinese) FROM exam;
SELECT COUNT(id) FROM exam1 WHERE NAME IS NOT NULL;
SELECT MAX(english) FROM exam1;
SELECT MIN(english) FROM exam1;
SELECT AVG(english) FROM exam1;

條件查詢

-- 一、分組查詢

CREATE TABLE emp(
	empno INT PRIMARY KEY AUTO_INCREMENT,
	ename VARCHAR(20),
	job VARCHAR(20),
	mgr INT,
	hiredate DATE,
	sal DOUBLE(7,2),
	COMMIT DOUBLE(5,2),
	deptno  INT NOT NULL 
);

INSERT INTO emp VALUES
(1003,'李大嘴','clerk',1002,'1980-07-08',8000.00,100.00,10),
(1004,'呂秀才','clerk',1002,'1985-11-12',4000.00,null,10),
(1005,'郭芙蓉','clerk',1002,'1985-03-04',4000.00,null,10),
(2001,'胡一菲','leader',null,'1994-03-04',15000.00,NULL,20),
(2002,'陳美嘉','manger',2001,'1993-05-24',10000.00,300.00,20),
(2003,'呂子喬','clerk',2002,'1995-05-19',7300.00,100.00,20),
(2004,'張偉','clerk',2002,'1994-10-12',8000.00,500.00,20),
(2005,'曾小賢','clerk',2002,'1993-05-10',9000.00,700.00,20),
(3001,'劉梅','leader',null,'1968-08-08',13000.00,NULL,30),
(3002,'夏冬梅','manger',3001,'1968-09-21',10000.00,600.00,30),
(3003,'夏雪','clerk',3002,'1989-09-21',8000.00,300.00,30),
(3004,'張一山','clerk',3002,'1991-06-16',88000.00,200.00,30);

-- 查詢職員表中薪水低於1000元的職員信息
-- 查詢職員表中不屬於部門10的員工信息 (!= 等價於 <>)
SELECT * FROM emp WHERE deptno<>10;
-- 查詢職員表中在1993年5月10號入職的職員信息 ,比較日期類型數據
SELECT * FROM emp WHERE hiredate = '1993-05-10';
-- 查詢薪水大於5000並且職位是'clerk'的職員信息
SELECT  * FROM emp WHERE sal > 5000 AND job ='clerk';
-- 查詢薪水大於5000並且職位是‘k’結尾的職員信息
SELECT * FROM emp WHERE sal > 5000 AND job  like '%k';
-- 查詢職位是leader或者manager的員工
SELECT * FROM emp WHERE job = 'leader' OR job = 'manager';
SELECT * FROM emp WHERE job IN('manager','leader');
-- 查詢不是部門10或20的員工
select * FROM emp WHERE  deptno!= 10 OR deptno!= 20;
select * FROM emp WHERE  deptno NOT IN (10,20);
-- 查詢薪水在5000-10000之間的職員信息
SELECT * FROM emp WHERE sal BETWEEN 5000 AND 10000;
-- 查詢哪些職員的獎金數據爲null;
SELECT * FROM emp WHERE comm IS NULL;
-- 查詢年薪高於10000的職員信息
SELECT  empno,ename,job,sal*12 AS SUM_sal FROM emp WHERE sal*12 > 100000; 
-- 查詢每個部門的平均工資
SELECT deptno,AVG(sal) FROM emp GROUP BY deptno;
-- 查詢每個職位的最高工資和最低工資
SELECT job,MAX(sal),MIN(sal) FROM emp GROUP BY job;
--  查詢每個部門每種職位的最高工資
SELECT deptno,job,MAX(sal) FROM emp GROUP BY job;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章