1.请描述MySQL数据库在管理数据的时候的使用的管理模型。
MySQL是采用库和表的方式管理数据的,一个MySQL服务中可以存在多个数据库,每一个数据库中可以存在多张表。表一定要存在于库里面。
2.简述表结构包含哪些内容。
针对已经存在的表student,使用命令
desc student或者show columns from student;
表结构:
Field字段(表示的是列名)
Type类型(表示的是列的数据类型)
Null 这个列是否能取空值
Key 是否为主键,在mysql中key 和index 是一样的意思,这个Key列可能会看到有如下的值:PRI(主键)、MUL(普通的b-tree索引)、UNI(唯一索引)
Default:列的默认值
Extra:其它信息
3.请说明SQL指什么。并写出SQL的常见分类,说明每一类SQL的作用及相关关键字。
SQL指的是结构化查询语句(structured query lanangue)
SQL语句的种类:
- DDL:数据定义语言 (表结构相关的操作,库的相关操作)
关键字:create[创建] alter[修改] drop[删除]
作用:定义数据的结构 - DML:数据操作语言(表中数据操作相关)
关键字:insert[插入] select[查询] update[修改] delete[删除]
作用:实现对表中的数据进行增删改查的操作(crud) - DCL:数据控制语言(表中数据操作授权)
关键字:grant[授权] revoke[取消授权]
作用:实现表中数据访问权限的控制 - TCL:事务控制语言(事务相关的操作)
关键字:commit[提交事务] rollback[回滚事务]
4.DDL是什么,DDL相关的关键字有哪些,可用于实现哪些功能,语法是怎么样的,举例说明。(相关结果截图)
数据定义语言
create[创建] alter[修改] drop[删除]
1) 创建数据库,删除数据库
2) 创建表,删除表
3) 修改表结构:
添加字段,修改字段的名字,修改字段的类型,修改字段的顺序,删除字段,
add change modify drop
5. 请总结add,modify,change的作用。
通过add change modify drop这四个关键字实现
能用modify实现的都能用change实现
一般修改表名的时候用change
其他的修改建议用modify
6. 请设计一张表,创建联合主键,并通过添加数据验证联合主键的特性。(相关结果截图)
存储有问题
设立联合主键的代码:
create table homework_q6(id int auto_increment, _name varchar(8), tel int, address varchar(25), primary key(id, _name));
desc homework_q6;
设了联合主键之后,id值一样表也能存储。
如果不设立联合主键,id值一样就表就无法存储
扩展
“主键是唯一的索引”是有歧义的。应该是“当表中只有一个主键时,它是唯一的索引;当表中有多个主键时,称为联合主键,联合主键联合保证唯一索引”。
为什么自增长ID已经可以作为唯一标识的主键,为啥还需要联合主键呢。因为,并不是所有的表都要有ID这个字段啊哈哈,比如,我们建一个学生表,没有唯一能标识学生的ID,怎么办呢,学生的名字、年龄、班级都可能重复,无法使用单个字段来唯一标识,这时,我们可以将多个字段设置为主键,形成复合主键,这多个字段联合标识唯一性,其中,某几个主键字段值出现重复是没有问题的,只要不是有多条记录的所有主键值完全一样,就不算重复。
联合主键一般用于在一个字段可能有重复的情况下,用另一个字段去保持其唯一性
比如有两个字段:name , phone
name 字段是可能重复的,而 phone 是唯一的
这时在创建数据表的时候可以在末尾加上:
PRIMARY KEY(name, phone)
表示用 name 与 phone 构成联合主键,复合主键以保持记录的唯一性
1、数据库的每张表只能有一个主键,不可能有多个主键。
2、所谓的一张表多个主键,我们称之为联合主键。
注:联合主键:就是用多个字段一起作为一张表的主键。
3、主键的主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。
https://blog.csdn.net/qq_34741578/article/details/89393578
7. 暂时hold住,搞定联合主键先。 |||||| 请设计一张表,创建联合唯一性,并通过添加数据验证联合唯一性的特性。(相关结果截图)
设立联合唯一的代码:
create table homework_q7(id int primary key auto_increment, _name varchar(8), tel int, address varchar(25), unique key(tel, address));
desc homework_q7;
设计tel和address联合唯一,tel即使一样也能存储
如果不设置联合唯一,tel一样就不能存储
insert into MyClass values 666;