当前位置: 首页 > article >正文

MySQL的sql练习,适合初学者

通过两张表,emp,dept 来演示mysql的sql语句
dept表

CREATE TABLE dept (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL
);

emp表

CREATE TABLE emp (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    age INT,
    sex VARCHAR(10),
    phone VARCHAR(20),
    deptId INT,
    CONSTRAINT fk_deptId FOREIGN KEY (deptId) REFERENCES dept(id)
);

这个emp表包含六个字段:id、name、age、sex、phone和deptId。id字段是主键,并且会自动递增,name字段用于存储员工的姓名,不允许为空。age字段用于存储员工的年龄,sex字段用于存储员工的性别,phone字段用于存储员工的电话号码。deptId字段是一个外键,它引用了dept表的id字段,表示员工所属的部门。
以上SQL语句定义了两个表的结构,并且通过外键deptId将emp表和dept表关联起来。

sql练习

单表查询

SELECT * FROM emp;	查询emp表中的所有记录。
SELECT id, name FROM emp;	查询emp表中的id和name字段。
SELECT COUNT(*) FROM emp;	查询emp表中的记录总数。

条件查询

SELECT * FROM emp WHERE age > 30;	查询emp表中年龄大于30岁的所有记录。
SELECT * FROM emp WHERE sex = '男' AND deptId = 1;	查询emp表中性别为男且部门id为1的所有记录。

排序

SELECT * FROM emp ORDER BY age DESC;	查询emp表中的所有记录,并按年龄降序排列。

分组

SELECT deptId, COUNT(*) FROM emp GROUP BY deptId;	按部门分组,查询每个部门的员工数量。

聚合函数

SELECT MAX(age), MIN(age), AVG(age) FROM emp;	查询emp表中年龄的最大值、最小值和平均值。

多表查询

SELECT emp.*, dept.name FROM emp JOIN dept ON emp.deptId = dept.id;	连接emp表和dept表,查询员工信息及其部门名称。
SELECT emp.name, dept.name FROM emp JOIN dept ON emp.deptId = dept.id WHERE emp.age > 30;	连接emp表和dept表,查询年龄大于30岁的员工及其部门名称。

子查询

SELECT * FROM emp WHERE deptId = (SELECT id FROM dept WHERE name = '销售部');	查询部门名称为“销售部”的员工信息。

插入

INSERT INTO emp (name, age, sex, phone, deptId) VALUES ('张三', 25, '男', '1234567890', 1);	向emp表中插入一条新记录。

更新

UPDATE emp SET phone = '0987654321' WHERE id = 1;	更新emp表中id为1的记录,将其电话号码更新为'0987654321'

删除

DELETE FROM emp WHERE id = 1;	删除emp表中id为1的记录。

复合操作

SELECT emp.name, dept.name FROM emp INNER JOIN dept ON emp.deptId = dept.id;	使用INNER JOIN连接emp表和dept表,查询员工及其部门名称。
SELECT emp.name, dept.name FROM emp LEFT JOIN dept ON emp.deptId = dept.id;	使用LEFT JOIN连接emp表和dept表,查询所有员工及其部门名称,如果员工没有部门,则部门名称为NULL
SELECT emp.name, dept.name FROM emp RIGHT JOIN dept ON emp.deptId = dept.id;	使用RIGHT JOIN连接emp表和dept表,查询所有部门及其员工名称,如果没有员工,则员工信息为NULL

完结,撒花!求赞求关注! 有问题可威:c_-j_-c


http://www.kler.cn/a/383024.html

相关文章:

  • 优化 invite_codes 表的 SQL 创建语句
  • 【C++】模板与泛型编程(一):定义模板,控制实例化、效率与灵活性
  • c++ [spdlog 配置与使用]
  • OpenAI 普及 ChatGPT,开通热线电话,近屿智能深耕AI培训
  • Android自定义吐司三
  • 【Mysql】truncate 和 delete的区别
  • 共同探索未来科技新境界 冠捷科技集团及腾讯云AI智能战略合作签约会
  • 开源的 API 学习平台「GitHub 热点速览」
  • 全面解析:网络协议及其应用
  • asp.net文件防盗链
  • 理解spring中的AOP
  • git 提交代码流程
  • 递归 != 递龟
  • 和合共赢 丨 广州探迹科技有限公司与泰迪智能科技战略合作签约仪式圆满结束
  • Redis常见面试题(二)
  • 蓝牙协议的前世今生
  • 猫用空气净化器哪个牌子好?求除毛好、噪音小的宠物空气净化器!
  • 华为eNSP:QinQ
  • RTDE确保整个机械臂(包括关节和连杆)都不会进入预设的不安全空间范围
  • 02 高效调优:Oracle内存体系的精细化管理实践
  • 聚观早报 | 比亚迪腾势D9登陆泰国;苹果 iOS 18.2 将发布
  • HDFS和HBase跨集群数据迁移 源码
  • 【PGCCC】Postgresql slru 缓存和存储
  • 基于 Vue3、Vite 和 TypeScript 实现开发环境下解决跨域问题,实现前后端数据传递
  • 【人工智能】图神经网络(GNN)的原理与实现:Python与PyTorch Geometric在社交网络与化学分子建模中的应用
  • 前端八股文(二)CSS 持续更新中。。。