数据库 基础的语法和常见必备的操作
所有的操作都是基于SQlyog可以成功执行
mysql语句不区分大小写
操作数据库
查询所有数据库
show database;
查询数据库的创建语句
show create database mysql
创建数据库
create databse db1
创建数据库(并且判断 如果不存在则创建)
database if not exists db1;
创建数据库(指定字符集)
create database db2 character set utf8
创建db3数据库 如果不存在则创建 指定字符集
create database if not exists db3 character set gbk;
查看数据库db3的的字符集
show creata database db3;
修改数据库db4 的字符集为utf8
alter database db4 charcter set utf8
删除数据库db1
drop database db1
操作数据表
user mysql
show tables
查看mysql数据库中的user表字符集
show table status from mysql like 'user'
创建表名
create table product2(
id int,
name varhcar(20),
price double,
stock int,
inser_time date
);
对该表进行操作
查看product表详细结构
desc product
修改product 表名为product2
alter table product rename to product2
修改表中的名称和数据类型 将color 修改为address
alter table product2 change color address varchar(200);
删除address列
alter table product2 drop address;
删除product2表
drop table product2;
删除product2 条件判断
drop table if exists product2;
-engine innodb charset utf8
innodb存储引擎提供了具有提交、回滚和崩溃回复能力的事务安全
-engine Myisamcharset utf8
这是mysql默认的存储引擎 当create创建新表时为指定新表的存储引擎时
数据文件和索引文件可以放置在不同的目录 平均分布io 获得更快的速度
总结
innodb 安全性高 但是效率低 支持外键 支持事务
myisam 安全性较低 但是效率高 不支持外键 不支持事务
经典操作 CRUD 增删改查
新增表数据
USER db3;
CREATE TABLE product2(
id INT,
NAME VARCHAR(20),
price DOUBLE,
stock INT,
inser_time DATE
);
更改列名
alter table product2 change inser_time insert_time date;
向product表添加一条数据
insert into product2 (id,name, price, stock, inset_time)
values( 1,'手机',9999.9,20,'2021-12-1');
向product2 表添加指定列数据
insert into product2 (id,name,price )values (2,'电脑',100000);
默认给全部列添加数据
insert into product2 values (3,'电视',1500,35,'2030-09-12');
修改和删除
-- 修改手机的价格为3500
UPDATE product2 SET price=3500 WHERE NAME='手机';
-- 修改电脑的价格 和库存
UPDATE product2 SET price=7800,stock=500 WHERE NAME='电脑';
-- 删除表数据 洗衣机
DELETE FROM product2 WHERE NAME='洗衣机';
-- 删除表中库存为10的商品信息 不加条件则影响整张表的数据
DELETE FROM product2 WHERE stock=500;
查询
CREATE TABLE product(
id INT,
NAME VARCHAR(20), -- 商品名称
price DOUBLE, -- 商品价格
brand VARCHAR(10), -- 商品品牌
stock INT, -- 商品库存
insert_time DATE -- 添加时间
);
去除重复查询
select name , price brand , from product;
查询商品名称饿汉库存 库存数量在原有的基础上+10
select name, stock+10, from product;
查询商品的名称和库存 库存数量在原有的基础上+10 进行null值判断 起别名 getsum
select name, ifnull(stock,0)+10 as get sum from product;
查询品牌为华为的商品信息
SELECT * FROM product WHERE brand='华为';
查询金额在4000~6000之间的商品信息
SELECT * FROM product WHERE price >=400 AND price <= 600;
查询库存为 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 '_为%';
查询名称中包含电脑的商品信息
SELECT * FROM WHERE NAME LIKE '%电脑%';
按照库存升序排序 从小到大
select * from product order by stock asc;
查询名称中包含手机的商品信息 按照金额降序排序
select * from product where name '%手机%' order by price 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) as getsum from product where price > 4000 group by brand having getsum>7000;
对金额大于4000元的商品
按照品牌分组 获取每组商品的总金额
只显示总金额大于7000元的
并且按照总金额的降序排序
select brand ,sum (price) as getsum from product where price >4000 group by brand having getsum > 7000 order by getsum desc;
常规的聚合函数
sum max min ....
-- 按照市场价格由高往低排序 显示前三名商品信息
SELECT * FROM goods ORDER BY market_price DESC LIMIT 5;
SELECT * FROM goods ORDER BY goods_number ASC LIMIT 2,5;
语法 limit n 表示显示n条记录
limit m,n;m 表示跳过多少条记录 n显示多少条记录
如果查找第n页记录数
limit (n-1) * 5 , 5;
当前页减一 * 每页显示数