首页 > 代码库 > 第六周 SQl 基本语句

第六周 SQl 基本语句

-- 创建数据库
CREATE DATABASE mydb;
-- 等号=,在set后面是赋值的意思,在WHERE后面则是比较的意思
-- 删除数据库
DROP DATABASE mydb;
-- 创建学生表
CREATE TABLE o_student(

-- 將当前列设置为主键列(表示不能重复或者为空)
-- AUTO_INCREMENT表示将当前列设置为自动整张
-- 该列的值由dbns分配,可以保证不重复
id INT PRIMARY KEY AUTO_INCREMENT,-- 编号
sname VARCHAR(20),-- 姓名
birthday DATE, -- 生日
ptype ENUM(‘dianqi‘,‘huoiba‘),--enum枚举类型,
该列的值只能在‘dianqi‘,‘huoiba‘选择
phone VARCHAR(20),
money DOUBLE
);
-- 插入数据 插入数据是如果没有加money,默认为null
INSERT INTO t_student(sname,birthday,phone,money)
VALUES(‘长啥‘,‘1980-02-25‘,‘15451477144‘,14255),
(‘长啥‘,‘1980-02-25‘,‘15451477144‘,14255),
(‘长啥‘,‘1980-02-25‘,‘15451477144‘,14255);
INSERT INTO t_student(sname,birthday,phone,money)
VALUES(‘sad‘,‘1875-02-12‘,‘124544134‘,14508);-- 一次添加多个
-- 查询表中所有数据(*表示查询表中所有数据)
SELECT *FROM t_student;
-- 删除表
DROP TABLE y_student;+

-- 删除id为4的商品 如果不加 WHERE id=4就是删除全部,后面要接分号
DELETE FROM y_student WHERE id=4;
-- 删除 长啥 后面不接分号也可以加分号
DELETE FROMy_student WHERE sname=‘长啥‘
-改变年龄
update s_student set page=20 where sname=‘张浩‘;
--同时需要改2个的中间打 ,号
update s_student set page=20,birthday=‘1982=12-14‘ where =‘张浩‘
--查询所哟的商品
select * FROM t_student;

--查询所有商品的价格(这里将*换为了sname,price)
select sname,price from t_student;
--查询所有的类别distinct表示去除重复记录
select distinct ptype from t_student
--查询前三条纪录(第一个参数0表示为起始记录数从0开始
第二个参数表示显示记录数。 0开始显示3个)
select * from t_student limit 0,3;
--查询价格在1000-2000之间的商品

select * from t_student WHERE price>=10 and price<=2000;
查询id是1和9的商品
select * from t_student where id=7orid=9;
select * from t_student where id in(7,9);
--查询所有带“机”的商品(模糊查询)
select * from t_student where pname like ‘%机%‘;
--所有商品按照价格排序
select * from t_student order by createdate;--升序
select * from t_student order by createdate desc;--降序 价格desc
--查询没有声场日期的产品(为null值不能直接用等号接null)
select * from t_student WHERE createDate is null


通配符‘—‘表示任何单个字符,‘%’表示一个或者多个字符 模糊查询有例子
--查询年龄最大的学生
select *from t_student order by s_age desc limit 0,1;

-- 添加商品的评价,200以下,显示低价商品
-- 200-1000,显示中档商品,1000以上显示高档商品

SELECT p.*,(CASE WHEN p.price<200 THEN ‘低档商品‘
WHEN p.price>200 AND p.price<1000 THEN ‘中档商品‘
ELSE ‘高档商品‘ END)
info FROM t_product p;


-- 电器类涨价百分之20,化妆品涨价百分子10,食品涨价百分之10
UPDATE t_product SET price=(
CASE WHEN ptype=‘电器‘ THEN 1.2*price
WHEN ptype =‘化妆品‘ THEN 1.1*price
WHEN ptype=‘食品‘ THEN 1.1*price END);


-- 统计商场中有多少商品
SELECT COUNT(*) FROM t_product;
-- count(列名)只统计该列的非空记录如添加一个商品没有写价格用count统计就会不算空的
-- 统计商场中有多少商品
SELECT COUNT(*) FROM t_product;


-- 统计所有商品的总价
SELECT SUM(price) FROM t_product;

-- 统计商品的价格最大值和最小值
select max(price),min(price) from t_product;

-- 聚合函数sum max count min sum/avg

--该列非空的平均值 avg是所有的平均值
SELECT SUM(price)/AVG(price) FROM t_product;

-- 统计每个类别的商品数量(注意:分组查询中能够在select 中出现的列,只能是聚合函数和分组字段)
SELECT ptype,COUNT(pname)FROM t_product GROUP BY ptype;
-- 统计每个类别商品的品均价格
SELECT ptype,AVG(price) FROM t_product GROUP BY ptype;
-- 查询有3个或者3个以上商品的商品类名
SELECT ptype,COUNT(pname) c FROM t_product GROUP BY ptype HAVING c>=3;


-- 查询品均价格在500元以上的商品
-- (where运行在分组之前后面不能跟聚合函数,having运行在分组之后,只能做聚合函数的过滤)
SELECT ptype FROM t_product GROUP BY typye;
SELECT ptype FROM t_product GROUP BY ptype HAVING AVG(price)>500;

SELECT ptype ,AVG(price) a FROM t_product GROUP BY ptype HAVING a>500;


CREATE TABLE t_man(
id INT PRIMARY KEY AUTO_INCREMENT,
manName VARCHAR(20) NOT NULL, -- 设置该列非空
sex VARCHAR(20) DEFAULT ‘男‘-- 设置默认值为男
);
INSERT INTO t_man(manName)VALUES(‘张浩‘);-- 该列没有插入性别 默认为男
INSERT INTO t_man(manName)VALUES(‘李四‘,‘女‘);-- 改列有性别插入,那么插入该值
INSERT INTO t_man(sex)VALUES(‘男‘);-- 虽然是不能为空 但是姿势提示,没有插入name数据 还是会运行出空数据


CREATE TABLE t_man(
id INT PRIMARY KEY AUTO_INCREMENT,
manName VARCHAR(20) NOT NULL, -- 设置该列非空
sex VARCHAR(20) DEFAULT ‘男‘-- 设置默认值为男
);
INSERT INTO t_man(manName)VALUES(‘张浩‘);-- 该列没有插入性别 默认为男
INSERT INTO t_man(manName,sex)VALUES(‘李四‘,‘女‘);-- 改列有性别插入,那么插入该值

 

-- 房间表
CREATE TABLE t_room(
id INT PRIMARY KEY AUTO_INCREMENT,
address VARCHAR(20),
price INT,
manId INT
);
-- 添加外键的约束fk_1,让t_room中的manId列,必须引用t_man的id主键
ALTER TABLE t_room ADD CONSTRAINT fk_1 FOREIGN KEY(manId)
REFERENCES t_man(id);
由于有外建约束存在,所以有非法外建,则插入不成功
INSERT INTO t_room(addrress ,price,manId)VALUES(‘科华北路‘,52222,1);-- 正确而主键有1这个id
INSERT INTO t_room(addrress ,price,manId)VALUES(‘科华北路‘,52222,6);-- 报错id没有6

-- 删除外键约束
ALTER TABLE t_room DROP FOREIGN KEY fk_1;

 

-- 统计商场中有多少商品
SELECT COUNT(*) FROM t_product;

 

第六周 SQl 基本语句