DDL-操作数据库、操作数据表、DML-增加、修改、删除表中数据、DQL-表数据查询

SQL 语句分类:

  • DDL(Data Definition Language) :数据定义语言。用来操作数据库,表,列等。
  • DML(Data Manipulation Language) :数据操作语言。用来对数据库中表的数据进行增删改。
  • DQL(Data Query Language) :数据查询语言。用来查询数据库中表的记录(数据)。
  • DCL(Data Control Language) :数据控制语言。用来定义数据库的访问权限和安全级别,及创建用户。
     

1. DDL-操作数据库

-- 查询所有数据库
SHOW DATABASES;
-- 查询数据库的创建语言
SHOW CREATE DATABASE mysql;

-- 创建数据库
CREATE DATABASE yulu;
-- 创建数据库,如果不存在才创建
CREATE DATABASE IF NOT EXISTS yulu;

-- 创建数据库并指定字符集utf8
CREATE DATABASE liulu CHARACTER SET utf8;
-- 查看数据库的字符集
SHOW CREATE DATABASE liulu;

-- 创建数据库并指定字符集为gbk
CREATE DATABASE IF NOT EXISTS fang CHARACTER SET gbk;
SHOW CREATE DATABASE fang;
-- 修改数据库的字符集
ALTER DATABASE fang CHARACTER SET utf8;
SHOW CREATE DATABASE fang;

-- 删除数据库
DROP DATABASE fang;
-- 删除数据库,如果数据库存在
DROP DATABASE IF EXISTS fang;

-- 使用yulu数据库
USE yulu;
-- 查询当前正在使用的数据库
SELECT DATABASE();

2. DDL-操作数据表

-- 使用mysql数据库
USE mysql;
-- 查询数据库中所有的表
SHOW TABLES;
-- 查询user表的结构
DESC USER;

-- 查询mysql数据库中user表字符集
SHOW TABLE STATUS FROM mysql LIKE 'user';

-- 在yulu数据库中创建product商品表(商品编号、商品名称、商品价格、商品库存、上架时间)
USE yulu;
CREATE TABLE product(
	id INT,
	NAME VARCHAR(20),
	price DOUBLE,
	stock INT,
	insert_time DATE
);
-- 查看表的详细结构
DESC product;

-- 修改product表名为goods
ALTER TABLE product RENAME TO goods;
-- 查看语录数据库中的goods表的字符集
SHOW TABLE STATUS FROM yulu LIKE 'goods';
-- 修改goods表的字符集为gbk
ALTER TABLE goods CHARACTER SET gbk;

-- 给goods表添加一列color
ALTER TABLE goods ADD color VARCHAR(10);
DESC goods;

-- 将color的数据类型修改为int
ALTER TABLE goods MODIFY color INT;
DESC goods;

-- 将color修改为address
ALTER TABLE goods CHANGE color address VARCHAR(200);
DESC goods;

-- 删除address列
ALTER TABLE goods DROP address;
DESC goods;

-- 删除表goods
DROP TABLE goods;
SHOW TABLES;
-- 删除表goods,如果存在则删除
DROP TABLE IF EXISTS goods;

3. DML-增加、修改、删除表中数据

-- 首先在yulu数据库中创建一个新表
USE yulu;
CREATE TABLE books(
	id VARCHAR(5),
	NAME VARCHAR(20),
	price DOUBLE,
	stock INT,
	insert_time DATE
);

-- 增加

-- 向books表中添加一条数据
INSERT INTO books(id,NAME,price,stock,insert_time)
VALUES('001','神雕侠侣',99.8,6000,'1997-2-18');

-- 向books表添加指定列数据
INSERT INTO books(id,NAME,price) VALUES ('002','射雕英雄传',89.9);

-- 默认给全部列添加数据
INSERT INTO books VALUES('003','天龙八部',66.8,520,'1996-6-8');

-- 批量添加多条数据
INSERT INTO books 
VALUES ('004','流星蝴蝶剑',36.5,236,'1993-9-12'),
	('005','笑傲江湖',108.9,200,'1991-7-21');


-- 修改

-- 将《神雕侠女》的库存修改为390
UPDATE books SET stock=390 WHERE NAME='神雕侠侣';

-- 修改《射雕英雄传》的库存为29,上架时间为1989-1-1
UPDATE books SET stock=29,insert_time='1989-1-1' WHERE NAME='射雕英雄传';


-- 删除

-- 删除books表中的《流星蝴蝶剑》信息
DELETE FROM books WHERE NAME='流星蝴蝶剑';

-- 删除表中库存小于30的书籍信息
DELETE FROM books WHERE stock<30;

4. DQL-表数据查询(重点)

4.1 查询全部数据

-- 查询表中全部信息
SELECT * FROM product;

-- 只查询商品名称、价格、品牌
SELECT NAME,price,brand FROM product;

-- 查询品牌
SELECT brand FROM product;
-- 查询品牌并去除重复
SELECT DISTINCT brand FROM product;

-- 查询商品名称和库存,库存数量在原有基础上加10
SELECT NAME,stock+10 FROM product;

/* 

如果某一列为null,可以进行替换
	ifnull(表达式1,表达式2)
	表达式1:想替换的列
	表达式2:想替换的值

*/
-- 查询商品名称和库存,库存如果为null替换为0。库存数量在原有基础上加10
SELECT NAME,IFNULL(stock,0)+10 FROM product;

-- 查询商品名称和库存,库存在原基础上加10,进行null值判断,并起别名getSum
SELECT NAME,IFNULL(stock,0)+10 AS getSum FROM product;
-- as可以不写
SELECT NAME,IFNULL(stock,0)+10 getSum FROM product;

4.2 条件查询

-- 查询库存大于20的商品信息
SELECT * FROM product WHERE stock > 20;
-- 查询品牌为华为的商品信息
SELECT * FROM product WHERE brand='华为';

-- 查询价格在4000~6000的商品信息
SELECT * FROM product WHERE price >=4000 AND price <= 6000;
SELECT * FROM product WHERE price BETWEEN 4000 AND 6000;

-- 查询库存为14、30、23的商品信息
SELECT * FROM product WHERE stock=14 OR stock=30 OR stock=23;
SELECT * FROM product WHERE stock IN(14,30,23);

-- 查询库存为null的商品信息
SELECT * FROM product WHERE stock IS NULL;
-- 查询库存不为null的商品信息
SELECT * FROM product WHERE stock IS NOT NULL;

-- 查询商品名称以‘小米’开头的商品信息
SELECT * FROM product WHERE NAME LIKE '小米%';
-- 查询商品名称第二个字是‘为’的商品信息
SELECT * FROM product WHERE NAME LIKE '_为%';
-- 查询商品名称为4个字符的商品信息
SELECT * FROM product WHERE NAME LIKE '____';
-- 查询商品名称中包含‘电脑’的商品信息
SELECT * FROM product WHERE NAME LIKE '%电脑%';

4.3 聚合函数查询

-- 计算product表中总记录条数
SELECT COUNT(*) FROM product;

-- 获取商品最高价格
SELECT MAX(price) FROM product;

-- 获取商品最低库存
SELECT MIN(stock) FROM product;

-- 获取库存总数
SELECT SUM(stock) FROM product;

-- 获取品牌为‘苹果’的商品库存总量
SELECT SUM(stock) FROM product WHERE brand = '苹果';

-- 获取品牌为小米的平均价格
SELECT AVG(price) FROM product WHERE brand = '小米';

4.4 排序、分组、分页查询

-- 排序查询

-- 按照库存升序排序
SELECT * FROM product ORDER BY stock ASC;

-- 查询商品名称包含‘手机’的商品信息,按照金额降序排序
SELECT * FROM product WHERE NAME LIKE '%手机%' ORDER BY price DESC;

-- 按照金额升序排列,如果金额相同,按照库存降序排序
SELECT * FROM product ORDER BY price ASC,stock DESC;


-- 分组查询

-- 按照品牌分组,获取每组商品的总金额
SELECT brand,SUM(price) FROM product GROUP BY brand;

-- 对金额大于4000元的商品,按照品牌分组,获取每组商品的总金额
SELECT brand,SUM(price) FROM product WHERE price>4000 GROUP BY brand;

-- 对金额大于4000元的商品,按照品牌分组,获取每组商品的总金额,只显示总金额大于7000元的
SELECT brand,SUM(price) getSum FROM product where price > 4000 group by brand having getsum > 7000;

-- 对金额大于4000元的商品,按照品牌分组,
-- 获取每组商品的总金额,只显示总金额大于7000元的、
-- 并按照总金额的降序排列
select brand,sum(price) getSum from product
where price > 4000
group by brand
having getSum > 7000
order by getSum DEsc;

-- 分页查询
-- LIMIT 当前页数,每页显示的条数;
-- 公式:当前页数 = (当前页数-1) * 每页显示的条数

-- 每页显示3条数据

-- 第1页 当前页数=(1-1)* 3
select * from product limit 0,3;
-- 第2页 当前页数=(2-1)* 3
select * from product limit 3,3;
-- 第3页 当前页数=(3-1)* 3
select * from product limit 6,3;

如有错误欢迎留言评论,2021年7月8日  羽露风

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羽露风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值