mysql語句基本簡單查詢

mysql語句基本簡單查詢mysql

 

第一節sql

 

-- or # 單行註釋
/**
*多行註釋
*/
數據庫

-- c建立數據庫exam
CREATE DATABASE exam;函數

USE exam;ui

/*建立部門表*/
CREATE TABLE dept(
deptno INT PRIMARY KEY,
dname VARCHAR(50),
loc VARCHAR(50)
);spa

/*建立僱員表*/
CREATE TABLE emp(
empno INT PRIMARY KEY,
ename VARCHAR(50),
job VARCHAR(50),
mgr INT,
hiredate DATE,
sal DECIMAL(7,2),
COMM DECIMAL(7,2),
deptno INT,
CONSTRAINT fk_emp FOREIGN KEY(mgr) REFERENCES emp(empno)
);排序

/*建立工資等級表*/
CREATE TABLE salgrade(
grade INT PRIMARY KEY,
losal INT,
hisal INT
);it

/*建立學生表*/
CREATE TABLE stu(
sid INT PRIMARY KEY,
sname VARCHAR(50),
age INT,
gander VARCHAR(10),
province VARCHAR(50),
tuition INT
);io

 

 

 

/*插入dept表數據*/
INSERT INTO dept VALUES (10, '教研部', '北京');
INSERT INTO dept VALUES (20, '學工部', '上海');
INSERT INTO dept VALUES (30, '銷售部', '廣州');
INSERT INTO dept VALUES (40, '財務部', '武漢');基礎

/*插入emp表數據*/
INSERT INTO emp VALUES (1009, '曾阿牛', '董事長', NULL, '2001-11-17', 50000, NULL, 10);
INSERT INTO emp VALUES (1004, '劉備', '經理', 1009, '2001-04-02', 29750, NULL, 20);
INSERT INTO emp VALUES (1006, '關羽', '經理', 1009, '2001-05-01', 28500, NULL, 30);
INSERT INTO emp VALUES (1007, '張飛', '經理', 1009, '2001-09-01', 24500, NULL, 10);
INSERT INTO emp VALUES (1008, '諸葛亮', '分析師', 1004, '2007-04-19', 30000, NULL, 20);
INSERT INTO emp VALUES (1013, '龐統', '分析師', 1004, '2001-12-03', 30000, NULL, 20);
INSERT INTO emp VALUES (1002, '黛綺絲', '銷售員', 1006, '2001-02-20', 16000, 3000, 30);
INSERT INTO emp VALUES (1003, '殷天正', '銷售員', 1006, '2001-02-22', 12500, 5000, 30);
INSERT INTO emp VALUES (1005, '謝遜', '銷售員', 1006, '2001-09-28', 12500, 14000, 30);
INSERT INTO emp VALUES (1010, '韋一笑', '銷售員', 1006, '2001-09-08', 15000, 0, 30);
INSERT INTO emp VALUES (1012, '程普', '文員', 1006, '2001-12-03', 9500, NULL, 30);
INSERT INTO emp VALUES (1014, '黃蓋', '文員', 1007, '2002-01-23', 13000, NULL, 10);
INSERT INTO emp VALUES (1011, '周泰', '文員', 1008, '2007-05-23', 11000, NULL, 20);

INSERT INTO emp VALUES (1001, '甘寧', '文員', 1013, '2000-12-17', 8000, NULL, 20);


/*插入salgrade表數據*/
INSERT INTO salgrade VALUES (1, 7000, 12000);
INSERT INTO salgrade VALUES (2, 12010, 14000);
INSERT INTO salgrade VALUES (3, 14010, 20000);
INSERT INTO salgrade VALUES (4, 20010, 30000);
INSERT INTO salgrade VALUES (5, 30010, 99990);

/*插入stu表數據*/
INSERT INTO `stu` VALUES ('1', '王永', '23', '男', '北京', '1500');
INSERT INTO `stu` VALUES ('2', '張雷', '25', '男', '遼寧', '2500');
INSERT INTO `stu` VALUES ('3', '李強', '22', '男', '北京', '3500');
INSERT INTO `stu` VALUES ('4', '宋永合', '25', '男', '北京', '1500');
INSERT INTO `stu` VALUES ('5', '敘美麗', '23', '女', '北京', '1000');
INSERT INTO `stu` VALUES ('6', '陳寧', '22', '女', '山東', '2500');
INSERT INTO `stu` VALUES ('7', '王麗', '21', '女', '北京', '1600');
INSERT INTO `stu` VALUES ('8', '李永', '23', '男', '北京', '3500');
INSERT INTO `stu` VALUES ('9', '張玲', '23', '女', '廣州', '2500');
INSERT INTO `stu` VALUES ('10', '啊歷', '18', '男', '山西', '3500');
INSERT INTO `stu` VALUES ('11', '王剛', '23', '男', '湖北', '4500');
INSERT INTO `stu` VALUES ('12', '陳永', '24', '男', '北京', '1500');
INSERT INTO `stu` VALUES ('13', '李雷', '24', '男', '遼寧', '2500');
INSERT INTO `stu` VALUES ('14', '李沿', '22', '男', '北京', '3500');
INSERT INTO `stu` VALUES ('15', '王小明', '25', '男', '北京', '1500');
INSERT INTO `stu` VALUES ('16', '王小麗', '23', '女', '北京', '1000');
INSERT INTO `stu` VALUES ('17', '唐寧', '22', '女', '山東', '2500');
INSERT INTO `stu` VALUES ('18', '唐麗', '21', '女', '北京', '1600');
INSERT INTO `stu` VALUES ('19', '啊永', '23', '男', '北京', '3500');
INSERT INTO `stu` VALUES ('20', '唐玲', '23', '女', '廣州', '2500');
INSERT INTO `stu` VALUES ('21', '敘剛', '18', '男', '山西', '3500');
INSERT INTO `stu` VALUES ('22', '王累', '23', '男', '湖北', '4500');
INSERT INTO `stu` VALUES ('23', '趙安', '23', '男', '北京', '1500');
INSERT INTO `stu` VALUES ('24', '關雷', '25', '男', '遼寧', '2500');
INSERT INTO `stu` VALUES ('25', '李字', '22', '男', '北京', '3500');
INSERT INTO `stu` VALUES ('26', '敘安國', '25', '男', '北京', '1500');
INSERT INTO `stu` VALUES ('27', '陳浩難', '23', '女', '北京', '1000');
INSERT INTO `stu` VALUES ('28', '陳明', '22', '女', '山東', '2500');
INSERT INTO `stu` VALUES ('29', '孫麗', '21', '女', '北京', '1600');
INSERT INTO `stu` VALUES ('30', '李治國', '23', '男', '北京', '3500');
INSERT INTO `stu` VALUES ('31', '張娜', '23', '女', '廣州', '2500');
INSERT INTO `stu` VALUES ('32', '安強', '18', '男', '山西', '3500');
INSERT INTO `stu` VALUES ('33', '王歡', '23', '男', '湖北', '4500');
INSERT INTO `stu` VALUES ('34', '周天樂', '23', '男', '北京', '1500');
INSERT INTO `stu` VALUES ('35', '關雷', '25', '男', '遼寧', '2500');
INSERT INTO `stu` VALUES ('36', '吳強', '22', '男', '北京', '3500');
INSERT INTO `stu` VALUES ('37', '吳合國', '25', '男', '北京', '1500');
INSERT INTO `stu` VALUES ('38', '正小和', '23', '女', '北京', '1000');
INSERT INTO `stu` VALUES ('39', '吳麗', '22', '女', '山東', '2500');
INSERT INTO `stu` VALUES ('40', '馮含', '21', '女', '北京', '1600');
INSERT INTO `stu` VALUES ('41', '陳冬', '23', '男', '北京', '3500');
INSERT INTO `stu` VALUES ('42', '關玲', '23', '女', '廣州', '2500');
INSERT INTO `stu` VALUES ('43', '包利', '18', '男', '山西', '3500');
INSERT INTO `stu` VALUES ('44', '威剛', '23', '男', '湖北', '4500');
INSERT INTO `stu` VALUES ('45', '李永', '23', '男', '北京', '1500');
INSERT INTO `stu` VALUES ('46', '張關雷', '25', '男', '遼寧', '2500');
INSERT INTO `stu` VALUES ('47', '送小強', '22', '男', '北京', '3500');
INSERT INTO `stu` VALUES ('48', '關動林', '25', '男', '北京', '1500');
INSERT INTO `stu` VALUES ('49', '蘇小啞', '23', '女', '北京', '1000');
INSERT INTO `stu` VALUES ('50', '趙寧', '22', '女', '山東', '2500');
INSERT INTO `stu` VALUES ('51', '陳麗', '21', '女', '北京', '1600');
INSERT INTO `stu` VALUES ('52', '錢小剛', '23', '男', '北京', '3500');
INSERT INTO `stu` VALUES ('53', '艾林', '23', '女', '廣州', '2500');
INSERT INTO `stu` VALUES ('54', '郭林', '18', '男', '山西', '3500');
INSERT INTO `stu` VALUES ('55', '周制強', '23', '男', '湖北', '4500');



-- 1 基礎查詢
-- 1.1 查詢全部列

SELECT * FROM stu;

-- 1.2 在stu表中查詢指定列 sid, sname, age

SELECT sid, sname, age FROM stu;

 

 


-- 2 條件查詢
-- 2.2 查詢性別爲女,而且年齡50的記錄
 SELECT * FROM stu WHERE gender='female' AND ge<50;

-- 2.3 查詢學號爲1,或者姓名爲王的記錄
SELECT * FROM stu WHERE sid ='1' OR sname='王';

-- 2.4 查詢學號爲1,2,3的記錄
SELECT * FROM stu WHERE sid IN ('1','2','3');

-- 2.5 查詢學號不是1,2,3的記錄
SELECT * FROM tab_student WHERE s_number NOT IN ('1','2','3');

-- 2.6 查詢年齡爲22的記錄
SELECT * FROM stu WHERE age IS 22;

-- 2.7 查詢年齡在20到24之間的學生記錄
SELECT * FROM stu WHERE age>=20 AND age<=24;
-- 或者
SELECT * FROM stu WHERE age BETWEEN 20 AND 24;
-- 或者
SELECT * FROM stu WHERE age(20,21,22,23,24);

-- 2.8 查詢性別非男的學生記錄
SELECT * FROM stuWHERE gender!='男';
-- 或者
SELECT * FROM stuWHERE gender<>'男';
-- 或者
SELECT * FROM stuWHERE NOT gender='男';
-- 或者
SELECT * FROM stuWHERE gender='女';

-- 2.9 查詢姓名不爲null的學生記錄
SELECT * FROM stu WHERE NOT sname IS NULL;
-- 或者
SELECT * FROM stu WHERE sname IS NOT NULL;

 

 


-- 3 模糊查詢
-- 3.1 查詢姓名由5個字母構成的學生記錄
SELECT * FROM stu WHERE sname LIKE '_____';


-- 3.2 查詢姓名由5個字母構成,而且第5個字母爲「i」的學生記錄
SELECT * FROM stu WHERE sname LIKE '____i';

-- 3.3 查詢姓名以「張」開頭的學生記錄
SELECT * FROM stu WHERE sname LIKE '張%';


-- 3.4 查詢姓名中第2個字母爲「小」的學生記錄
SELECT * FROM stu WHERE sname LIKE '_小%';

-- 3.5 查詢姓名中包含「麗」字母的學生記錄
SELECT * FROM stu WHERE sname LIKE '%麗%';

 


-- 4 字段控制查詢
-- 4.1 去除重複記錄
SELECT DISTINCT sal FROM emp;

-- 4.2 查看僱員的月薪與佣金之和  
SELECT *,sal+comm FROM emp;

-- comm列有不少記錄的值爲NULL,由於任何東西與NULL相加結果仍是NULL,因此結算結果可能會出現NULL。下面使用了把NULL轉換成數值0的函數IFNULL:
SELECT *,sal+IFNULL(comm,0) FROM emp;

--- 4.3 給列名添加別名
-- 在上面查詢中出現列名爲sal+IFNULL(comm,0),這很不美觀,如今咱們給這一列給出一個別名,爲total:

SELECT *, sal+IFNULL(comm,0) AS total FROM emp;

-- 給列起別名時,是能夠省略AS關鍵字的:
SELECT *,sal+IFNULL(comm,0) total FROM emp;

 

 

-- 5 排序 ORDER BY
-- 5.1 查詢全部學生記錄,按年齡升序排序
SELECT * FROM stu ORDER BY sage ASC;
-- 或者
SELECT * FROM stu ORDER BY sage;

-- 5.2 查詢全部學生記錄,按年齡降序排序
SELECT * FROM stu ORDER BY age DESC;

-- 5.3 查詢全部僱員,按月薪降序排序,若是月薪相同時,按編號升序排序
SELECT * FROM empORDER BY sal DESC,empno ASC;

 


-- 6.1 COUNT
-- 查詢emp表中記錄數:
SELECT COUNT(*) AS cnt FROM emp;

-- 查詢emp表中有佣金的人數:
SELECT COUNT(comm) cnt FROM emp;

-- 查詢emp表中月薪大於2500的人數:
SELECT COUNT(*) FROM empWHERE sal > 2500;

-- 統計月薪與佣金之和大於2500元的人數:
SELECT COUNT(*) AS cnt FROM emp WHERE sal+IFNULL(comm,0) > 2500;


-- 查詢有佣金的人數,以及有領導的人數:
SELECT COUNT(comm), COUNT(mgr) FROM emp;

-- 6.2 SUM和AVG
-- 查詢全部僱員月薪和:
SELECT SUM(sal) FROM emp;

-- 查詢全部僱員月薪和,以及全部僱員佣金和:
SELECT SUM(sal), SUM(comm) FROM emp;

-- 查詢全部僱員月薪+佣金和:
SELECT SUM(sal+IFNULL(comm,0)) FROM emp;

-- 統計全部員工平均工資:
SELECT SUM(sal), COUNT(sal) FROM emp;
-- 或者
SELECT AVG(sal) FROM emp;

-- 6.3 MAX和MIN
-- 查詢最高工資和最低工資:
SELECT MAX(sal), MIN(sal) FROM emp;

 

 

-- 7.1 分組查詢
-- 查詢每一個部門的部門編號和每一個部門的工資和:
SELECT deptno, SUM(sal) FROM emp GROUP BY deptno;

-- 查詢每一個部門的部門編號以及每一個部門的人數:
SELECT deptno,COUNT(*) FROM emp GROUP BY deptno;

-- 查詢每一個部門的部門編號以及每一個部門工資大於1500的人數:
SELECT deptno,COUNT(*) FROM emp WHERE sal>1500 GROUP BY deptno;

-- 7.2 HAVING子句
-- 查詢工資總和大於9000的部門編號以及工資和:
SELECT deptno, SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal) > 9000;

 


-- 8.1 查詢5行記錄,起始行從0開始
SELECT * FROM emp LIMIT 0, 5;

-- 8.2 查詢10行記錄,起始行從3開始
SELECT * FROM emp LIMIT 3, 10;

 

8.3 分頁查詢 規則(頁數-1)*行數=第二頁的第一個顯示行數。   從幾行開始就寫幾。(前面是起始行數,後面是顯示行數)8.3 分頁查詢 查詢語句書寫順序:select – from- where- group by- having- order by-limit 查詢語句執行順序:from - where -group by - having - select - order by-limit

相關文章
相關標籤/搜索