数据库专属单词
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 #约束
#增删改查
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 #容纳人数
提示中单词:
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 #
mediumtext #
logngblob #
long #
binary #二进制
date #日期值 #时间类型YYYY-MM-DD HH:MM:SS
time #时间
year #年份值
datetime #
timestamp #时间戳
current_time() #当前时间
current_date() #当时日期
current_timestamp() #综合
now () #函数。现在
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)
);
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)
);
表内数据:
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班级表
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',' ');
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');
8,#classroom班级教室表
mysql> insert into classroom values('cm001','多媒体教室','100','a104');
mysql> insert into classroom values('cm002','null','100','a105');
第一 二章
重点
#第一章
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:可能有
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)增加字段constraint
13.1主键约束:primary key无论是单独约束还是组合约束都不能为空。表示:PRI
13.2唯一约束:unique。表示UNI
13.3非空约束not null
13.4检查约束:进行中
13.5外键约束:
13.6冗余约束:
空
空
空
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,