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;