MySQL数据库有人会吗

1、建库
2、库里让两个表,有关键字
3、表里分别插入两条数据
4、建一个视图
5、创建并调用一个存储过程,可以输入学号查询姓名
6、查询:单表查询(包括 where oeder by groupby 等)可以写多条语句
了、查询:两个表内连接查询
8、子查询
9、创建并调用存储函数,输入半径求面积

下面是一个sql简单脚本,有详细注释,希望能帮到你:

-- 创建数据库
CREATE DATABASE IF NOT EXISTS test_db;
USE test_db;

-- 创建表1
CREATE TABLE IF NOT EXISTS table1 (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    keyword VARCHAR(50)
) ENGINE=InnoDB;

-- 插入表1数据
INSERT INTO table1 (name, keyword) VALUES ('Tom', 'apple'), ('John', 'orange');

-- 创建表2
CREATE TABLE IF NOT EXISTS table2 (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    keyword VARCHAR(50)
) ENGINE=InnoDB;

-- 插入表2数据
INSERT INTO table2 (name, keyword) VALUES ('Alice', 'banana'), ('Bob', 'grape');

-- 创建视图
CREATE VIEW IF NOT EXISTS view1 AS
SELECT name, keyword FROM table1 WHERE keyword='apple'
UNION ALL
SELECT name, keyword FROM table2 WHERE keyword='banana';

-- 创建存储过程
DELIMITER //
CREATE PROCEDURE IF NOT EXISTS get_name_by_id(IN id INT)
BEGIN
    SELECT name FROM table1 WHERE id = id;
END //
DELIMITER ;

-- 调用存储过程
CALL get_name_by_id(1);

-- 单表查询
SELECT * FROM table1 WHERE keyword='apple' ORDER BY id DESC;
SELECT COUNT(*) FROM table1 WHERE keyword='apple';
SELECT name, COUNT(*) FROM table1 GROUP BY name;

-- 两个表连接查询
SELECT * FROM table1 JOIN table2 ON table1.keyword=table2.keyword;

-- 子查询
SELECT * FROM table1 WHERE keyword IN (SELECT keyword FROM table2);

-- 创建存储函数
DELIMITER //
CREATE FUNCTION IF NOT EXISTS get_area(IN r FLOAT)
RETURNS FLOAT
BEGIN
    RETURN 3.1415926535 * r * r;
END //
DELIMITER ;

-- 调用存储函数
SELECT get_area(3.0);


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/1083479
  • 你也可以参考下这篇文章:MySQL~数据库的聚合查询(聚合函数、group by)与联合查询(内连接、外连接)实现多表查询
  • 除此之外, 这篇博客: 【MySQL从青铜到王者】第四篇:数据库表的基本查询增、删、查、改中的 七、group by子句的使用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    在select中使用group by 子句可以对指定列进行分组查询。

    select column1, column2, … from table group by column;

  • 以下回答来自chatgpt:
    1. 建库

    可以通过MySQL的命令行界面或者图形化界面(如Navicat)进行建库。

    在命令行中,可以使用以下语句来建立一个名为example的数据库:

    CREATE DATABASE example;
    

    在图形化界面中,可以选择“新建数据库”,并填写相关信息。

    1. 创建表

    可以使用以下语句在example数据库中创建两个表,一个叫做students,一个叫做courses:

    CREATE TABLE students (
      id INT PRIMARY KEY,
      name VARCHAR(50),
      age INT,
      major VARCHAR(50)
    );
    
    CREATE TABLE courses (
      id INT PRIMARY KEY,
      course_name VARCHAR(50),
      teacher_name VARCHAR(50)
    );
    

    这里的students表中包含id、name、age和major这四个字段,其中id是主键;courses表中包含id、course_name和teacher_name这三个字段,其中id也是主键。

    1. 插入数据

    可以使用以下语句在两张表中分别插入两条数据:

    INSERT INTO students (id, name, age, major) VALUES (1, '张三', 20, '计算机科学');
    INSERT INTO students (id, name, age, major) VALUES (2, '李四', 21, '软件工程');
    
    INSERT INTO courses (id, course_name, teacher_name) VALUES (1, '数据库', '王老师');
    INSERT INTO courses (id, course_name, teacher_name) VALUES (2, '数据结构', '李老师');
    

    这里分别向students和courses表中插入了两条数据。

    1. 建立视图

    可以使用以下语句在example库中创建一个视图,用于查询学生及其所选课程信息:

    CREATE VIEW student_course AS
    SELECT s.name AS student_name, s.major, c.course_name, c.teacher_name
    FROM students s
    JOIN courses c ON s.id = c.id;
    

    这里的视图名字为student_course,其中用到了JOIN连接,将students表和courses表的数据进行了关联。

    1. 创建存储过程

    可以使用以下语句在example库中创建一个名为find_name的存储过程:

    CREATE PROCEDURE find_name(IN student_id INT)
    BEGIN
    SELECT name FROM students WHERE id = student_id;
    END;
    

    其中,IN关键字表示这个存储过程需要传入一个参数,这里是学生的id;BEGIN和END之间是存储过程的主体,可以在这里写代码实现查询学生姓名的功能。

    1. 单表查询

    以下是一些常见的单表查询语句:

    SELECT * FROM students;   # 查询所有学生信息
    SELECT name, age FROM students WHERE major = '计算机科学';   # 查询计算机科学专业的学生的姓名和年龄
    SELECT name, age FROM students ORDER BY age DESC;   # 按照年龄从大到小查询学生姓名和年龄,并进行排序
    SELECT major, COUNT(*) FROM students GROUP BY major;   # 统计每个专业的学生人数
    
    1. 两个表内连接查询

    可以使用以下语句进行两个表的内连接查询:

    SELECT s.name AS student_name, c.course_name, c.teacher_name
    FROM students s
    JOIN courses c ON s.id = c.id;
    

    这里用到了JOIN连接,将students表和courses表的数据进行了关联。

    1. 子查询

    子查询就是查询语句中嵌套了另一个查询语句,在内层查询中先得到所需的结果,再将这个结果作为外层查询的条件。

    以下是一个使用子查询的示例:

    SELECT name
    FROM students
    WHERE id IN (SELECT id FROM courses WHERE course_name = '数据库');
    

    这里先从courses表中查询课程名为“数据库”的记录,得到这些课程所对应的id,再将这些id作为条件查询students表,得到选修这门课程的学生姓名。

    1. 创建存储函数

    可以使用以下语句在example库中创建一个名为calculate_area的存储函数:

    CREATE FUNCTION calculate_area(radius INT) RETURNS INT
    BEGIN
    DECLARE pi FLOAT DEFAULT 3.14;
    DECLARE result FLOAT;
    SET result = pi * radius * radius;
    RETURN ROUND(result);
    END;
    

    其中,radius是存储函数需要接收的参数,这里是圆的半径;DECLARE关键字声明了两个变量pi和result;SET关键字对result进行了计算,最后使用RETURN关键字将计算结果返回。这个存储函数的功能是用输入的半径计算出圆的面积并返回。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^