编辑代码

CREATE DATABASE test;
use test;
CREATE TABLE student (
    ID INT PRIMARY KEY,
    xh VARCHAR(20) COMMENT '学号',
    xm VARCHAR(50) COMMENT '姓名',
    xb VARCHAR(10) COMMENT '性别',
    csny VARCHAR(20) COMMENT '出生年月',
    nj VARCHAR(20) COMMENT '年级',
    xy VARCHAR(50) COMMENT '学院'
);

CREATE TABLE goods(
       id INT(11) PRIMARY KEY AUTO_INCREMENT COMMENT '商品编号',
       type VARCHAR(30) NOT NULL COMMENT '商品类别',
       name VARCHAR(30) UNIQUE COMMENT '商品名称',
       price DECIMAL(7,2) COMMENT '商品价格',
       num INT(11) DEFAULT 0 COMMENT '商品库存',
       add_time DATETIME COMMENT '添加时间'
);

INSERT INTO goods(id, type, name, price, num, add_time)
VALUES(1,'书籍','西游记',50.4,20,'2018-01-01 13:40:40'),
              (2,'糖类','牛奶糖',7.5,200,'2018-02-02 13:40:40'),
              (3,'糖类','水果糖',2.5,100,null),
              (4,'服饰','休闲西服',800,null,'2018-04-04 13:40:40'),
              (5,'饮品','果汁',3,70,'2018-05-05 13:40:40');

INSERT INTO student (ID, xh, xm, xb, csny, nj, xy) VALUES
(1, 'J171001', '张三丰', '男', '2001年3月', '21', '信息工程'),
(2, 'J171002', '李静', '女', '2001年2月', '21', '工商管理'),
(3, 'J171003', '张明', '男', '2001年3月', '21', '计算机科学与应用'),
(4, 'J1721001', '王丽', '女', '2002年6月', '22', '轮机工程'),
(5, 'J1721002', '李大成', '男', '2002年9月', '22', '机电工程'),
(6, 'J1721002', '张白云', '女', '2000年4月', '22', '艺术学院'),
(7, 'J1731003', '刘芳芳', '女', '2002年8月', '23', '材料学院'),
(8, 'J1731003', '赵明明', '男', '2001年12月', '23', '智能工程学院');
-- SELECT * FROM student;

show tables;


SELECT * FROM goods;

SELECT id, type, name, price, num, add_time FROM goods;

-- 插入数据
INSERT INTO student VALUES (11, '测试用户', '海珠区', '广州');

--在goods表中查询id列
SELECT id, name FROM goods;

--查询id=3的行
SELECT * FROM goods where id = 3;

--多条件符合查询
SELECT * FROM goods where id = 3 or type = '糖类';

--IN里面是符合条件都符合,仅是1和3,不是1到3,可以代替or参数
SELECT * FROM goods where id IN(1,3);

--不符合1和3这个条件的行
SELECT * FROM goods where id NOT IN(1,3);

--num不等于100的
SELECT * FROM goods where num !=100;

--num在20-200之间的
SELECT * FROM goods where num >20 and num < 200;
SELECT * FROM goods WHERE num BETWEEN 20 AND 200;

--IS NULL等于= NULL
SELECT * FROM goods WHERE num IS NULL;

--模糊查询,%是通配任意数量字符,果%意思是果汁,糖果则不再范围内
SELECT * FROM goods WHERE name LIKE '果%';

--模糊查询,_是通配一个字符
SELECT * FROM goods WHERE name LIKE '西__';

--排序,升序
SELECT * FROM goods ORDER BY add_time;
--排序,降序
SELECT * FROM goods ORDER BY add_time DESC;
--按照先后顺序进行多字段排序
SELECT * FROM goods ORDER BY price,add_time;

--函数COUNT(),计算行数量,AS是给列表头给名字,若没有AS,则使用COUNT(*),*代表所有行
SELECT COUNT(*) AS goods_num FROM goods;
--函数SUM(),计算某列的总和,SUM()中间不能为*
SELECT SUM(num) AS goods_num FROM goods;
--SELECT 之后定义输出表的列,type列和AVG(price)列,然后AVG是平均数函数,最后才是按照type来分组
SELECT type,AVG(price) FROM goods GROUP BY type;
--最大值和最小值,MAX()为定义函数,maxpri为列头名称
SELECT MAX(price) maxpri,MIN(price) minpri FROM goods;

--查询日期范围
SELECT * FROM student where csny>'2001-01-01' AND csny<'2003-01-01';

--统计性别男和性别女的数量
SELECT 
    xb AS '性别',
    COUNT(*) AS '数量'
FROM
    student AS stu
    GROUP BY xb;
--另一种方法    
SELECT 
    COUNT(CASE WHEN xb = '男' THEN 1 END) AS 男性数量,
    COUNT(CASE WHEN xb = '女' THEN 1 END) AS 女性数量,
    COUNT(*) AS 总人数
FROM student;