P95.12

CREATE DATABASE tdb;
USE tdb;
-- DROP DATABASE tdb;
-- 学生表
CREATE TABLE students(
    sid int PRIMARY KEY COMMENT "学号",
    `name` varchar(8) NOT NULL COMMENT "学生姓名",
    sage int ,
    gender int,
    dept int COMMENT "所在系所"
);

-- 教师表
CREATE TABLE teachers(
    tid int PRIMARY KEY COMMENT "工号",
    tname varchar(20) UNIQUE COMMENT "教师名",
    title varchar(20) DEFAULT '讲师' COMMENT "职称",
    base_salary double COMMENT "基础工资"
);

-- 课程表
CREATE TABLE courses(
    cid int PRIMARY KEY COMMENT "课程ID",
    cname varchar(20) COMMENT "课程名",
    start_semester varchar(20) COMMENT "开课学期",
    cteacher_id int COMMENT "任课教师ID",
    CONSTRAINT fk_ctid_tid FOREIGN KEY (cteacher_id) REFERENCES teachers(tid)
);

-- 选修表
CREATE TABLE optional_courses  (
    sid int COMMENT "学号",
    cid int COMMENT "课程ID",
    score int,
    PRIMARY KEY(sid,cid),
    
    CONSTRAINT fk_osid_sid FOREIGN KEY (sid) REFERENCES students(sid),
    FOREIGN KEY (cid) REFERENCES courses(cid)
);


-- drop table optional_courses;

-- 教师表(teachers)添加部门(dept)字段
ALTER TABLE teachers ADD COLUMN dept VARCHAR(10);

-- 学生表(students)姓名(name) 数据类型varchar(8) 字段名改为学生姓名(sname)
ALTER TABLE students CHANGE `name` sname varchar(8) NOT NULL;


-- 教师表 的教师名字(tname)段数据 从 varchar(10)-> varchar(12)
ALTER TABLE teachers MODIFY COLUMN tname VARCHAR(12) UNIQUE;

-- 删除 教师(teachers)  部门(dept) 字段
ALTER TABLE teachers DROP COLUMN dept;

-- 删除 课程(courses) 任课教师(cteacher_id) 外键约束
AlTER TABLE courses DROP FOREIGN KEY fk_ctid_tid;

-- 教师表(teachers) 按职称(title)建立普通索引 
CREATE INDEX idx_teacher_title ON teachers(title);


-- 按教师名(tname)降序建立唯一索引
CREATE UNIQUE INDEX uk_teacher_tname ON teachers(tname DESC);

-- 删除 选修表(optinal_courses)
DROP TABLE optional_courses;

26-10-12

-- Q1:
-- 创建表语法
 CREATE TABLE 表名(
 字段名 数据类型 约束,
 字段名 数据类型 约束
);

-- 常见数据类型
字符 CHAR VARCHAR  TEXT
数字 INT  FLOAT  DOUBLE
日期时间 DATE【日期】  DATETIME 【日期时间】

-- CHAR VARCHAR区别
CHAR:定长字符串  空间固定 不足补空格 ** 查询快 适合固定长度数据 **
VARCHAR:变长字符串  按照实际长度存储 ** 节省存储 适合长度不固定的数据 **

--  修改字段名语法
CHANGE 和 MODIFY
CHANGE:改字段名+数据类型/约束
MODIFY:只改字段数据类型/约束

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新字段名数据类型[约束];
ALTER TABLE students CHANGE name sname VARCHAR(20);

ALTER TABLE 表名 MODIFY 字段名 要修改的数据类型[约束];
ALTER TABLE students MODIFY name VARCHAR(30);

-- 建表时加约束
CREATE TABLE 表名(
  字段名 数据类型 [约束],
  字段名 数据类型 [约束]
);

-- 添加主键约束
-- ALTER TABLE 表名 ADD PRIMARY KEY(字段名);
ALTER TABLE students ADD PRIMARY KEY(sname);

-- 添加唯一约束
-- ALTER TABLE 表名 ADD UNIQUE(字段名);
ALTER TABLE students ADD UNIQUE(sid);

-- 添加非空约束
-- ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;
ALTER TABLE students MODIFY sid int NOT NULL;

-- 删除唯一约束
-- ALTER TABLE 表名 DROP INDEX 索引名;

-- 删除默认值约束
-- ALTER TABLE 表名 ALTER 字段名 DROP DEFAULT;

-- 删除主键约束
-- ALTER TABLE 表名 DROP PRIMARY KEY;


--添加默认值
-- ALTER TABLE 表名 ALTER 字段名 SET DEFAULT 默认值;
ALTER TABLE students ALTER  gender  SET DEFAULT '男';

-- 修改字段数据类型
-- ALTER TABLE 表名 MODIFY 字段名 数据类型;
ALTER TABLE students MODIFY age TINYINT;

-- 删除主键
-- ALTER TABLE 表名 DROP PRIMARY KEY;
ALTER TABLE students DROP PRIMARY KEY;

-- 查看表结构
-- DESC 表名
DESC students;

-- 查看所有表
SHOW TABLES;


-- 查看建表语句
-- SHOW CREATE TABLE 表名;


-- 删除表
-- DROP TABLE 表名;
DROP TABLE students;


-- 插入数据
INSERT INTO 表名(字段列表) VALUES(值1,值2 ...);
INSERT INTO 表名 VALUES(所有字段值);


-- 插入数据 
-- INSERT INTO 表名 VALUES(都有字段值);
INSERT INTO students VALUES(1,'小胡',18,1,1);
INSERT INTO students VALUES(2,'小里', 20,1,2);

INSERT INTO teachers VALUES(1,'胡老师','讲师',2900.00);
INSERT INTO teachers VALUES(2,'王老师','教授', 9000.00);

INSERT INTO courses VALUES(1,'Vue.js框架技术','2026 第一学期',1);
INSERT INTO courses VALUES(2,'MYSQL 数据库系统','2026 第一学期',2);

INSERT INTO optional_courses VALUES(1,1,99.5);
INSERT INTO optional_courses VALUES(2,2,96.5);



-- 查看表数据
-- SELECT * FROM 表名
SELECT * FROM students;
SELECT * FROM teachers;
SELECT * FROM courses;
SELECT * FROM optional_courses;

最后修改:2026 年 10 月 12 日
如果觉得我的文章对你有用,请随意赞赏