随笔 - 363, 文章 - 0, 评论 - 2, 阅读 - 23万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

07数据库复习01

Posted on   心默默言  阅读(166)  评论(0编辑  收藏  举报

1.数据库的概念

http://www.maiziedu.com/wiki/mysql/code/

2.Mysql5.6新特性

3.mysql存储引擎

4.修改表结构 

 

复制代码
-- 创建数据库
CREATE DATABASE IF NOT EXISTS maizi DEFAULT CHARACTER SET 'UTF8';

USE maizi;

CREATE TABLE user10(
    uid INT  KEY AUTO_INCREMENT,
    uname VARCHAR(20),
    salary FLOAT(6,2) DEFAULT 1000 
);

DROP TABLE user10;
-- 重命名
ALTER TABLE user10 RENAME user11;

-- 添加字段
ALTER TABLE user11 ADD age INT;
ALTER TABLE user11 ADD sex VARCHAR(5) AFTER salary;

-- 一次添加多个字段
ALTER TABLE user11
ADD test1 VARCHAR(5),
ADD test2 FLOAT(6,2),
ADD test3 INT;

-- 删除字段

ALTER TABLE user11 DROP test1;

ALTER TABLE user11 
DROP sex,
DROP age;
复制代码

复制代码
-- 修改字段类型
DESC user11;

ALTER TABLE user11 MODIFY uname VARCHAR(10) NOT NULL;

ALTER TABLE user11 MODIFY test2 VARCHAR(10) NOT NULL FIRST;

-- 修改字段名称
ALTER TABLE user11 CHANGE test2 test1 VARCHAR(10);
复制代码

DESC user11;
-- 删除默认字段
ALTER TABLE user11 ALTER salary DROP DEFAULT;

-- 添加默认字段
ALTER TABLE user11 ALTER uname SET DEFAULT 'hh';

 

复制代码
DESC user11;
-- 添加主键
ALTER TABLE user11 ADD PRIMARY KEY(uid);
-- 删除主键
ALTER TABLE user11 DROP PRIMARY KEY;

CREATE TABLE user10(
    uid INT  KEY AUTO_INCREMENT,
    uname VARCHAR(20),
    salary FLOAT(6,2) DEFAULT 1000 
);
DESC user10;
-- 删除主键
ALTER TABLE user10 DROP PRIMARY KEY; -- 因为含有自增长,所以不能直接删除
-- 去除自增长
ALTER TABLE user10 MODIFY uid INT UNSIGNED;
-- 删除主键
ALTER TABLE user10 DROP PRIMARY KEY;
复制代码

DESC user10;
-- 添加唯一约束
ALTER TABLE user10 ADD UNIQUE(uname);
-- 删除唯一约束
ALTER TABLE user10 DROP KEY uname;

5.查询操作

 

 

 

 

 

 

-- 分组查询
-- 按用户所属省份分组
SELECT * FROM cms_user GROUP BY proId; -- 只会显示表中第一数据

-- 向表中添加性别字段
ALTER TABLE cms_user ADD sex ENUM('','','未知');

UPDATE cms_user SET sex='' WHERE id IN(1,3,5,7,9);

UPDATE cms_user SET sex='' WHERE id IN(2,4,6,8,10);

-- 按照性别分组
SELECT * FROM cms_user GROUP BY sex;

-- 按照多个字段分组
SELECT * FROM cms_user GROUP BY sex,proId;

-- 查询编号大于5的用户,按照sex分组
SELECT * FROM cms_user WHERE id >= 5 GROUP BY sex;

-- 查询所有id,sex,用户名详情 按照性别分组
SELECT id,sex, GROUP_CONCAT(username) FROM cms_user  GROUP BY sex;

-- 查询proid 姓名详情,性别详情 按照proid分组
SELECT proId,GROUP_CONCAT(username),GROUP_CONCAT(sex) FROM cms_user GROUP BY proId;

复制代码
ALTER TABLE cms_user ADD age INT;

UPDATE cms_user SET age = 11 WHERE id = 1;

UPDATE cms_user SET age = 12 WHERE id = 2;
UPDATE cms_user SET age = 14 WHERE id = 3;
UPDATE cms_user SET age = 11 WHERE id = 4;
UPDATE cms_user SET age = 34 WHERE id = 5;
UPDATE cms_user SET age = 32 WHERE id = 6;
UPDATE cms_user SET age = 15 WHERE id = 7;
UPDATE cms_user SET age = 17 WHERE id = 8;
UPDATE cms_user SET age = 19 WHERE id = 9;
UPDATE cms_user SET age = 20 WHERE id = 10;
复制代码

-- 查询id,sex,username详情,组中总人数 按照sex分组
SELECT id,sex,GROUP_CONCAT(username) AS users,COUNT(*) FROM cms_user GROUP BY sex;

-- 统计表中所有的记录
SELECT COUNT(*) FROM cms_user;

-- count字段不统计null值
SELECT COUNT(age) FROM cms_user;

-- 查询id,sex,username详情,组中总人数,组中最大年龄,组中最小年龄,组中平均年龄,组中年龄和,按照性别分组
SELECT id,sex,GROUP_CONCAT(username),
COUNT(*) AS totalUsers,
MAX(age) AS max_age,
MIN(age) AS min_age,
AVG(age) AS avg_age,
SUM(age) AS sum_age 
FROM cms_user GROUP BY sex ;

-- 查询id,sex,username详情,组中总人数,组中最大年龄,组中最小年龄,组中平均年龄,组中年龄和,按照性别分组
SELECT id,sex,GROUP_CONCAT(username),
COUNT(*) AS totalUsers,
MAX(age) AS max_age,
MIN(age) AS min_age,
AVG(age) AS avg_age,
SUM(age) AS sum_age 
FROM cms_user GROUP BY sex WITH ROLLUP; -- with rollup 统计记录总和

复制代码
-- 查询性别sex,用户名详情,组中总人数,最大年龄,年龄总和 依据性别分组
SELECT sex,GROUP_CONCAT(username) AS users,
COUNT(*) AS totalUsers,
MAX(age) AS max_age,
SUM(age) AS sum_age
FROM cms_user GROUP BY sex;

-- 对于上述的查询结果进行二次筛选,组中人数大于2的。
SELECT sex,GROUP_CONCAT(username) AS users,
COUNT(*) AS totalUsers,
MAX(age) AS max_age,
SUM(age) AS sum_age
FROM cms_user GROUP BY sex 
HAVING totalUsers > 2;
复制代码

-- 对于上述的查询结果进行二次筛选,组中人数大于2的并且最大年龄大于33的。
SELECT sex,GROUP_CONCAT(username) AS users,
COUNT(*) AS totalUsers,
MAX(age) AS max_age,
SUM(age) AS sum_age
FROM cms_user GROUP BY sex 
HAVING totalUsers > 2 AND max_age > 33;

-- 按照id降序排列查询数据desc,默认为asc
SELECT * FROM cms_user ORDER BY id DESC;

SELECT id,age,sex,GROUP_CONCAT(username),
COUNT(*) AS totalUsers,
MAX(age) AS max_age
FROM cms_user
WHERE id >= 2
GROUP BY sex
HAVING totalUsers>=2
ORDER BY age DESC,id ASC;

-- 实现随机记录
SELECT * FROM cms_user ORDER BY RAND();

-- 查询表中前3条记录
SELECT * FROM cms_user LIMIT 3;

-- 查询表中后5条记录
SELECT * FROM cms_user ORDER BY id DESC LIMIT 5;

-- 带偏移量的显示条数
SELECT * FROM cms_user LIMIT 1,3; -- 前面一个数字是偏移量,后面一个是每页显示的条数

 

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示