头歌 MySQL-初识MySQL

第1关:创建数据库
任务描述

本关任务:创建数据库。

相关知识

安装MySQL数据库是学习MySQL的第一步,如果你还没有在本机上安装MySQL数据库,可以查看背景知识的MySQL安装步骤。

数据库其实就是可以存放大量数据的仓库,学习数据库我们就从创建一个数据库开始吧。

为了完成本关任务,你需要掌握: 1.如何连接数据库; 2.如何创建数据库。

连接数据库

在操作数据库之前,需要连接它,输入命令:mysql -u用户名 -p密码

在你自己本机上连接数据库用上述方式是可以的,不过在平台上连接数据库 还需要加上一句-h127.0.0.1

如下:

创建数据库

连接上MySQL之后就可以进行数据库的操作了,接下来我们创建一个名为TestDb的数据库:

创建完数据库之后我们可以通过show databases;命令查看MySQL中已存在的数据库。

编程要求

在右侧命令行中连接MySQL,并创建一个名为mydb的数据库。

连接数据库的用户名为:root,密码为:123123

请注意:数据库名区分大小写。


开始你的任务吧,祝你成功!

答案:

复制代码
mysql -uroot -p123123 -h127.0.0.1
create database mydb;
第2关:创建表
任务描述

本关任务:在数据库中创建一个表。

相关知识

我们知道数据库就是存储数据的地方,那数据库中的数据到底存放在哪里呢?数据库中的数据是存放在一张一张的 中的。 你可以想象数据库就像一个文件夹,而 你可以理解为一个excel表格,其实他们本来就挺像。

那要完成本关任务,你需要掌握:如何在指定数据库中创建表。

如何在指定数据库中创建表

我们先来了解一下在数据库中创建表的规则:

  1. CREATE TABLE 表名
  2. (
  3. 字段名,数据类型,
  4. 字段名,数据类型,
  5. .....
  6. )

例如:

添加了数据(向表中插入数据之后的章节会提到)的表格,示例如下:

是不是很像excel表格呢?现在你确实可以这样理解哦。

接下来我们通过一个例子来了解如何在指定数据库中创建表:

t_user 表结构如下:

字段名称

数据类型

备注

id

INT

用户ID

username

VARCHAR(32)

用户名

password

VARCHAR(32)

密码

phone

VARCHAR(11)

手机号码

首先创建数据库 (在MySQL数据库中是不区分大小写的不过数据库的名字是区分大小写的),如下:

  1. CREATE DATABASE MyDb;

然后选择数据库:

  1. USE MyDb;

最后创建t_user表:

  1. CREATE TABLE t_user
  2. (
  3. id INT,
  4. username VARCHAR(32),
  5. password VARCHAR(32),
  6. phone VARCHAR(11)
  7. );

如图:

表创建好之后可以使用如下语句查看表的基本结构,用来验证是否创建成功是再好不过啦。

语法如下:

  1. DESCRIBE 表名;

简写:

  1. DESC 表名;

例如:

编程要求

在右侧命令行中操作,创建数据库TestDb,在TestDb下创建表t_emp,表结构如下:

字段名称

数据类型

备注

id

INT

员工编号

name

VARCHAR(32)

员工名称

deptId

INT

所在部门标号

salary

FLOAT

工资

测试说明

操作完之后点击评测,我会对你的创建的数据库和表进行测试,如果数据库和表都创建成功,我会输出如下结果,否则会显示报错信息。

预期输出:

提示:如果右侧命令行无响应,是因为云端三十分钟会自动关闭容器,重新刷新页面即可解决问题,刷新之后环境会重置,所以你还需要重新创建数据库和表。


开始你的任务吧,祝你成功!

答案:

复制代码
mysql -uroot -p123123 -h127.0.0.1
create database TestDb;
use TestDb;
create table t_emp(
id int,
name varchar(32),
deptId int,
salary float
);
第3关:使用主键约束
任务描述

本关任务:创建表并且添加主键约束。

相关知识

主键,是表中一列或者多列的组合,主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空,主键能够唯一的标识表中的每一条记录,可以结合外键来定义与不同数据表之间的关系。 怎么理解主键呢?我们知道数据库中的表可以存放很多数据,如果把表中的每一个数据比作一个人的话,那么表的主键 就可以看做是人的身份证

为了完成本关任务,你需要掌握:怎么给表中的字段添加主键约束。

添加主键约束

有两种方式可以添加主键约束: 1.在定义列的同时指定主键; 2.在定义完字段之后再指定主键。

(1) 在定义列的同时指定主键:

(2) 在定义完所有列之后指定主键。

多字段联合主键

在开发中还有一种情况很常见,就是将几个字段联合在一起作为主键,那这个在代码中怎么实现呢? 举个例子,我们将员工的名字和部门ID联合起来作为主键:

  1. CREATE TABLE t_emp2
  2. (
  3. name VARCHAR(32),
  4. deptId INT,
  5. salary FLOAT,
  6. PRIMARY KEY(name,deptId)
  7. )

语句执行后,会将namedeptId字段组合成为表t_emp2的多字段组合主键。

编程要求

在数据库MyDb中,创建两张表t_user1t_user2,表结构如下,请为两张表分别创建主键约束,t_user1的主键为userId,t_user2的主键为联合主键,将字段namephone作为t_user2的联合主键。

表t_user1

字段名

数据类型

备注

userId

INT

用户ID

name

VARCHAR(32)

用户名

password

VARCHAR(11)

密码

phone

VARCHAR(11)

电话号码

email

VARCHAR(32)

邮箱

表t_user2

字段名

数据类型

备注

name

VARCHAR(32)

用户名

phone

VARCHAR(11)

电话号码

email

VARCHAR(32)

邮箱

测试说明

提示:输入 drop table 表名可以删除表。


开始你的任务吧,祝你成功!

答案:

复制代码
mysql -uroot -p123123 -h127.0.0.1
create database MyDb;
use MyDb;
create table t_user1(
userId int primary key,
name varchar(32),
password varchar(11),
phone varchar(11),
email varchar(32)
);

create table t_user2(
name varchar(32),
phone varchar(11),
email varchar(32),
primary key(name,phone)
);
第4关:外键约束
任务描述

本关任务:给表添加外部关键字。

相关知识

为了完成本关任务,你需要掌握: 1.什么是外部关键字; 2.怎么给表添加外部关键字。

外部关键字

在以后我们统一将外部关键字叫做外键 ,外键就是另一张表中的主键

**问:**外键有啥用啊? **答:**外键的主要作用就是保持数据的一致性,完整性。

**再问:**怎么保证的呢? **答:**看图。

如图有两张表,classIdT_Student的外键,是T_class 表的主键, 如果我们要删除T_class 表中classId1的字段,程序是会报错 的,因为t_student表中有数据和classId1的字段关联了,是不能删除的,这样子就保证了数据的一致性和完整性

**继续问:**那怎么才能删除呢? **接着答:**需要先删除T__student表中classId1的两个字段。

如何给表添加外部关键字

MySQL中给表中字段添加外键约束的语法规则如下:

  1. CONSTRAINT 外键名 FOREIGN KEY 字段名 REFERENCES 主表名(主键名)

举个例子:现在有两张表,t_empt_dept如下。

t_dept表

字段名称

数据类型

备注

deptId

INT

部门编号

name

VARCHAR(22)

部门名称

location

VARCHAR(50)

部门位置

t_emp表

字段名称

数据类型

备注

id

INT

员工编号

name

VARCHAR(22)

员工姓名

deptId

INT

部门ID(外键类型必须和对应主键类型一直)

我们来创建两张表,并给员工表(t_emp)添加外键:

  1. CREATE TABLE t_dept

  2. (

  3. deptId INT PRIMARY KEY,

  4. name VARCHAR(22),

  5. location VARCHAR(50)

  6. );

  7. CREATE TABLE t_emp

  8. (

  9. id INT PRIMARY KEY,

  10. name VARCHAR(22),

  11. deptId INT,

  12. CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES t_dept(deptId)

  13. );

实际操作如图:

编程要求

创建两张表如下,给t_student表添加外键约束,外键为classId,外键名称为fk_stu_class1

表t_class

字段名称

数据类型

备注

id

INT

班级Id,主键

name

VARCHAR(22)

班级名称

表t_student

字段名称

数据类型

备注

id

INT

学号,主键

name

VARCHAR(22)

学生姓名

classId

INT

班级ID,外键

在创建表之前你需要先创建数据库:MyDb,并且将两张表创建在MyDb数据库中。

测试说明

预期输出:


开始你的任务吧,祝你成功!

答案:

复制代码
mysql -uroot -p123123 -h127.0.0.1
create database MyDb;
use MyDb;
create table reate table t_class(
id int primary key,
name varchar(22)
);
 
create table t_student(
id int primary key,
name varchar(22),
classId int,
constraint fk_stu_class1 foregin key(classId) references t_class(id)
);
第5关:添加常用约束
任务描述

本关任务:给表添加常用的约束。

相关知识

在数据库的使用过程中我们经常要限制字段的取值,比如有些字我们不能让它为空,我们就需要添加非空约束,本关我们就来学习如何添加这些常用的约束。

为了完成本关任务,你需要掌握: 1.怎么添加唯一约束; 2.怎么添加非空约束; 3.怎么添加默认约束; 4.怎么设置字段的值自动增加。

怎么添加唯一约束

唯一约束(Unique Constraint)要求该列唯一,允许为空,但是只能有一个空值。唯一约束可以确保一列或者几列不出现重复值。

定义部门表的部门名称唯一,SQL语句如下:关键词 UNIQUE

  1. CREATE TABLE t_dept(
  2. id INT PRIMARY KEY,
  3. name VARCHAR(22) UNIQUE,
  4. location VARCHAR(50)
  5. )
怎么添加非空约束

关键词:NOT NULL

例如:

  1. CREATE TABLE t_dept(
  2. id INT PRIMARY KEY,
  3. name VARCHAR(22) NOT NULL,
  4. location VARCHAR(50)
  5. )
怎么使用默认约束

默认约束:即给字段一个默认值。 关键词:DEFAULT

例如:

  1. CREATE TABLE t_emp(
  2. id INT PRIMARY KEY,
  3. name VARCHAR(22),
  4. sex VARCHAR(2) DEFAULT '男'
  5. ) DEFAULT CHARSET=utf8;

注意:

  • 如果是添加字符串型默认值要使用单引号,如果是整型则不需要加任何符号;
  • 如果要添加的是中文默认值,则需要加上DEFAULT CHARSET=utf8;使用英文字符则不需要。
设置表的属性值自动增加

在数据库应用中,经常有个需求就是,在每次插入新纪录时,系统自动生成字段的主键值,即:

id

name

1

张三

2

李四

ID每次自动加一

姓名

...

XXX

10

XXX

关键词:AUTO_INCREMENT,默认情况下初始值和增量都为1

例如:

  1. CREATE TABLE t_tmp
  2. (
  3. id int PRIMARY KEY AUTO_INCREMENT,
  4. name VARCHAR(32)
  5. )

以上这些你都可以在右侧的命令行中测试。

编程要求

在数据库MyDb中创建表t_user,表结构如下:

字段名称

数据类型

备注

id

INT

用户ID,主键,自动增长

username

varchar(32)

用户名,非空,唯一

sex

varchar(4)

性别,默认"男"

提示:若要给字段添加两个或者两个以上的约束,约束之间以空格隔开即可。

测试说明

我会对你创建的表进行测试。

预期输出:

提示:如果你想删掉表重新创建,你可以使用如下语句删除表。

  1. DROP TABLE 表名;

开始你的任务吧,祝你成功!

答案:

复制代码
mysql -uroot -p123123 -h127.0.0.1
create database MyDb;
use MyDb;
create table t_user(
id int primary key auto_increment,
username varchar(32) not null unique,
sex varchar(4) default '男'
)default charset = utf8;
相关推荐
陈卓41019 分钟前
MySQL-主从复制&分库分表
android·mysql·adb
IT项目管理1 小时前
达梦数据库DMHS介绍及安装部署
linux·数据库
你都会上树?1 小时前
MySQL MVCC 详解
数据库·mysql
大春儿的试验田1 小时前
高并发收藏功能设计:Redis异步同步与定时补偿机制详解
java·数据库·redis·学习·缓存
Ein hübscher Kerl.2 小时前
虚拟机上安装 MariaDB 及依赖包
数据库·mariadb
长征coder2 小时前
AWS MySQL 读写分离配置指南
mysql·云计算·aws
醇醛酸醚酮酯2 小时前
Qt项目锻炼——TODO清单(二)
开发语言·数据库·qt
ladymorgana2 小时前
【docker】修改 MySQL 密码后 Navicat 仍能用原密码连接
mysql·adb·docker
PanZonghui2 小时前
Centos项目部署之安装数据库MySQL8
linux·后端·mysql
GreatSQL社区3 小时前
用systemd管理GreatSQL服务详解
数据库·mysql·greatsql