stf61-MySQL数据库
前言
1)为什么学?
● 常见的笔试题
● 有利于更好的开展测试工作
2)学什么?
理论:基本的术语和概念
实操:数据库操作、表操作、数据操作、其他常见数据库功能
3)怎么学?
多在实训环境里练习,在练习中掌握
理论
数据库系统:
表:8条记录/行,6个字段/列
关系型数据库使用SQL语言来管理数据。
SQL:Structured Query Langage 结构化的查询语言。一门专门用来与数据库通信的语言。
主要包含了:DDL、DML、DQL、DCL
环境
MySQL+操作MySQL的工具DBeaver、navicat、sqlyog等
字号的缩放:ctrl +/-
数据库指令的执行:
操作
1 数据库常见操作
-- 1 查看当前连接下有哪些数据库
show databases;
-- 2 建数据库
格式:create database 数据库名 default character set utf8;
举例:
create database test1 default character set utf8;
注意事项:
(1)SQL里的所有标点符号(分号、括号、逗号、引号等)都必须是英文输入法下的输入;
(2)语句里的单词一定要拼写得完全正确;
(3)运行指令之前,一定要先选中你要执行得指令,明确你的执行目标;
(4)在Linux里数据库名区分大小写,关键字不区分大小写;
(5)SQL里的命名规则:由字母、数字、下划线所组成,且第一个字符不能是数字,不能是MySQL的关键字,不要取中文名。
-- 3 选择/切换数据库
格式:use 数据库名;
举例:
use test1;
-- 4 查看当前连接的是哪个数据库
select database();
-- 5 删除数据库
格式:drop database 数据库名;
举例:
drop database Test1;
2 表的常见操作
(1)简单的建表语法
格式:
create table 表名(
字段名1 数据类型1,
字段名2 数据类型2,
……
字段名n 数据类型n
);
举例:
注意事项:
1)简单的建表语法需要明确3个信息:表名、字段名、字段的数据类型
2)表名和字段名的命令要符合规则;
3)MySQL常见的数据类型:
整型 int
浮点型 float double decimal
字符型 char varchar text
——》char和varchar在定义的时候要指定最大的字符数,text不需要指定最大字符数
char和varchar区别:char是定长字符型,varchar是变长字符型
日期时间型 date time datetime
枚举型 enum
(2)约束
约束指的是限制规则。
建表通常伴随着约束,从而保障数据的完整性。
常见的约束有:
● 主键约束 primary key 可以唯一的区分记录的字段可以设置为主键约束。设置了主键约束的字段不可以不给值(null),也不可以给重复的值。
● 非空约束:not null 设置了该约束的字段不能为空(不能不给值)
● 唯一约束:unique 设置了该约束的字段不能给重复的值
● 默认值约束:default 默认值 设置了该约束的字段不给值时使用默认值
● 外键约束:foreign key 通常用在两表之间,反映的是字段之间的参照关系,稍后讲。
如果一个字段(sid)在一张表(student2)里做主键,然后这个字段它又出现在另外一张表里(ques),那么我们可以在另外一张表里(ques)将其设置为外键。一旦设置了外键,那么它的取值就会受到限制,它必须参照前面那张表(student2)的取值范围,否则报错。
举例1:针对前面4种约束
创建一张带约束的学生表:student2
create table student2( sid int primary key, sname varchar(10) not null, sheight float(3,2) default 1.68, semail varchar(50) unique, sbirth date ); 举例: insert into student2 values(1,'zs',1.72,'[email protected]','1992-1-1'); insert into student2 values(1,'ls',1.71,'[email protected]','1993-1-1'); insert into student2 values(null,'zs',1.72,'[email protected]','1992-1-1'); insert into student2(sid,sname) values(2,'ls'); |
举例2:外键约束
假如说,我想针对student2表里的学员,创建一张问题表ques来收集学员学习过程中的问题,
假如你希望当你往问题表ques插入或者更新数据的时候,系统不允许你插入或更新超出student2表范围的数据——》通过外键约束来实现。
create table ques( qid int primary key, sid int, content varchar(100), foreign key(sid) references student2(sid) );
insert into ques values(1,1,'xxxx'); -- 可以录入 由于student2表里只有编号为1和2的学员,所以编号为11的学员超出了范围,不允许录入: insert into ques values(2,11,'yyyy'); -- 不允许录入,违背了外键约束 |
(3)其他的常见表操作