MySQL复习:数据库和数据表管理

简介: MySQL复习:数据库和数据表管理

1 数据库管理


1.1 创建数据库


  • 在MySQL命令行工具中可以直接输入和执行SQL语句。可以使用CREATE DATABASE语句创建数据库,它的基本语法结构如下:


CREATE DATABASE  [IF NOT EXISTS] 数据库名


  • 如果使用IF NOT EXISTS关键字,则当指定的数据库名存在时,不创建数据库。如果不使用IF NOT EXISTS关键字,当创建的数据库名存在时,将产生错误。


  • 要创建数据库MySQLDB,可以使用下面的语句。


CREATE DATABASE IF NOT EXISTS MySQLDB;


1.2 删除数据库


  • DROP DATABASE语句的语法如下:


DROP DATABASE 数据库名


  • 可以在MySQL命令行工具中使用下面语句删除数据库MySQLDB:


DROP DATABASE MySQLDB;


2 数据表管理


2.1 表的概念


  • 表是数据库中最重要的逻辑对象,是存储数据的主要对象。在设计数据库结构时,很重要的工作就是设计表的结构。例如,在设计二手交易市场系统数据库时,可以包含公告信息表、商品分类表、二手商品信息表和用户信息表等,而用户信息表可以包含用户名、用户密码、用户类型等列。


  • 关系型数据库的表由行和列组成,其逻辑结构如图所示。


创建表


CREATE TABLE语句创建表,语法结构如下:


CREATE TABLE 表名(
字段名1 数据类型 [约束条件],
字段名2 数据类型 [约束条件],
…
[其他约束条件],
[其他约束条件]
)其他选项(例如存储引擎、字符集等选项)


3 数据类型


  • 要定义表的结构,需要设计表由哪些列组成,指定列的名称和数据类型。


  • MySQL的数据类型包括数值类型、日期和时间类型和字符串类型等。


3.1 数值类型


image.png


3.2 日期和时间类型


image.png


3.3 字符类型


image.png


3.4 MySQL特殊字符序列


image.png


4 约束


4.1 约束概述


  • 约束: Constraint,是定义在表上的一种强制规则。


  • 当为某个表定义约束后,对该表做的所有SQL操作都必须满足约束的规则要求,否则操作将失败。


4.2 约束类型


image.png


4.3 非空约束(NOT NULL)


  • 强制列不能为 NULL 值,约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。


CREATE TABLE Persons(
id INT NOT NULL,
p_name VARCHAR(20) NOT NULL,
deparment VARCHAR(20),
address VARCHAR(20),
telNum VARCHAR(20)
)


(img-RPc956dD-1655342495591)(https://cdn.nlark.com/yuque/0/2020/png/2861829/1604970231080-b42680ad-177f-40d1-a4a9-194671006533.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_13%2Ctext_TmV1ZWR1%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10)]


4.4 唯一约束(UNIQUE)


  • 唯一约束可以保证记录的唯一性,即就是同一个表中,相同字段的值不会出现重复。


  • 唯一约束的字段可以为空值(NULL)。


  • 每一张数据表可以存在多个唯一约束字段。


4.5 主键约束(PRIMARY KEY)


  • 数据库表要求表中的每一行记录都必须是唯一的,即在同一张表中不允许出现完全相同的两条记录。在设计数据库时,为了保证记录的“唯一性”,最为普遍、最为推荐的做法是为表定义一个主键(primary key)。数据库表中主键有以下两个特征:


  • 表的主键可以由一个字段构成,也可以由多个字段构成(这种情况称为复合主键)。


  • 数据库表中主键的值具有唯一性且不能取空值(NULL),当数据库表中的主键由多个字段构成时,每个字段的值不能取NULL值。


例:创建一个班级表(classes),包括班级编号(classes_id 主键),班级名称(classes_name),专业(classes_dept)


CREATE TABLE classes (classes_id INT PRIMARY KEY,classes_name VARCHAR(10),classes_dept varchar(10));


4.6 外键约束(FOREIGN KEY)


  • 班级实体和班主任实体之间为一对一关系,班级实体和学生实体之间为一对多关系,学生实体和课程实体之间为多对多关系。


  • 实体间的关系可以通过外键来表示。如果表A中的一个字段a对应于表B的主键b,则字段a称为表A的外键。此时存储在表A中字段a的值,同时这个字段值也是表B主键b的值。


例:创建一个教师表(teacher)关联上面创建的班级表(classes),教师表包括:教师编号(teacher_id 主键),教室姓名(teacher_name),关联班级(cid 外键)


CREATE TABLE teacher (teacher_id INT PRIMARY KEY ,teacher_name VARCHAR(10),cid INT , FOREIGN KEY(cid) REFERENCES classes(classes_id));


(img-Kpnhk1g0-1655342495592)(https://cdn.nlark.com/yuque/0/2020/png/2861829/1604970231073-b7a12036-df45-4f27-8d5c-c3f8378fc9fc.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_34%2Ctext_TmV1ZWR1%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10)]


练习


  1. 学校想做一个选课系统,其中涉及到课程表,学生表,请分别创建这两个表,自己思考表中应有的列及数据类型。


  1. 学校有一个选课系统,其中包括如下关系模式:


  • 系(系编号: 主键,系名称: 唯一键,系主任: 非空约束,系所在校去:默认为浑南区)


  • 班级(班级编号: 主键,班级名称: 唯一键,所属系: 外键)


  1. 创建学生表,包含如下属性:


  • 学号 定长字符型 10位 主键


  • 姓名 变长字符型 20位 非空


  • 性别 定长字符型 2位


  • 出生日期 日期型


  • 所在班级


5 复制表


复制一个表结构的实现方法有两种。


  • 方法一:在CREATE TABLE语句的末尾添加LIKE子句,可以将源表的表结构复制到新表中,语法格式如下。


CREATE TABLE 新表名  LIKE 源表


  • 方法二、在CREATE TABLE 语句的末尾添加一个SELECT语句,可以实现表结构的复制,甚至可以将源表的表记录拷贝到新表中。下面的语法格式将源表的表结构以及源表的所有记录拷贝到新表中。


CREATE TABLE 新表名 SELECT - FROM 源表


练习


  1. 通过子查询的方式创建一个表dept10,该表保存10号部门的员工数据。


6 删除表


  • 使用DROP TABLE语句删除表,语法如下:


DROP TABLE 表名


7 表的重命名


  • 修改表名的语法格式较为简单,语法格式如下


RENAME TABLE 旧表名 TO 新表名


  • 该命令等效于:ALTER TABLE 旧表名 RENAME 新表名


ALTER TABLE person RENAME human;


8 本章小结


  • 掌握数据库的创建和删除管理


  • 了解mysq的约束和数据类型


  • 掌握表结构的创建、删除


9 课后作业


  1. 创建与dept表相同表结构的表dtest,将dept表中部门编号在40之前的信息插入该表。


  1. 创建与emp表结构相同的表empl,并将其部门编号为前30号的员工信息复制到empl表。
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1937 152
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
1067 2
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
730 158
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
1330 156
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
861 156

热门文章

最新文章

推荐镜像

更多