数据库基础学习_day01
– 创建db2数据库
CREATE database db2;
– 使用db2数据库
USE db2;
– 一 :DDL
– 创建商品表 (商品编号,商品名称,商品价格,商品库存,上架时间)
CREATE TABLE product(
id INT,
name VARCHAR(20),
price DOUBLE,
stock INT,
insert_time DATE -- 最后一行不写逗号
);
– 查询表结构
DESC product;
– 修改表
– 修改表名
ALTER TABLE product RENAME TO product2;
– 修改表的字符集
SHOW TABLE STATUS FROM db2 LIKE 'product2';
ALTER TABLE product2 CHARACTER SET gbk;
– 给product2添加一列
ALTER TABLE product2 ADD color VARCHAR(10);
SELECT *from product2;
– 修改color数据类型为int
ALTER TABLE product2 MODIFY color INT;desc product2;
– 修改color 修改为address
ALTER TABLE product2 CHANGE color address VARCHAR(200);
desc product2;
– 删除address列
ALTER TABLE product2 DROP address;
desc product2;
– 删除数据表 drop table if exists 表名;存在即删除
create table pro(id INT);
DROP TABLE IF EXISTS pro;
SHOW TABLES;
– 二 : DML 数据表的增删改
– 给指定列添加数据 INSERT INTO 表名(列名1,列名2…) VALUES (值1,值2…);
– 给全部列添加数据 INSERT INTO 表名 VALUES (值1,值2…);
– 批量添加数据:INSERT INTO 表名(列名1,列名2…) VALUES (值1,值2…),(值1,值2…)…;
– 批量添加数据:INSERT INTO 表名 VALUES (值1,值2…),(值1,值2…)…;
– 除了数据类型的数据,其它数据类型都要加引号(单双都可以)
ALTER TABLE product2 RENAME TO product;
select *from product;INSERT INTO product VALUES(1,'电脑',5999.9,100,'2021-1-1');INSERT INTO product VALUES
(2,'手机',2499,500,'2021-2-2'),
(3,'平板',2999,50,'2021-3-10'),
(4,'显示屏',1000,90,'2021-4-30');
– 修改数据 UPDATE 表名 SET 列名1=值1,列名2=值2,…[WHERE 条件]; 如果不加条件会修改全部数据
UPDATE product SET price = 3500 WHERE id = 2;UPDATE product SET price = 1800,stock = 36 WHERE id = 1;
– 删除数据 DELETE FROM 表名[WHERE 条件]; 如果不加条件会删除全部数据
DELETE FROM product;
SELECT *from product;
– DQL:表的查询
CREATE TABLE product1(
id INT,
name VARCHAR(20),
price DOUBLE,
brand VARCHAR(10), -- 品牌
stock INT,
insert_time DATE -- 最后一行不写逗号
);
SELECT *from product1;INSERT INTO product1 VALUES
(1,'华为手机',3999,'华为',23,'2021-2-2'),
(2,'小米手机',2999,'小米',39,'2020-3-10'),
(3,'苹果手机',1999,'苹果',23,'2019-3-10'),
(4,'华为电脑',22999,'华为',23,'2011-3-10'),
(5,'小米电脑',6999,'小米',32,'2031-3-10'),
(6,'苹果电脑',4999,'苹果',12,'2071-3-10'),
(7,'联想电脑',1000,'联想',NULL,'2221-4-30');-- 单表查询语法
-- SELECT
-- 字段列表
-- FROM
-- 表名列表
-- WHERE
-- 条件列表
-- Group BY
-- 分组字段
-- HAVING
-- 分组后的过滤条件
-- ORDER BY
-- 排序
-- LIMIT
-- 分页
– 查询全部 SELECT *FROM 表名;
SELECT *FROM product1;
– 查询指定字段 SELECT 列名1,列名2,… FROM 表名;
SELECT id,name FROM product1;
– 去除重复查询 SELECT DISTINCT 列名1,列名2,… FROM 表名;
SELECT DISTINCT brand FROM product1;
– 计算列的(四则运算) SELECT 列名1 运算符(±*/) 列名2 FROM 表名;
SELECT name,stock+10 AS end_stock FROM product1;
– null值判断 IFNULL(expr1,expr2)
SELECT name,IFNULL(stock,0)+10 AS end_stock FROM product1;
– 起别名查询 SELECT 列名 AS 别名 FROM 表名;
SELECT name,IFNULL(stock,0)+10 AS end_stock FROM product1;
SELECT name,IFNULL(stock,0)+10 end_stock FROM product1;
– 条件查询 SELECT 列名列表 FROM 表名 WHERE 条件;
SELECT *FROM product1 WHERE stock > 20;SELECT *FROM product1 WHERE brand='华为';SELECT *FROM product1 WHERE price >= 4000 AND price <= 6000;SELECT *FROM product1 WHERE price BETWEEN 4000 AND 6000;SELECT *FROM product1 WHERE stock IN(12,30,23);SELECT *FROM product1 WHERE stock=12 OR stock=30 OR stock=23;SELECT *FROM product1 WHERE stock IS NULL;SELECT *FROM product1 WHERE stock IS NOT NULL;SELECT *FROM product1 WHERE name LIKE '小米%';-- _下划线代表一个任意字符,%代表多个任意字符
SELECT *FROM product1 WHERE name LIKE '_为%';SELECT *FROM product1 WHERE name LIKE '____';SELECT *FROM product1 WHERE name LIKE '%电脑%';
– 聚合函数查询 count(列名) max(列名) min(列名) sum(列名) avg(列名)
– 语法:SELECT 函数名(列名) FROM 表名 [WHERE 条件];
– 计算表中总记录条数
SELECT COUNT(*) FROM product1;
– 获取最高价格
SELECT MAX(price) FROM product1;
– 获取最低库存
SELECT MIN(stock) FROM product1;
– 获取总库存数量
SELECT SUM(stock) FROM product1;
– 获取品牌为苹果的总库存的数量
SELECT SUM(stock) FROM product1 WHERE brand='苹果';
– 获取品牌为小米的平均商品价格
SELECT avg(price) FROM product1 WHERE brand='小米';
– 排序查询 SELECT 列名列表 FROM 表名 [WHERE 条件] ORDER BY 列名 排序方式,列名 排序方式…;
– ASC 升序 ,DESC 降序 默认升序
– 按照库存升序排序
SELECT *FROM product1 ORDER BY stock ASC;
– 查询名称中包含手机的商品信息。按照金额降序排序
SELECT *FROM product1 WHERE name LIKE '%手机%' ORDER BY price DESC;
– 按照金额升序排序,如果金额相同,按照库存降序排序
SELECT *FROM product1 ORDER BY price ASC,stock DESC;
– 分组查询
– SELECT 列名列表 FROM 表名 [WHERE 条件] GROUP BY 分组列名[HAVING 分组后的条件过滤] [ORDER BY 排序列名 排序方式];
– 按照品牌分组,获取每组商品的总金额
SELECT brand,SUM(price) FROM product1 GROUP BY brand;
– 对金额大于4000元的商品,按照品牌分组,获取每组商品的总金额
SELECT brand,SUM(price) FROM product1 WHERE price>4000 GROUP BY brand;
– 对金额大于4000元的商品,按照品牌分组,获取每组商品的总金额,只显示总金额大于7000元的
SELECT brand,SUM(price) getSum FROM product1 WHERE price>4000 GROUP BY brand HAVING getSum>7000;
– 对金额大于4000元的商品,按照品牌分组,获取每组商品的总金额,只显示总金额大于7000元的、并按照总金额的降序排序
SELECT brand,SUM(price) getSum FROM product1 WHERE price>4000 GROUP BY brand HAVING getSum>7000 ORDER BY getSum DESC;
– 分页查询
– 语法:SELECT 列名列表 FROM 表名 [WHERE 条件] GROUP BY 分组列名[HAVING 分组后的条件过滤] [ORDER BY 排序列名 排序方式] LIMIT 当前页数,每页显示的条数;
– 公式:当前页数 = (当前页数-1)*每页显示的条数
– 每页显示3条数据
– 第一页 当前页数= (1-1)*3
SELECT *FROM product1 LIMIT 0,3;
– 第二页 当前页数 = (2-1)*3
SELECT *FROM product1 LIMIT 3,3;
– 第三页 当前页数 = (3-1)*3
SELECT *FROM product1 LIMIT 6,3;
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
