MySQL5.7基础 必会语法 代码示范

1 篇文章 0 订阅
1 篇文章 0 订阅

操作数据库的DDL

-- 创建数据库

CREATE DATABASE 数据库名


-- 创建指定字符集的数据库

DROP DATABASE 数据库名 CHARACTER SET 指定的字符集


-- 查看所有数据库

SHOW DATABASES


-- 查看某个数据库的结构

SHOW CREATE DATABASE 数据库名


-- 修改指定数据库的字符集

ALTER DATABASE 数据库名 CHARACTER SET 要修改的字符集


-- 使用数据库

USE 数据库名


-- 查看当前正在使用哪个数据库

SELECT DATABASE

-- 查看所有表

SHOW TABLES


-- 查看表结构

DESC 表名


-- 新增字段

ALTER TABLE 表名 ADD 新字段名 类型 约束  


-- 修改字段

ALTER TABLE 表名 CHANGE 旧字段 新字段 类型 约束


-- 修改字段类型 不为空 且默认值为一

ALTER TABLE 表名 MODIFY 字段 新类型 新约束 NOT NULL DEFAULT 1


-- 删除字段

ALTER TABLE 表名 DROP 字段名


-- 修改表名

ALTER TABLE 表名 TO 新表名

DML操作数据库的增删改


-- 增的第一种方式

INSERT INTO 表名(字段1,字段2,字段3) VALUES(值1,值2,值3)


-- 增的第二种方式

INSERT INTO 表名 VALUES(值1,值2,值3)

-- 删的方式

DELETE FROM 表名 WHERE 条件

-- 改的方式

UPDATE 表名 SET 字段名 = 值1, 字段名 = 值2 WHERE 条件

数据查询


-- 查的方式

SELECT 字段名 FROM 表名 WHERE 条件


-- 去重查询DISTINCT

SELECT DISTINCT mgr FROM emp 


-- 别名查询方式一

SELECT ename AS '姓名',joindate AS '入职年月',salary AS '薪资待遇' FROM emp WHERE ename = '唐僧'


-- 别名查询方式二

SELECT ename '姓名',joindate '入职年月',salary '薪资待遇' FROM emp WHERE ename = '唐僧'
-- 运算查询(在字段原有的基础上+10 再查询)
SELECT ename,joindate,salary+10 'salary' FROM emp

-- 条件查询
-- 查询商品价格>3000的商品

SELECT * FROM 表名 WHERE 价格字段 > 3000


--  查询pid=1的商品

SELECT * FROM 表名 WHERE pid = 1


-- 查询pid<>1的商品

SELECT * FROM 表名 WHERE pid <> 1


-- 查询价格在3000到6000之间的商品

SELECT * FROM 表名 WHERE 价格字段 BETWEEN 3000 AND 6000


-- 查询pid在1,5,7,15范围内的商品

SELECT * FROM 表名 pid IN(1,5,7,15)


-- 查询商品名以iPho开头的商品(iPhone系列)   like模糊查询

SELECT * FROM 表名 WHERE 商品名字段 LIKE 'ipho%' 


-- 查询商品价格大于3000并且数量大于20的商品   (条件 and 条件 and...)

SELECT * FROM 表名 WHERE 价格字段>3000 AND 数量字段 > 20 


-- 查询id=1或者价格小于3000的商品 

SELECT * FROM 表名 WHERE id = 1 OR 价格字段<3000

排序查询


-- 单列排序, 按照某一列进行排序-- 以分数降序查询所有的学生

SELECT * FROM 表名 ORDER BY 分数字段 DESC


-- 多行排序
-- 先按照第一个字段进行排序,如果第一个字段相同,那么就按照第二个字段进行排序
-- 以分数降序查询所有的学生, 如果分数一致,再以age降序

SELECT * FROM 表名 WHERE ORDER BY 分数字段 DESC,年龄字段 DESC

聚合函数


-- max函数,查询最大值-- 求出学生表里面的最高分数

SELECT MAX(分数字段) FROM 表名 


-- min函数,查询最小值
-- 求出学生表里面的最低分数

SELECT MIN(分数字段) FROM 表名


-- avg函数,查询平均值
-- 求出学生表里面的平均分  
-- 如果该字段为null,则不会将其加入到计算平均值

SELECT AVG(分数字段) FROM 表名


-- 如果我的想法是你缺考了就当成0分处理

SELECT AVG(IFNULL(分数字段,0)) FROM 表名


-- count函数,统计数据条数
-- 统计学生总数

SELECT COUNT(sid) FROM students


-- sum函数,求和
-- 求出学生表里面的分数的总和(忽略null值)

SELECT SUM(score) FROM students

分组查询:


-- 分组的目的是为了做统计,所以要结合聚合函数一起使用
-- 语法: group by 用于分组的字段
-- 根据性别分组, 统计每一组学生的总人数

SELECT sex '性别',COUNT(sid) FROM students GROUP BY sex


-- 根据性别分组,统计每组学生的平均分

SELECT sex '性别',AVG(score) FROM students GROUP BY sex


-- 根据性别分组,统计每组学生的总分

SELECT sex '性别',SUM(score)'总分' FROM students GROUP BY sex

-- 分组后的筛选
-- 分组后的条件,不能卸载where之后,where关键字要写在group by之前
-- 练习根据性别分组, 统计每一组学生的总人数> 5的(分组后筛选)

SELECT sex '性别',COUNT(sid) FROM students GROUP BY sex HAVING COUNT(sid)>3


-- 练习根据性别分组,只统计年龄大于等于18的,并且要求组里的人数大于4

SELECT sex '性别',COUNT(sid) FROM students WHERE age >18 GROUP BY sex HAVING COUNT(sid)>1

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

..Sean..

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

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

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

打赏作者

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

抵扣说明:

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

余额充值