Ubuntu/Mac下部署MCP SQL Server

1、创建虚拟环境:

conda create -n mcpserver python=3.10 -y && conda activate mcpserver

或者

在项目文件夹下输入并执行命令:

uv venv

激活虚拟环境:

source .venv/bin/activate


2、安装fastmcp服务:


pip install fastmcp -i https://pypi.tuna.tsinghua.edu.cn/simple


Github上的项目地址:
https://github.com/jlowin/fastmcp

3、安装相关依赖库:


pip install mysql-connector-python -i https://pypi.tuna.tsinghua.edu.cn/simple


4、测试服务:

编写代码test.py,并在命令行运行,然后,浏览器访问网址:

http://127.0.0.1:9000/sse

-----------------------------

from fastmcp import FastMCP

mcp = FastMCP("Demo 🚀",port=9000)

@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b

if __name__ == "__main__":
    mcp.run(transport='sse')

----------------------------------------

如果出现:

event: endpoint
data: /messages/?session_id=a3afb54c99dd45a08dd343dc16622edd
则表示服务已正常启动!

5、编写访问SQL的MCP服务server.py代码

----------------------------------------------

from fastmcp import FastMCP
from mysql.connector import connect, Error
from dotenv import load_dotenv
import os

mcp = FastMCP("operateMysql", port=9000)

# @mcp.tool()
# def add(a: int, b: int) -> int:
#     """Add two numbers"""
#     return a + b


def get_db_config():
    """从环境变量获取数据库配置信息

    返回:
        dict: 包含数据库连接所需的配置信息
        - host: 数据库主机地址
        - port: 数据库端口
        - user: 数据库用户名
        - password: 数据库密码
        - database: 数据库名称

    异常:
        ValueError: 当必需的配置信息缺失时抛出
    """

    # 加载.env文件
    load_dotenv()

    config = {
        "host": os.getenv("MYSQL_HOST", "localhost"),
        "port": int(os.getenv("MYSQL_PORT", "3306")),
        "user": os.getenv("MYSQL_USER"),
        "password": os.getenv("MYSQL_PASSWORD"),
        "database": os.getenv("MYSQL_DATABASE"),
    }
    print(config)
    if not all([config["user"], config["password"], config["database"]]):
        raise ValueError("缺少必需的数据库配置")

    return config


@mcp.tool()
def execute_sql(query: str) -> list:
    """执行SQL查询语句

    参数:
        query (str): 要执行的SQL语句,支持多条语句以分号分隔

    返回:
        list: 包含查询结果的TextContent列表
        - 对于SELECT查询:返回CSV格式的结果,包含列名和数据
        - 对于SHOW TABLES:返回数据库中的所有表名
        - 对于其他查询:返回执行状态和影响行数
        - 多条语句的结果以"---"分隔

    异常:
        Error: 当数据库连接或查询执行失败时抛出
    """
    config = get_db_config()
    try:
        with connect(**config) as conn:
            with conn.cursor() as cursor:
                statements = [stmt.strip() for stmt in query.split(";") if stmt.strip()]
                results = []

                for statement in statements:
                    try:
                        cursor.execute(statement)

                        # 检查语句是否返回了结果集 (SELECT, SHOW, EXPLAIN, etc.)
                        if cursor.description:
                            columns = [desc[0] for desc in cursor.description]
                            rows = cursor.fetchall()

                            # 将每一行的数据转换为字符串,特殊处理None值
                            formatted_rows = []
                            for row in rows:
                                formatted_row = [
                                    "NULL" if value is None else str(value)
                                    for value in row
                                ]
                                formatted_rows.append(",".join(formatted_row))

                            # 将列名和数据合并为CSV格式
                            results.append(
                                "\n".join([",".join(columns)] + formatted_rows)
                            )

                        # 如果语句没有返回结果集 (INSERT, UPDATE, DELETE, etc.)
                        else:
                            conn.commit()  # 只有在非查询语句时才提交
                            results.append(f"查询执行成功。影响行数: {cursor.rowcount}")

                    except Error as stmt_error:
                        # 单条语句执行出错时,记录错误并继续执行
                        results.append(
                            f"执行语句 '{statement}' 出错: {str(stmt_error)}"
                        )
                        # 可以在这里选择是否继续执行后续语句,目前是继续

                return ["\n---\n".join(results)]

    except Error as e:
        print(f"执行SQL '{query}' 时出错: {e}")
        return [f"执行查询时出错: {str(e)}"]


@mcp.tool()
def get_table_name(text: str) -> list:
    """根据表的中文注释搜索数据库中的表名

    参数:
        text (str): 要搜索的表中文注释关键词

    返回:
        list: 包含查询结果的TextContent列表
        - 返回匹配的表名、数据库名和表注释信息
        - 结果以CSV格式返回,包含列名和数据
    """
    config = get_db_config()
    sql = "SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_COMMENT "
    sql += f"FROM information_schema.TABLES WHERE TABLE_SCHEMA = '{config['database']}' AND TABLE_COMMENT LIKE '%{text}%';"
    return execute_sql(sql)


@mcp.tool()
def get_table_desc(text: str) -> list:
    """获取指定表的字段结构信息

    参数:
        text (str): 要查询的表名,多个表名以逗号分隔

    返回:
        list: 包含查询结果的列表
        - 返回表的字段名、字段注释等信息
        - 结果按表名和字段顺序排序
        - 结果以CSV格式返回,包含列名和数据
    """
    config = get_db_config()
    # 将输入的表名按逗号分割成列表
    table_names = [name.strip() for name in text.split(",")]
    # 构建IN条件
    table_condition = "','".join(table_names)
    sql = "SELECT TABLE_NAME, COLUMN_NAME, COLUMN_COMMENT "
    sql += (
        f"FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '{config['database']}' "
    )
    sql += f"AND TABLE_NAME IN ('{table_condition}') ORDER BY TABLE_NAME, ORDINAL_POSITION;"
    return execute_sql(sql)


@mcp.tool()
def get_lock_tables() -> list:
    """
    获取当前mysql服务器InnoDB 的行级锁

    返回:
        list: 包含查询结果的TextContent列表
    """
    sql = """SELECT
    p2.`HOST` AS 被阻塞方host,
    p2.`USER` AS 被阻塞方用户,
    r.trx_id AS 被阻塞方事务id,
    r.trx_mysql_thread_id AS 被阻塞方线程号,
    TIMESTAMPDIFF(SECOND, r.trx_wait_started, CURRENT_TIMESTAMP) AS 等待时间,
    r.trx_query AS 被阻塞的查询,
    l.OBJECT_NAME AS 阻塞方锁住的表,
    m.LOCK_MODE AS 被阻塞方的锁模式,
    m.LOCK_TYPE AS '被阻塞方的锁类型(表锁还是行锁)',
    m.INDEX_NAME AS 被阻塞方锁住的索引,
    m.OBJECT_SCHEMA AS 被阻塞方锁对象的数据库名,
    m.OBJECT_NAME AS 被阻塞方锁对象的表名,
    m.LOCK_DATA AS 被阻塞方事务锁定记录的主键值,
    p.`HOST` AS 阻塞方主机,
    p.`USER` AS 阻塞方用户,
    b.trx_id AS 阻塞方事务id,
    b.trx_mysql_thread_id AS 阻塞方线程号,
    b.trx_query AS 阻塞方查询,
    l.LOCK_MODE AS 阻塞方的锁模式,
    l.LOCK_TYPE AS '阻塞方的锁类型(表锁还是行锁)',
    l.INDEX_NAME AS 阻塞方锁住的索引,
    l.OBJECT_SCHEMA AS 阻塞方锁对象的数据库名,
    l.OBJECT_NAME AS 阻塞方锁对象的表名,
    l.LOCK_DATA AS 阻塞方事务锁定记录的主键值,
    IF(p.COMMAND = 'Sleep', CONCAT(p.TIME, ' 秒'), 0) AS 阻塞方事务空闲的时间
    FROM performance_schema.data_lock_waits w
    INNER JOIN performance_schema.data_locks l ON w.BLOCKING_ENGINE_LOCK_ID = l.ENGINE_LOCK_ID
    INNER JOIN performance_schema.data_locks m ON w.REQUESTING_ENGINE_LOCK_ID = m.ENGINE_LOCK_ID
    INNER JOIN information_schema.INNODB_TRX b ON b.trx_id = w.BLOCKING_ENGINE_TRANSACTION_ID
    INNER JOIN information_schema.INNODB_TRX r ON r.trx_id = w.REQUESTING_ENGINE_TRANSACTION_ID
    INNER JOIN information_schema.PROCESSLIST p ON p.ID = b.trx_mysql_thread_id
    INNER JOIN information_schema.PROCESSLIST p2 ON p2.ID = r.trx_mysql_thread_id
    ORDER BY 等待时间 DESC;"""

    return execute_sql(sql)


if __name__ == "__main__":
    mcp.run(transport="sse")

------------------------------------------------

编写数据库配置文件.env

# MySQL数据库配置
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=1qaz2wsx
MYSQL_DATABASE=student


---------------------------------------------------------------

6、启动服务:

python server.py

展示下面信息则表示MCP SQL的服务已成功启动,可以根据地址在客户端进行正常调用了。(sse模式)





*****************************************************************************


建议:
LLM使用阿里的qwen-coder-plus 32B,效果好,速度快,而且不会出现幻觉。

------------------------------------

(a)Docker中创建MySQL容器的命令:

docker run -d \
--name MacMySQL \
-e MYSQL_ROOT_PASSWORD=1qaz2wsx \
-p 3306:3306 \
mysql


(b)Ubuntu或Mac命令行中进入已创建的mysql容器,并进入mysql数据库的命令:

docker exec -it MacMySQL mysql -u root -p


(c)创建数据库及表的命令:

可以存储为create.sql
然后,通过cp命令将sql脚本复制到docker容器中:
docker cp /Users/yoyowan/Downloads/fastmcp/create.sql MacMySQL:/tmp/create.sql
最后,通过命令执行:
source /tmp/create.sql;


-- 创建学生数据库
CREATE DATABASE IF NOT EXISTS student DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 使用学生数据库
USE student;

-- 创建学生档案表
CREATE TABLE IF NOT EXISTS student_info (
    student_id INT AUTO_INCREMENT PRIMARY KEY,
    student_no VARCHAR(20) NOT NULL COMMENT '学号',
    name VARCHAR(50) NOT NULL COMMENT '姓名',
    gender ENUM('男', '女') COMMENT '性别',
    age INT COMMENT '年龄',
    major VARCHAR(50) COMMENT '专业',
    class VARCHAR(50) COMMENT '班级',
    admission_date DATE COMMENT '入学日期',
    phone VARCHAR(20) COMMENT '联系电话',
    email VARCHAR(100) COMMENT '电子邮箱',
    address VARCHAR(200) COMMENT '家庭住址',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    UNIQUE KEY (student_no)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生档案表';

-- 创建教师档案表
CREATE TABLE IF NOT EXISTS teacher_info (
    teacher_id INT AUTO_INCREMENT PRIMARY KEY,
    teacher_no VARCHAR(20) NOT NULL COMMENT '教师工号',
    name VARCHAR(50) NOT NULL COMMENT '姓名',
    gender ENUM('男', '女') COMMENT '性别',
    age INT COMMENT '年龄',
    department VARCHAR(50) COMMENT '所属部门',
    position VARCHAR(50) COMMENT '职位',
    hire_date DATE COMMENT '入职日期',
    phone VARCHAR(20) COMMENT '联系电话',
    email VARCHAR(100) COMMENT '电子邮箱',
    address VARCHAR(200) COMMENT '家庭住址',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    UNIQUE KEY (teacher_no)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='教师档案表';

-- 插入学生数据
INSERT INTO student_info (student_no, name, gender, age, major, class, admission_date, phone, email, address) VALUES
-- 中文姓名的学生
('S2025001', '张伟', '男', 20, '计算机科学', '计算机2101', '2021-09-01', '13812345678', 'zhang.wei@example.com', '北京市海淀区中关村大街1号'),
('S2025002', '王芳', '女', 19, '数学', '数学2102', '2021-09-01', '13923456789', 'wang.fang@example.com', '上海市徐汇区复旦大学路2号'),
('S2025003', '李娜', '女', 21, '物理学', '物理2103', '2021-09-01', '13734567890', 'li.na@example.com', '广州市天河区体育西路3号'),
('S2025004', '刘强', '男', 20, '化学', '化学2101', '2021-09-01', '13645678901', 'liu.qiang@example.com', '深圳市南山区科技园路4号'),
('S2025005', '陈明', '男', 19, '生物学', '生物2102', '2021-09-01', '13556789012', 'chen.ming@example.com', '成都市武侯区人民南路5号'),
('S2025006', '杨丽', '女', 20, '英语', '英语2103', '2021-09-01', '13467890123', 'yang.li@example.com', '武汉市江汉区解放大道6号'),
('S2025007', '赵磊', '男', 21, '历史', '历史2101', '2021-09-01', '13378901234', 'zhao.lei@example.com', '南京市鼓楼区中山北路7号'),
('S2025008', '周梅', '女', 19, '地理', '地理2102', '2021-09-01', '13289012345', 'zhou.mei@example.com', '杭州市西湖区文三路8号'),
('S2025009', '吴刚', '男', 20, '法学', '法学2103', '2021-09-01', '13190123456', 'wu.gang@example.com', '重庆市渝中区解放碑9号'),
('S2025010', '孙燕', '女', 21, '经济学', '经济2101', '2021-09-01', '13001234567', 'sun.yan@example.com', '西安市雁塔区小寨路10号'),
('S2025011', '郑强', '男', 20, '管理学', '管理2102', '2022-09-01', '13912345670', 'zheng.qiang@example.com', '天津市和平区南京路11号'),
('S2025012', '马丽', '女', 19, '社会学', '社会2103', '2022-09-01', '13823456781', 'ma.li@example.com', '沈阳市和平区中山路12号'),
('S2025013', '朱明', '男', 21, '心理学', '心理2101', '2022-09-01', '13734567892', 'zhu.ming@example.com', '长沙市岳麓区岳麓大道13号'),
('S2025014', '胡静', '女', 20, '教育学', '教育2102', '2022-09-01', '13645678903', 'hu.jing@example.com', '郑州市金水区文化路14号'),
('S2025015', '林强', '男', 19, '艺术学', '艺术2103', '2022-09-01', '13556789014', 'lin.qiang@example.com', '青岛市市南区香港中路15号'),
('S2025016', '何洁', '女', 20, '医学', '医学2101', '2022-09-01', '13467890125', 'he.jie@example.com', '大连市西岗区五四路16号'),
('S2025017', '高飞', '男', 21, '体育学', '体育2102', '2022-09-01', '13378901236', 'gao.fei@example.com', '厦门市思明区湖滨南路17号'),
('S2025018', '钱芳', '女', 19, '音乐学', '音乐2103', '2022-09-01', '13289012347', 'qian.fang@example.com', '福州市鼓楼区五一路18号'),
('S2025019', '孔明', '男', 20, '哲学', '哲学2101', '2022-09-01', '13190123458', 'kong.ming@example.com', '济南市历下区历山路19号'),
('S2025020', '江丽', '女', 21, '新闻学', '新闻2102', '2022-09-01', '13001234569', 'jiang.li@example.com', '合肥市庐阳区长江中路20号'),
('S2025021', '许浩', '男', 20, '计算机科学', '计算机2201', '2022-09-01', '13812345671', 'xu.hao@example.com', '南昌市东湖区八一大道21号'),
('S2025022', '邓丽', '女', 19, '数学', '数学2202', '2022-09-01', '13923456782', 'deng.li@example.com', '昆明市五华区翠湖北路22号'),
('S2025023', '罗伟', '男', 21, '物理学', '物理2203', '2022-09-01', '13734567893', 'luo.wei@example.com', '贵阳市南明区中华北路23号'),
('S2025024', '冯敏', '女', 20, '化学', '化学2201', '2022-09-01', '13645678904', 'feng.min@example.com', '海口市龙华区国贸大道24号'),
('S2025025', '韩强', '男', 19, '生物学', '生物2202', '2022-09-01', '13556789015', 'han.qiang@example.com', '石家庄市桥西区中山路25号'),
('S2025026', '曹燕', '女', 20, '英语', '英语2203', '2023-09-01', '13467890126', 'cao.yan@example.com', '太原市迎泽区迎泽大街26号'),
('S2025027', '谢明', '男', 21, '历史', '历史2201', '2023-09-01', '13378901237', 'xie.ming@example.com', '呼和浩特市回民区中山西路27号'),
('S2025028', '邹丽', '女', 19, '地理', '地理2202', '2023-09-01', '13289012348', 'zou.li@example.com', '南宁市青秀区民族大道28号'),
('S2025029', '苏强', '男', 20, '法学', '法学2203', '2023-09-01', '13190123459', 'su.qiang@example.com', '银川市兴庆区新华东路29号'),
('S2025030', '潘洁', '女', 21, '经济学', '经济2201', '2023-09-01', '13001234560', 'pan.jie@example.com', '乌鲁木齐市天山区解放北路30号'),
('S2025031', '董刚', '男', 20, '管理学', '管理2202', '2023-09-01', '13812345672', 'dong.gang@example.com', '拉萨市城关区北京中路31号'),
('S2025032', '唐丽', '女', 19, '社会学', '社会2203', '2023-09-01', '13923456783', 'tang.li@example.com', '西宁市城中区民和路32号'),
('S2025033', '徐明', '男', 21, '心理学', '心理2201', '2023-09-01', '13734567894', 'xu.ming@example.com', '兰州市城关区酒泉路33号'),
('S2025034', '汪洁', '女', 20, '教育学', '教育2202', '2023-09-01', '13645678905', 'wang.jie@example.com', '宁波市海曙区解放南路34号'),
('S2025035', '姜强', '男', 19, '艺术学', '艺术2203', '2023-09-01', '13556789016', 'jiang.qiang@example.com', '温州市鹿城区人民东路35号'),
('S2025036', '戴丽', '女', 20, '医学', '医学2201', '2023-09-01', '13467890127', 'dai.li@example.com', '绍兴市越城区解放北路36号'),
('S2025037', '沈伟', '男', 21, '体育学', '体育2202', '2023-09-01', '13378901238', 'shen.wei@example.com', '金华市婺城区双龙南街37号'),
('S2025038', '邱静', '女', 19, '音乐学', '音乐2203', '2023-09-01', '13289012349', 'qiu.jing@example.com', '台州市椒江区解放南路38号'),
('S2025039', '宋明', '男', 20, '哲学', '哲学2201', '2023-09-01', '13190123450', 'song.ming@example.com', '嘉兴市南湖区中山东路39号'),
('S2025040', '阎芳', '女', 21, '新闻学', '新闻2202', '2023-09-01', '13001234561', 'yan.fang@example.com', '湖州市吴兴区劳动路40号'),
('S2025041', '黄强', '男', 20, '计算机科学', '计算机2301', '2023-09-01', '13812345673', 'huang.qiang@example.com', '无锡市梁溪区人民中路41号'),
('S2025042', '杜丽', '女', 19, '数学', '数学2302', '2023-09-01', '13923456784', 'du.li@example.com', '徐州市云龙区和平路42号'),
('S2025043', '章勇', '男', 21, '物理学', '物理2303', '2023-09-01', '13734567895', 'zhang.yong@example.com', '常州市天宁区延陵西路43号'),
('S2025044', '龙敏', '女', 20, '化学', '化学2301', '2023-09-01', '13645678906', 'long.min@example.com', '苏州市姑苏区人民路44号'),
('S2025045', '程强', '男', 19, '生物学', '生物2302', '2023-09-01', '13556789017', 'cheng.qiang@example.com', '南通市崇川区工农路45号'),
('S2025046', '白静', '女', 20, '英语', '英语2303', '2024-09-01', '13467890128', 'bai.jing@example.com', '镇江市京口区中山东路46号'),
('S2025047', '田伟', '男', 21, '历史', '历史2301', '2024-09-01', '13378901239', 'tian.wei@example.com', '扬州市邗江区文昌中路47号'),
('S2025048', '姚芳', '女', 19, '地理', '地理2302', '2024-09-01', '13289012340', 'yao.fang@example.com', '泰州市海陵区济川东路48号'),
('S2025049', '蒋刚', '男', 20, '法学', '法学2303', '2024-09-01', '13190123451', 'jiang.gang@example.com', '盐城市亭湖区解放南路49号'),
('S2025050', '袁静', '女', 21, '经济学', '经济2301', '2024-09-01', '13001234562', 'yuan.jing@example.com', '淮安市清江浦区健康路50号'),

-- 英文姓名的学生
('S2025051', 'John Smith', '男', 20, '计算机科学', '计算机2101', '2021-09-01', '13812345679', 'john.smith@example.com', '北京市朝阳区国贸大厦1号'),
('S2025052', 'Emma Johnson', '女', 19, '数学', '数学2102', '2021-09-01', '13923456790', 'emma.johnson@example.com', '上海市浦东新区陆家嘴2号'),
('S2025053', 'Michael Brown', '男', 21, '物理学', '物理2103', '2021-09-01', '13734567891', 'michael.brown@example.com', '广州市越秀区解放路3号'),
('S2025054', 'Sarah Davis', '女', 20, '化学', '化学2101', '2021-09-01', '13645678902', 'sarah.davis@example.com', '深圳市福田区福华路4号'),
('S2025055', 'James Wilson', '男', 19, '生物学', '生物2102', '2021-09-01', '13556789013', 'james.wilson@example.com', '成都市锦江区春熙路5号'),
('S2025056', 'Jennifer Anderson', '女', 20, '英语', '英语2103', '2021-09-01', '13467890124', 'jennifer.anderson@example.com', '武汉市洪山区珞瑜路6号'),
('S2025057', 'David Taylor', '男', 21, '历史', '历史2101', '2021-09-01', '13378901235', 'david.taylor@example.com', '南京市秦淮区夫子庙7号'),
('S2025058', 'Linda Martinez', '女', 19, '地理', '地理2102', '2021-09-01', '13289012346', 'linda.martinez@example.com', '杭州市江干区凯旋路8号'),
('S2025059', 'Robert Thomas', '男', 20, '法学', '法学2103', '2021-09-01', '13190123457', 'robert.thomas@example.com', '重庆市江北区观音桥9号'),
('S2025060', 'Elizabeth White', '女', 21, '经济学', '经济2101', '2021-09-01', '13001234568', 'elizabeth.white@example.com', '西安市碑林区南大街10号'),
('S2025061', 'William Harris', '男', 20, '管理学', '管理2102', '2022-09-01', '13812345680', 'william.harris@example.com', '天津市河西区友谊路11号'),
('S2025062', 'Patricia Martin', '女', 19, '社会学', '社会2103', '2022-09-01', '13923456791', 'patricia.martin@example.com', '沈阳市沈河区中街路12号'),
('S2025063', 'Richard Clark', '男', 21, '心理学', '心理2101', '2022-09-01', '13734567892', 'richard.clark@example.com', '长沙市芙蓉区五一大道13号'),
('S2025064', 'Susan Rodriguez', '女', 20, '教育学', '教育2102', '2022-09-01', '13645678903', 'susan.rodriguez@example.com', '郑州市二七区大学路14号'),
('S2025065', 'Joseph Lewis', '男', 19, '艺术学', '艺术2103', '2022-09-01', '13556789014', 'joseph.lewis@example.com', '青岛市市北区台东路15号'),
('S2025066', 'Jessica Lee', '女', 20, '医学', '医学2101', '2022-09-01', '13467890125', 'jessica.lee@example.com', '大连市中山区人民路16号'),
('S2025067', 'Thomas Walker', '男', 21, '体育学', '体育2102', '2022-09-01', '13378901236', 'thomas.walker@example.com', '厦门市湖里区湖里大道17号'),
('S2025068', 'Margaret Hall', '女', 19, '音乐学', '音乐2103', '2022-09-01', '13289012347', 'margaret.hall@example.com', '福州市台江区茶亭路18号'),
('S2025069', 'Charles Allen', '男', 20, '哲学', '哲学2101', '2022-09-01', '13190123458', 'charles.allen@example.com', '济南市槐荫区经七路19号'),
('S2025070', 'Dorothy Young', '女', 21, '新闻学', '新闻2102', '2022-09-01', '13001234569', 'dorothy.young@example.com', '合肥市蜀山区长江西路20号'),
('S2025071', 'Daniel Wright', '男', 20, '计算机科学', '计算机2201', '2022-09-01', '13812345681', 'daniel.wright@example.com', '南昌市西湖区抚河路21号'),
('S2025072', 'Nancy King', '女', 19, '数学', '数学2202', '2022-09-01', '13923456792', 'nancy.king@example.com', '昆明市盘龙区北京路22号'),
('S2025073', 'Paul Scott', '男', 21, '物理学', '物理2203', '2022-09-01', '13734567893', 'paul.scott@example.com', '贵阳市云岩区中华中路23号'),
('S2025074', 'Lisa Green', '女', 20, '化学', '化学2201', '2022-09-01', '13645678904', 'lisa.green@example.com', '海口市美兰区海府路24号'),
('S2025075', 'Mark Baker', '男', 19, '生物学', '生物2202', '2022-09-01', '13556789015', 'mark.baker@example.com', '石家庄市新华区中华北大街25号'),
('S2025076', 'Karen Adams', '女', 20, '英语', '英语2203', '2023-09-01', '13467890126', 'karen.adams@example.com', '太原市小店区长风街26号'),
('S2025077', 'Donald Nelson', '男', 21, '历史', '历史2201', '2023-09-01', '13378901237', 'donald.nelson@example.com', '呼和浩特市新城区新华大街27号'),
('S2025078', 'Helen Carter', '女', 19, '地理', '地理2202', '2023-09-01', '13289012348', 'helen.carter@example.com', '南宁市兴宁区民主路28号'),
('S2025079', 'Steven Mitchell', '男', 20, '法学', '法学2203', '2023-09-01', '13190123459', 'steven.mitchell@example.com', '银川市金凤区上海路29号'),
('S2025080', 'Carol Perez', '女', 21, '经济学', '经济2201', '2023-09-01', '13001234560', 'carol.perez@example.com', '乌鲁木齐市沙依巴克区友好北路30号'),
('S2025081', 'Edward Roberts', '男', 20, '管理学', '管理2202', '2023-09-01', '13812345682', 'edward.roberts@example.com', '拉萨市城关区林廓路31号'),
('S2025082', 'Betty Turner', '女', 19, '社会学', '社会2203', '2023-09-01', '13923456793', 'betty.turner@example.com', '西宁市城东区互助路32号'),
('S2025083', 'George Phillips', '男', 21, '心理学', '心理2201', '2023-09-01', '13734567894', 'george.phillips@example.com', '兰州市七里河区西津路33号'),
('S2025084', 'Sandra Campbell', '女', 20, '教育学', '教育2202', '2023-09-01', '13645678905', 'sandra.campbell@example.com', '宁波市江北区中山东路34号'),
('S2025085', 'Ronald Parker', '男', 19, '艺术学', '艺术2203', '2023-09-01', '13556789016', 'ronald.parker@example.com', '温州市龙湾区温州大道35号'),
('S2025086', 'Donna Evans', '女', 20, '医学', '医学2201', '2023-09-01', '13467890127', 'donna.evans@example.com', '绍兴市越城区胜利东路36号'),
('S2025087', 'Kenneth Edwards', '男', 21, '体育学', '体育2202', '2023-09-01', '13378901238', 'kenneth.edwards@example.com', '金华市婺城区八一南街37号'),
('S2025088', 'Ruth Collins', '女', 19, '音乐学', '音乐2203', '2023-09-01', '13289012349', 'ruth.collins@example.com', '台州市黄岩区西城街38号'),
('S2025089', 'Kevin Stewart', '男', 20, '哲学', '哲学2201', '2023-09-01', '13190123450', 'kevin.stewart@example.com', '嘉兴市秀洲区中山西路39号'),
('S2025090', 'Marie Morris', '女', 21, '新闻学', '新闻2202', '2023-09-01', '13001234561', 'marie.morris@example.com', '湖州市南浔区人民路40号'),
('S2025091', 'Jason Rogers', '男', 20, '计算机科学', '计算机2301', '2023-09-01', '13812345683', 'jason.rogers@example.com', '无锡市锡山区东亭街41号'),
('S2025092', 'Judith Reed', '女', 19, '数学', '数学2302', '2023-09-01', '13923456794', 'judith.reed@example.com', '徐州市泉山区中山北路42号'),
('S2025093', 'Timothy Cook', '男', 21, '物理学', '物理2303', '2023-09-01', '13734567895', 'timothy.cook@example.com', '常州市钟楼区怀德中路43号'),
('S2025094', 'Ann Morgan', '女', 20, '化学', '化学2301', '2023-09-01', '13645678906', 'ann.morgan@example.com', '苏州市虎丘区狮山路44号'),
('S2025095', 'Larry Murphy', '男', 19, '生物学', '生物2302', '2023-09-01', '13556789017', 'larry.murphy@example.com', '南通市港闸区工农路45号'),
('S2025096', 'Frances Cooper', '女', 20, '英语', '英语2303', '2024-09-01', '13467890128', 'frances.cooper@example.com', '镇江市润州区中山东路46号'),
('S2025097', 'Dennis Peterson', '男', 21, '历史', '历史2301', '2024-09-01', '13378901239', 'dennis.peterson@example.com', '扬州市广陵区汶河路47号'),
('S2025098', 'Deborah Gray', '女', 19, '地理', '地理2302', '2024-09-01', '13289012340', 'deborah.gray@example.com', '泰州市高港区健康西路48号'),
('S2025099', 'Raymond Howard', '男', 20, '法学', '法学2303', '2024-09-01', '13190123451', 'raymond.howard@example.com', '盐城市盐都区解放南路49号'),
('S2025100', 'Cynthia Butler', '女', 21, '经济学', '经济2301', '2024-09-01', '13001234562', 'cynthia.butler@example.com', '淮安市淮阴区淮海北路50号');

-- 插入教师数据
INSERT INTO teacher_info (teacher_no, name, gender, age, department, position, hire_date, phone, email, address) VALUES
-- 中文姓名的教师
('T2025001', '李明', '男', 45, '计算机科学系', '教授', '2005-07-01', '13812345601', 'li.ming@example.com', '北京市海淀区清华大学1号'),
('T2025002', '张红', '女', 40, '数学系', '副教授', '2010-09-01', '13923456702', 'zhang.hong@example.com', '上海市徐汇区交通大学2号'),
('T2025003', '王伟', '男', 38, '物理系', '讲师', '2015-07-01', '13734567803', 'wang.wei@example.com', '广州市天河区中山大学3号'),
('T2025004', '陈静', '女', 42, '化学系', '教授', '2008-09-01', '13645678904', 'chen.jing@example.com', '深圳市南山区深圳大学4号'),
('T2025005', '赵勇', '男', 36, '生物系', '副教授', '2018-07-01', '13556789005', 'zhao.yong@example.com', '成都市武侯区四川大学5号'),

-- 英文姓名的教师
('T2025006', 'Robert Johnson', '男', 50, '英语系', '教授', '2000-07-01', '13467890106', 'robert.johnson@example.com', '武汉市武昌区武汉大学6号'),
('T2025007', 'Jennifer Smith', '女', 43, '历史系', '副教授', '2009-09-01', '13378901207', 'jennifer.smith@example.com', '南京市鼓楼区南京大学7号'),
('T2025008', 'Michael Davis', '男', 47, '法学院', '教授', '2003-07-01', '13289012308', 'michael.davis@example.com', '杭州市西湖区浙江大学8号'),
('T2025009', 'Susan Wilson', '女', 39, '经济学院', '讲师', '2016-09-01', '13190123409', 'susan.wilson@example.com', '重庆市沙坪坝区重庆大学9号'),
('T2025010', 'David Brown', '男', 41, '管理学院', '副教授', '2012-07-01', '13001234510', 'david.brown@example.com', '西安市雁塔区西安交通大学10号');

-- 完成所有数据插入
COMMIT;




评论

此博客中的热门博文

通过命令行在Github上发布项目的新版本

利用GitHub免费的静态页面托管空间发布网页

本地部署OpenAvatarChat实时交互数字人系统