pubilcTreat

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

 操作数据库的DDL

-- 创建数据库
CREATE DATABASE 数据库名

-- 创建指定字符集的数据库
CREATE 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


版权声明: 博主「..Sean..」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_66609985/article/details/125436595

posted on 2022-12-19 09:44  pubilcTreat  阅读(81)  评论(0编辑  收藏  举报

导航