当前位置: 首页> 游戏> 单机 > MySQL补充性文件

MySQL补充性文件

时间:2025/7/14 18:59:42来源:https://blog.csdn.net/weixin_57789471/article/details/140669979 浏览次数:0次

数据库专属单词

authentication	#身份验证
delimiter	#分隔符
character	#字符集
collate		#整理。 指定字符集的排序规则
unicode		#统一码
flush		#刷新
privileges	#特权
string		#串
set			#设置
use			#使用
zerofill	#修饰符。0可以填补输出的值
unsigned	#修饰符。无符号
binary		#修饰符。二进制
engine		#引擎,发动机
temporary	#临时
options		#选择
statement	#声明
auto_increment #自动增长列
comment		#注释
unique		#唯一的
primary		#主要的
general		#一般的   utf8_general_ci
describe	#描述
modify		#修改
change		#修改
constraint	#约束
foreign		#外键
references	#参考
restrict	#限制
cascade		#级联
action		#行为#增删改查
create		#创建
show		#显示
select		#选择
alter		#修改
drop		#删除
insert      #插入
describe|desc	#查看表结构

建表中单词:

1,#Student表
Sex			#性别
Birthday	#生日
native		#本地/籍贯
National 	#民族/国家
Telephone 	#电话
remark		#备注2,#course课程表
course		#课程
nature		#性质
credit		#学分
remark 		#备注3,#class表
major		#专业4,#teacher表
department	#部门5,#department系部表6,#score成绩表
examscore	#考试成绩
partscore	#平均成绩7,#major专业信息表8,#classroom教室信息表
personnumber	#容纳人数9,#RollCall点名表
attend		#出席/出勤
absence		#缺席
late		#迟到10,#teachingcourse排课信息表
part		#部分/周次

提示中单词:

definition	#定义*
control		#控制*
language	#语言*
manage		#管理*
query		#查询*
affected	#影响
sec			#片刻
for			#给
unknown		#未知
structure	#结构
just		#只是
exit		#出口	
quit		#退出tiny		#极小的		#数据类型
small		#小的
medium		#中等的
integer		#整数
big			#大的
float		#单精度浮点数
double		#双精度浮点数
decimal		#小数的varchar		#变长字符串		#字符串类型
tinyblob	#不超过255字符的二进制字符串
tinytext	#
blob		#二进制形式的长文本数据
text		#文本
mediumblob	#			#medium中等的
mediumtext	#
logngblob	#			#logng日志
long		#
binary		#二进制	关键字时区别大写date		#日期值		#时间类型YYYY-MM-DD HH:MM:SS
time		#时间
year		#年份值
datetime	#
timestamp	#时间戳
current_time()	#当前时间
current_date()	#当时日期
current_timestamp()		#综合
now ()		#函数。现在查看当前MySQL时间enum		#枚举类型
set			#类型		must		#必须
least		#最少的
column		#列
empty		#空的records		#记录
duplicate	#重复项
warning		#警告

学生管理系统源代码

#学生管理系统数据库
mysql> create database if not exists xsgl-> default character set utf8-> default collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec)1,#创建student表(学号stuid,姓名stuname,性别stusex,生日stubirthday,籍贯native,民族national),联系电话telephone,班级编号classid)
create table if not exists student
(stuid char(8),
stuname varchar(10),
stusex char(2),
stubirthday date,
native varchar(20) comment '籍贯',
national char(6) comment '民族',
telephone char(11),
classid char(10)
);mysql> alter table student modify stuname varchar(10) not null;2,#course课程表
create table course
(courseid char(8),
coursename varchar(25),
coursenature char(10) comment '课程性质',
credit tinyint(1) comment '学分',
courseremark text comment '备注')
engine=innodb
default character set utf8
default collate utf8_general_ci;3,#class班级表
create table class
(classid char(10),
classname varchar(20),
num int,
teacherid char(10),
majorid char(8)
);4,#teacher教师表
create table teacher
(teacherid char(10),
teachername varchar(8),
teachersex char(2) default '女',
teacherbirthday date,
telephone char(11),
departmentid char(8)
);mysql> alter table teacher add check(teachersex in('男','女'));5,#department系部表
create table department
(departmentid char(8),
departmentname varchar(20)
);
mysql> alter table department add constraint pk_id primary key(departmentid);6,#score成绩表
创建成绩表,包括的字段有学号、课程号、考试成绩、平时成绩,其中学号和课程号定义为组合主键。
create table score
(stuid char(8),
courseid char(8),
examscore int,
partscore int,
primary key(stuid,courseid)
);7,#major专业信息表
创建专业信息表,包括的字段有专业编号、专业名称、所属系部编号。其中,专业编号为主键约束,专业名称为唯一键约束。
create table major
(majorid char(8) primary key,
majorname varchar(20) unique,
departmentid char(8)
);
mysql> alter table student add constraint uq_tel unique(telephone);8,#classroom教室信息表
创建教室信息表,包括的字段有教室编号、教室类型、容纳人数、地点。其中,教室编号为主键约束,教室类型为非空约束
create table classroom
(classroomid varchar(10) primary key,
classroomtype varchar(20) not null,
personnumber int,
place varchar(20)
);9,#RollCall点名表
创建点名表,包括的字段有学号、课程号、出勤次数、缺勤次数、迟到次数。其中,学号和课程是组合主键;出勤次数、缺勤次数、迟到次数这三个字段都是大于等于 0 的检查约束。
create table rollcall
(stuid char(8),
courseid char(8),
attendnumber int check(attendnumber>=0),
absencenumber int check(absencenumber>=0),
latenumber int check(latenmuber>=0),
primary key(stuid,courseid)
);10,#teachingcourse排课信息表
创建排课信息表,包括的字段有班级编号、课程编号、教室编号、教师编号、星期、周次。其中,所有字段的组合构成组合主键;班级编号定义为外键约束参考班级表中的编号字段;课程编号定义为外键约束参考课程表中的课程字段;教室编号定义为外键约束参考教室表中的编号字段;教师编号定义为外键约束参考教师表中的编号字段;星期和节次定义为不允许为空的约束
create table teachingcourse
(classid char(10),
courseid char(8),
classroomid varchar(10),
teacherid char(10),
weekday char(3) not null,
part tinyint not null,
primary key(classid,courseid,classroomid,teacherid,weekday,part),
foreign key(classid)references class(classid),
foreign key(courseid)references course(courseid),
foreign key(classroomid)references classroom(classroomid),
foreign key(teacherid)references teacher(teacherid)
);#可能是四个父表没有主键导致,我们添加一下再创建
ERROR 1215 (HY000): Cannot add foreign key constraint
alter table class add primary key(ClassID);
alter table course add primary key(courseid);
alter table classroom add primary key(classroomid);
alter table teacher add primary key(teacherid);

表内数据:

1,#student表
mysql> insert into student values-> ('150101','张林浩','男','1997-01-12','河北保定','汉族','15831282200','md1501');
mysql> insert into student values-> ('150102','赵申','男','1996-03-24','河北石家庄','汉族','15903120000','cp1502');
mysql> insert into student values-> ('150103','李昊','男','1998-10-01','河北邯郸','汉族','13731330101','soft1501');2,#course课程表3,#class班级表
mysql> insert into class values('mb1501','移动15级','50','221198101','67001');4,#teacher教师表
mysql> insert into teacher(teacherid,teachername,teacherbirthday,telephone,departmentid)-> values('221100135','刘一然','1977-02-12','13483217762','');
mysql> insert into Teacher values('221101146','刘亚军',default,'1977-05-06','13784426958',' ');
mysql> insert into teacher values('221102158','李小含','男','1980-04-09','15081267071','');
Query OK, 1 row affected (0.01 sec)mysql> insert into teacher values('221103160','王晓萌','女','1980-10-03','15630244478','1311001');
Query OK, 1 row affected (0.00 sec)mysql> insert into teacher values('221104166','王朝阳','无','1981-04-15','15732265848','1311003');mysql> alter table teacher modify teachersex enum('男','女');5,#department系部表
mysql> insert into department values('1311001','信息工程系');
mysql> insert into department values('1311002','智能工程系');6,#score成绩表
mysql> insert into score values('150101','10101',98,91);
mysql> insert into score values('150101','10102',97,90);7,#major专业信息表
mysql> insert into major values('67002','计算机应用','131107');
mysql> insert into major values('67002','计算机应用','131107');
mysql> update major set majorid='77001' where majorid='67001';8,#classroom班级教室表
mysql> insert into classroom values('cm001','多媒体教室','100','a104');
mysql> insert into classroom values('cm002','null','100','a105');9,#RollCall点名表
mysql> insert into rollcall values('150101','10101',-54,0,0);10,#teachingcourse排课信息表
我们先清空表在创建外键约束
学生表与班级表的外键约束
delete from student;
mysql> alter table student add foreign key(classid) references class(classid) on delete restrict on update restrict;
专业表和班级表的外键约束
delete from class;
mysql> alter table class add constraint fk_majorid foreign key(majorid)references major(majorid) on update cascade;

第一 二章

重点

#第一章
1,数据库中的名词
2,数据库三大范式
3,Windows中安装MySQL5.7版本
4,MySQL的启动与停止(net命令)
5,给root用户改登录密码(1)[]mysqladmin -u root -p旧密码 passWord 新密码;(2)>set password for 用户名=password('新密码')(3)>use mysql;>update user set authentication_string=password('新密码') where user='root' and host='localhost';>flush privileges;#第二章
1,创建数据库 create会查看字符集名;会查看排列规则(collation)
2,查看数据库 show会查看数据库定义
3,选择数据库 use
4,修改数据库 alter
5,删除数据库	drop	

1,关系型数据库是什么?其中的关系是指什么?

答:

  • 关系型数据库是一些相关的表和其他数据库对象的集合。
  • 数据模型符合满足一定条件的二维表格式。
  • “关系”指的是表与表之间的关联和对应规则。
    • 对应规则:一对一,一对多,多对多。

2,E-R模型?

  • 实体为表。用矩形表示。
  • 属性为字段。用椭圆表示。
  • 关系为表间关系。用菱形表示。

3,MySQL目录?

  • bin:可执行文件。mysql.exe
  • docs:版本信息。
  • include:头文件。mysql.h
  • lib:库文件。
  • share:存放字符集,共享文件。
  • my.ini:配置文件。
  • readme:可能有

image.png

4,DOS环境?

答:磁盘操作系统。就黑框模式

5,MySQL在安装时,出现的默认数据库?

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
9 rows in set (0.00 sec)information_schema 	#所有数据库的信息mysql 				#用户账号,权限等系统信息performance_schema  #服务器的性能信息sys  				#系统和性能监控的视图和存储过程

6,字符集与排列规则?

#字符集排序规则
用于确定如何比较和排序字符串数据
gbk_chinese_ci
utf8_general_ci#字符集
gbk		支持中文
utf8	中英混合

7,数据库中的对象是什么?

答:具有特定结构和功能的数据存储和操作单元。(表,视图,索引等)

8,三大范式?

答:

  • 第一范式:字段具有原子性,不可再拆分。举例:课程表案例
  • 第二范式:非主键字段完全依赖于主键。举例:订单表案例
  • 第三范式:消除依赖。学生表案例

9,MySQL之间的关系

答:一对一、一对多、多对多。

10,MySQL数据库的优缺点?

答:

优点:体积小,速度快,总体拥有成本低,开源免费,支持多种操作系统。

缺点

第三章

重点

1,理解数值类型
2,理解字符串类型
3,理解时间类型select now();	#查看当前时间和日期
4,理解复合类型enum  #枚举类型。从一个集合中选取一个值set		#从预定义的集合中取任意数量的值
5,查看当前服务器默认的存储引擎show engines;
6,查看某表的存储引擎show create table 表名;
7,建表(重中之重*****)create table
8,对表的各项操作	(1)show tables; 查看库中的表,但查不到临时表(2)show create table 表名; 查看表定义(3)describe|desc 表名;  查看表结构和定义(4)select * from 表名;  查看表内容
9,基于原表创建新表create table 新表名 select #会复制数据但不会复制约束和索引 create table 新表名 like 旧表名	#只复制结构
10,使用default默认值
11,删除表dorp table 表名1,表名2。。。
12,调整表结构(***)添加新字段add设置默认值default改字段定义change删无用字段drop重命名数据表rename
13,添加约束(***)两种方法:(1)建表定义字段constraint(2)增加字段constraint13.1主键约束:primary key无论是单独约束还是组合约束都不能为空。表示:PRI13.2唯一约束:unique。表示UNI 13.3非空约束not null13.4检查约束:check 13.5外键约束:foreign key***13.6冗余约束:dropdelete from 表名;		#删除表中的数据,表结构还在14,表自动增长列auto_incrment

1.jpg

image.png

1

2

1,数值类型中的类型范围有符号和无符号是什么?

  • 是整数数据类型的属性

  • 有符号():能表示正数,负数和0。默认是有符号数。例如int

  • 无符号(unsigned):能表示0和正数。例如unsigned int

2,char和varchar的区别?

  • char类型实际分配空间时是char指示器长度规定的字节数。
  • varchar类型会根据数据的实际长度改变存储值的长度。

3,保存当前时间和日期到数据库中?

  • 使用 current_date 或者 now () 函数的值作为输入,将系统的当前日期保存到数据库中。
  • 使用 current_time 或者 now ()函数的值作为输入,将系统的当前时间保存到数据库中。
  • 使用 now( )或者 current_timestamp( )函数的值作为输入,将系统的当前日期和时间保存到数据库中

4,MySQL中引擎问题?

#问题
1,MySQL 常见的存储引擎有哪些,它们的特点分别是什么?
2,在什么场景下应该选择 InnoDB 引擎,什么场景下选择 MyISAM 引擎?
3,谈谈 InnoDB 的事务支持和锁机制。
4,描述一下 MyISAM 和 InnoDB 在数据存储结构上的差异。
5,如何在创建表时指定存储引擎?
#回答思路
1,MySQL 常见的存储引擎有 InnoDB、MyISAM、MEMORY 等。InnoDB 支持事务、行级锁、外键约束,适合对数据完整性和并发性要求较高的场景。MyISAM 不支持事务和外键,但查询速度较快,适合读多写少且不需要事务支持的场景。
2,如果应用需要事务处理、数据一致性和可靠性,以及经常进行插入、更新和删除操作,应选择 InnoDB 引擎。而对于主要进行读取操作、数据量较大且对事务要求不高的情况,可选择 MyISAM 引擎。
3,InnoDB 支持 ACID 事务,通过行级锁来提高并发性能,在并发操作时能更好地保证数据的一致性。
4,MyISAM 将表存储为三个文件:数据文件、索引文件和表结构文件。InnoDB 则以聚簇索引的方式存储数据,将数据和索引放在一起。
5,在创建表时,可以通过 ENGINE 关键字指定存储引擎,例如:CREATE TABLE table_name (column_definitions) ENGINE = InnoDB;

5,关于约束的面试

问题 1:什么是 MySQL 中的约束?
回答:约束是用于确保数据库中数据的完整性和一致性的规则。它们可以限制表中数据的取值范围、数据之间的关系以及保证某些列的值不为空等。常见的约束类型包括主键约束(PRIMARY KEY)、外键约束(FOREIGN KEY)、唯一约束(UNIQUE)、非空约束(NOT NULL)和检查约束(CHECK)。问题 2:主键约束的作用是什么?
回答:主键约束用于唯一标识表中的每一行数据。它确保主键列的值是唯一且不为空的。主键可以由一个或多个列组成,通过主键可以快速、准确地访问和关联表中的数据。问题 3:外键约束的用途是什么?如何建立外键约束?
回答:外键约束用于维护两个表之间的关系,确保数据的一致性和参照完整性。它保证了在子表中的外键列的值要么与父表中的主键列的值匹配,要么为空。在 MySQL 中,可以使用以下语句建立外键约束:
​```sql
ALTER TABLE child_table
ADD CONSTRAINT fk_name
FOREIGN KEY (child_column) REFERENCES parent_table (parent_column);
​```
其中,`child_table` 是子表的名称,`child_column` 是子表中的外键列,`parent_table` 是父表的名称,`parent_column` 是父表中的主键列,`fk_name` 是外键约束的名称。问题 4:唯一约束和主键约束有什么区别?
回答:主键约束和唯一约束都确保列中的值是唯一的,但主键约束不允许为空值,且一张表只能有一个主键。而唯一约束允许为空值,但可以在表中定义多个唯一约束。问题 5:请举例说明非空约束的应用场景。
回答:非空约束常用于一些关键信息的列,例如用户的用户名、密码等。这些列不应该允许为空值,以确保数据的完整性和可用性。例如,在一个员工表中,员工编号、姓名等列通常设置为非空约束。问题 6:检查约束在 MySQL 中的支持情况如何?
回答:在 MySQL 8.0 之前,对检查约束的支持有限,基本上只在创建表时进行语法检查,而在数据插入或更新时并不强制检查约束条件。从 MySQL 8.0 开始,提供了更完整的检查约束支持,可以在数据操作时进行实际的约束检查。

6,关于表结构的面试

问题 1:在 MySQL 中,如何增加一个新列到现有表?
回答:可以使用 `ALTER TABLE` 语句来增加新列。问题 2:在调整表结构时,需要注意哪些事项?
回答:
1. 备份数据,以防调整过程中出现意外导致数据丢失或损坏。
2. 对于大型表,调整结构可能会消耗大量时间和系统资源,尽量在业务低峰期进行操作。
3. 如果表中有大量数据,某些操作(如修改列的数据类型)可能会导致性能问题或数据截断。
4. 外键关联的表在进行结构调整时需要特别小心,以免影响数据的一致性。
5. 注意不同数据类型之间的转换规则和可能的精度损失。问题3:如果表中有大量数据,如何高效地进行表结构调整?
回答:
1. 可以先创建一个具有新结构的临时表,将数据从原表复制到临时表,然后删除原表,再将临时表重命名为原表的名称。
2. 对于一些简单的操作,如添加有默认值的列,可以分阶段进行,先在表结构中添加列,然后在后续的业务空闲期更新数据。

第四章

结尾

关键字:MySQL补充性文件

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: