
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日 羽露风
2015

被折叠的 条评论
为什么被折叠?



