• MySQL数据库单表练习


    练习1

    CREATE TABLE product(
    	pid INT PRIMARY KEY,#主键ID
    	pname VARCHAR(20),#商品名称
    	price DOUBLE,#商品价格
    	category_name VARCHAR(32)#商品分类名称
    );
    
    INSERT INTO product(pid,pname,price,category_name) VALUES(1,'联想电脑',5000,'电脑办公');
    INSERT INTO product(pid,pname,price,category_name) VALUES(2,'海尔电脑',3000,'电脑办公');
    INSERT INTO product(pid,pname,price,category_name) VALUES(3,'雷神电脑',5000,'电脑办公');
    
    INSERT INTO product(pid,pname,price,category_name) VALUES(4,'JACK JONES',800,'服装');
    INSERT INTO product(pid,pname,price,category_name) VALUES(5,'真维斯',200,'服装');
    INSERT INTO product(pid,pname,price,category_name) VALUES(6,'花花公子',440,'服装');
    INSERT INTO product(pid,pname,price,category_name) VALUES(7,'劲霸',2000,'服装');
    
    INSERT INTO product(pid,pname,price,category_name) VALUES(8,'香奈儿',800,'女士用品');
    INSERT INTO product(pid,pname,price,category_name) VALUES(9,'相宜本草',200,'女士用品');
    INSERT INTO product(pid,pname,price,category_name) VALUES(10,'面霸',5,'女士用品');
    
    INSERT INTO product(pid,pname,price,category_name) VALUES(11,'雪碧',56,'饮料饮品');
    INSERT INTO product(pid,pname,price,category_name) VALUES(12,'香飘飘奶茶',1,'饮料饮品');
    
    INSERT INTO product(pid,pname,price,category_name) VALUES(13,'iPhone9',8000,NULL);
    
    #查询product表中所有记录
    SELECT * FROM product
    
    #查询product表中pid和pname字段
    SELECT pid,pname FROM product
    
    #查询product表中所有的电脑办公记录
    SELECT * FROM product WHERE category_name="电脑办公"
    
    #查询结果是表达式(运算查询):将所有商品的价格+10元进行显示.
    SELECT pname AS "名称",price+10 AS "价格" FROM product
    
    #查询商品名称为“花花公子”的商品所有信息:
    SELECT *FROM product WHERE pname="花花公子"
    
    #查询价格为800商品
    SELECT *FROM product WHERE price=800
    
    #查询价格不是800的所有商品
    SELECT *FROM product WHERE price!=800
    
    #查询商品价格大于60元的所有商品信息
    SELECT *FROM product WHERE price>60
    
    #查询商品价格在200到1000之间所有商品
    SELECT *FROM product WHERE price>200 AND price <1000
    SELECT *FROM product WHERE price>200 && price <1000
    SELECT *FROM product WHERE price BETWEEN 200 AND 1000
    
    #查询商品价格是200或800或者2000的所有商品
    SELECT *FROM product WHERE price=20 OR price=800 OR price=2000
    SELECT *FROM product WHERE price=20|| price=800 || price=2000
    SELECT *FROM product WHERE price IN(20,800,2000)
    
    #查询含有'霸'字的所有商品
    SELECT *FROM product WHERE pname LIKE '%霸%'
    
    #查询以'香'开头的所有商品
    SELECT *FROM product WHERE pname LIKE '香%'
    
    #查询第二个字为'想'的所有商品
    SELECT *FROM product WHERE pname LIKE '_想%'
    
    #商品没有分类的商品
    SELECT *FROM product WHERE category_name IS NULL
    
    #查询有分类的商品
    SELECT *FROM product WHERE category_name IS NOT NULL
    
    #1.使用价格排序(降序)
    SELECT *FROM product ORDER BY price DESC
    
    #2.在价格排序(降序)的基础上
    #若价格相同,相同价格的数据以pid降序排序
    SELECT *FROM product ORDER BY price DESC,pid ASC
    
    #1 查询商品的总条数
    #查看商品总价格、最大价格、最小价格、价格的平均值
    SELECT SUM(price) AS "总价格",MAX(price),MIN(price),AVG(price) FROM product
    
    #2 查询价格大于200商品的总条数product
    SELECT COUNT(1) FROM product WHERE price >200
    
    #3 查询分类为'电脑办公'的所有商品的总记录
    SELECT COUNT(1) FROM product WHERE category_name="电脑办公"
    
    #4 查询分类为'服装'所有商品的平均价格
    SELECT AVG(price) FROM product WHERE category_name="服装"
    
    # 统计各个分类下商品的个数
    SELECT * FROM product WHERE pid<=2
    
    SELECT * FROM product LIMIT 4,2
    找id=5 他在第三页(3-1)*2=4 (索引始为零)
    
    #统计各个分类商品的个数,有且 只显示分类名称不为空值的数据
    SELECT * FROM product WHERE category_name="女士用品" GROUP BY category_name HAVING category_name 
    IS NOT NULL ORDER BY pid ASC LIMIT 0,6
    

     

    练习2

    CREATE TABLE s (
    	sid	CHAR(6),
    	sname		VARCHAR(50),
    	age		INT,
    	gender	VARCHAR(50)
    );
    
    INSERT INTO s VALUES('S_1001', 'liuYi', 35, 'male');
    INSERT INTO s VALUES('S_1002', 'chenEr', 15, 'female');
    INSERT INTO s VALUES('S_1003', 'zhangSan', 95, 'male');
    INSERT INTO s VALUES('S_1004', 'liSi', 65, 'female');
    INSERT INTO s VALUES('S_1005', 'wangWu', 55, 'male');
    INSERT INTO s VALUES('S_1006', 'zhaoLiu', 75, 'female');
    INSERT INTO s VALUES('S_1007', 'sunQi', 25, 'male');
    INSERT INTO s VALUES('S_1008', 'zhouBa', 45, 'female');
    INSERT INTO s VALUES('S_1009', 'wuJiu', 85, 'male');
    INSERT INTO s VALUES('S_1010', 'zhengShi', 5, 'female');
    INSERT INTO s VALUES('S_1011', 'xxx', NULL, NULL);
    
    --  查询性别为女,并且年龄大于等于50的记录
    SELECT *FROM s WHERE gender="female"&&age>50
    --  查询学号为S_1001,或者姓名为liSi的记录
    SELECT *FROM s WHERE sid="s_1001" ||sname="liSi"
    --  查询学号为S_1001,S_1002,S_1003的记录
    SELECT *FROM s WHERE sid="S_1001" OR sid="S_1002" OR sid="S_1003"
    --  查询学号不是S_1001,S_1002,S_1003的记录
    SELECT *FROM s WHERE sid!="S_1001" && sid!="S_1002" && sid!="S_1003"
    --  查询年龄为null的记录
    SELECT *FROM s WHERE age IS NULL
    --  查询年龄在20到40之间的学生记录
    SELECT *FROM s WHERE age>20&&age<=40
    --  查询性别非男的学生记录
    SELECT *FROM s WHERE gender!="male"
    --  查询姓名不为null的学生记录
    SELECT *FROM s WHERE sname IS NOT NULL
    --  查询姓名由5个字母构成的学生记录
    SELECT *FROM s WHERE sname LIKE "_____"
    --  查询姓名由5个字母构成,并且第5个字母为“i”的学生记录
    SELECT *FROM s WHERE sname LIKE "_____" &&sname NOT LIKE "____i"
    --  查询姓名以“z”开头的学生记录
    SELECT *FROM s WHERE sname LIKE "z%"
    --  查询姓名中第2个字母为“i”的学生记录
    SELECT *FROM s WHERE sname LIKE "_i%"
    --  查询姓名中包含“a”字母的学生记录
    SELECT *FROM s WHERE sname LIKE "%a%"
    

     

    练习3

    CREATE DATABASE test1;
    USE test1;
    
    ##部门表
    #DROP IF EXISTS TABLE DEPT;
    CREATE TABLE DEPT(
    	DEPTNO INT  PRIMARY KEY,##部门编号
    	DNAME VARCHAR(14) ,	##部门名称
    	LOC VARCHAR(13)  	##部门地址
    	) ;
    
    INSERT INTO DEPT VALUES	(10,'ACCOUNTING','NEW YORK');
    INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
    INSERT INTO DEPT VALUES	(30,'SALES','CHICAGO');
    INSERT INTO DEPT VALUES	(40,'OPERATIONS','BOSTON');
    	
    ##员工表	
    #DROP IF EXISTS TABLE EMP;
    CREATE TABLE EMP(
    	EMPNO INT  PRIMARY KEY,	#员工编号
    	ENAME VARCHAR(10),	#员工姓名
    	JOB VARCHAR(9),		#员工工作
    	MGR INT, 		#员工直属领导编号
    	HIREDATE DATE, 		#入职时间
    	SAL DOUBLE,		#工资
    	COMM DOUBLE,		#奖金
    	DEPTNO INT		#对应dept表的外键
    );  
    ## 添加 部门 和 员工 之间的主外键关系
    ALTER TABLE EMP ADD CONSTRAINT FOREIGN KEY EMP(DEPTNO) REFERENCES DEPT (DEPTNO);
    
    INSERT INTO EMP VALUES(7369,'SMITH','CLERK',7902,"1980-12-17",800,NULL,20);
    INSERT INTO EMP VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
    INSERT INTO EMP VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
    INSERT INTO EMP VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
    INSERT INTO EMP VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
    INSERT INTO EMP VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
    INSERT INTO EMP VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
    INSERT INTO EMP VALUES(7788,'SCOTT','ANALYST',7566,'1987-07-03',3000,NULL,20);
    INSERT INTO EMP VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
    INSERT INTO EMP VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
    INSERT INTO EMP VALUES(7876,'ADAMS','CLERK',7788,'1987-07-13',1100,NULL,20);
    INSERT INTO EMP VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
    INSERT INTO EMP VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
    INSERT INTO EMP VALUES(7934,'MILLER','CLERK',7782,'1981-01-23',1300,NULL,10);
    
    #1.查找部门是30的员工详细信息。
    SELECT * FROM emp WHERE DEPTNO="30"
    
    #2.找出从事clerk工作的员工的编号、姓名、部门号。
    SELECT EMPNO,ENAME,JOB FROM emp WHERE JOB="CLERK"
    
    #3.检索出奖金多于基本工资的员工信息。
    SELECT * FROM emp WHERE COMM>SAL
    
    #4.检索出奖金多于基本工资60%的员工信息。
    SELECT * FROM emp WHERE comm>(SAL*0.6)
    
    #5.找出10部门的经理、20部门的职员 的员工信息。
    SELECT * FROM emp WHERE DEPTNO=10&&JOB="MANAGER"||DEPTNO=20&&JOB="CLERK"
    
    #6.找出10部门的经理、20部门的职员 或者既不是经理也不是职员但是工资高于2000元的员工信息。
    SELECT * FROM emp WHERE DEPTNO=10&&JOB="MANAGER"||DEPTNO=20&&JOB="CLERK"||JOB!="MANAGER"&&JOB!="CLERK"&&SAL>2000
    
    #7.找出获得奖金的员工的信息。
    SELECT * FROM emp WHERE COMM!=""
    
    #8.找出奖金少于100或者没有获得奖金的员工的信息。
    SELECT * FROM emp WHERE COMM<100||COMM IS NULL||COMM=""
    
    #9.找出姓名以A、B、S开始的员工信息。
    SELECT * FROM emp WHERE ENAME LIKE "A%"||ENAME LIKE "B%"||ENAME LIKE "C%"
    
    #10.找到名字长度为6个字符的员工信息。
    SELECT * FROM emp WHERE ENAME LIKE "______"
    
    #11.名字中不包含R字符的员工信息。
    SELECT * FROM emp WHERE ENAME NOT LIKE "%R%"
    
    #12.返回员工的详细信息并按姓名排序。
    SELECT * FROM emp ORDER BY ENAME ASC
    
    #13.返回员工的信息并按工作降序工资升序排列。
    SELECT * FROM emp ORDER BY SAL ASC,ENAME DESC
    
    #14.计算员工的日薪(按30天)。
    SELECT ENAME,(SAL/30) FROM emp
    
    #15.找出姓名中包含A的员工信息。
    SELECT * FROM emp WHERE ENAME LIKE "%A%"
    
  • 相关阅读:
    Elasticsearch: 权威指南 » 深入搜索 » 多字段搜索 » 多数字段 good
    Elasticsearch: 权威指南 » 深入搜索 » 多字段搜索 » 多数字段 good
    Elasticsearch: 权威指南 » 深入搜索 » 多字段搜索 » 多数字段 good
    Elasticsearch: 权威指南 » 深入搜索 » 多字段搜索 » 多数字段 good
    java中文乱码解决之道(七)—–JSP页面编码过程
    java中文乱码解决之道(七)—–JSP页面编码过程
    java中文乱码解决之道(七)—–JSP页面编码过程
    java中文乱码解决之道(七)—–JSP页面编码过程
    记录一次数据同步到数据仓库的架构与实践
    旅游发现商机,他开店销售工艺品,已拥有两家零售店
  • 原文地址:https://www.cnblogs.com/ynzj123/p/13428218.html
Copyright © 2020-2023  润新知