首页 > 数据库 >【数据库】数据库的基本概念 MySQL数据定义语言DDL

【数据库】数据库的基本概念 MySQL数据定义语言DDL

时间:2024-10-28 11:48:46浏览次数:8  
标签:数据库 定义语言 数据表 MySQL 类型 TABLE NULL

文章目录

基本概念

数据库

(Database 简称 DB):是以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。

作用:保存、管理数据

类别:

关系型数据库(SQL)

  • postgreSQL达梦MySQL(PHP)、Oracle(Java)、Microsoft SQL Server(c++ .NET)、Microsoft Access、SQLite、DB2

非关系型数据库(NOSQL)

  • Redis(移动端)、MongoDB

数据库管理系统

(Database Management System 简称 DBMS):数据管理软件,科学组织和存储数据、高效地获取和维护数据。

数据库管理系统是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML;或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。

在这里插入图片描述

MySQL

是现流行的开源、免费的关系型数据库

  • 免费、开源数据库
  • 小巧、功能齐全
  • 使用便捷
  • 可运行于 Windows 或 Linux 操作系统
  • 可适用于中小型甚至大型网站应用

MySQL 的运行机制

在这里插入图片描述

结构化查询语句分类

名称解释命令
DDL(Data Definition Language)数据定义语言定义和管理数据对象,如数据库,数据表等CREATE、DROP、ALTER
DML(Data Manipulation Language)数据操作语言用于操作数据库对象中所包含的数据INSERT、UPDATE、DELETE
DQL(Data Query Language)数据查询语言用于查询数据库数据SELECT
DCL(Data Control Language)数据控制语言用来管理数据库的语言,包括管理权限及数据更改GRANT、COMMIT、ROLLBACK

数据定义 DDL

操作数据库

# 创建数据库
CREATE DATABASE [IF NOT  EXISTS] 数据库名;

# 删除数据库
DROP DATABASE [IF EXISTS] 数据库名; 

# 查看数据库
SHOW DATABASES;

# 切换数据库
USE 数据库名;

操作数据表

查看数据表

# 显示表结构  
desc 表名
describe 表名;
# 显示表创建语句
show create table 表名

创建数据表

 CREATE TABLE [IF NOT EXISTS] `表名`   (
     `字段名1`   列类型 [ 属性 ]  [ 索引 ] [注释] ,
     `字段名2`   列类型 [ 属性 ]  [ 索引 ] [注释] , 
     ......
     `字段名n`   列类型 [ 属性 ]  [ 索引 ] [注释] 
 )  [ 表类型 ] [ 表字符集 ] [注释];

反引号用于区别MySQL保留字与普通字符

列类型

规定数据库中该列存放的数据类型

  • 数值类型
  • 字符串类型
  • 日期和时间型数值类型
  • NULL值

在数据库中,NULL 是一个特殊的值,表示缺失或未知的数据。NULL 与空字符串('')或零(0)不同,它表示该字段没有被赋予任何值。

特点

1. 未知数据NULL 表示该字段的值是未知的。例如,如果某个学生的出生日期未知,那么 BirthDate 字段可以设置为 NULL

不等于任何值NULL 不等于任何值,包括 NULL 本身。因此,不能使用 =!= 来比较 NULL。例如,SELECT * FROM student WHERE BirthDate = NULL; 这样的查询不会返回任何结果。

2. 特殊处理:在 SQL 中,需要使用 IS NULL % IS NOT NULL 来检查字段是否为 NULL,例:

SELECT * FROM student WHERE BirthDate IS NULL;

3. 影响聚合函数:聚合函数(如 SUM AVG COUNT 等)通常会忽略 NULL 值。

SELECT AVG(Score) FROM student; -- 如果 Score 列中有 NULL 值,它们会被忽略

4. 默认值:在创建表时,可以指定列的默认值为 NULL或其他值。

CREATE TABLE student (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    birthdate DATE DEFAULT NULL
);

注意事项

数据完整性NULL 可能会影响数据的完整性和一致性。使用 NOT NULL 约束强制某些字段必须有值。

查询和逻辑:在编写查询,特别是在进行条件判断时,需要注意 NULL 的存在。

-- 正确的方式
SELECT * FROM student WHERE birthdate IS NULL OR birthdate < '1990-01-01';
-- 错误的方式
SELECT * FROM student WHERE birthdate = NULL OR birthdate < '1990-01-01';
数值类型说明取值范围存储需求
tinyint非常小的数据有符值: -2^7 ~ 2^7-1
无符号值:0 ~ 2^8-1
1字节
smallint较小的数据有符值: -2^15 ~ 2^15-1
无符号值: 0 ~ 2^16-1
2字节
mediumint中等大小的数据有符值: -2^23 ~ 2^23-1
无符号值: 0 ~ 2^24-1
3字节
int标准整数有符值: -2^31 ~ 2^31-1
无符号值:0 ~ 2^32-1
4字节
bigint较大的整数有符值: -2^63 ~2^63-1
无符号值:0 ~2^64-1
8字节
float单精度浮点数± 1.1754351e - 384字节
double双精度浮点数± 2.2250738585072014e - 3088字节
decimal字符串形式的浮点数decimal(m, d)m个字节
字符串类型说明最大长度
char[(M)]固定长字符串,检索快但费空间 0 <= M <= 255M字符
varchar[(M)]可变字符串 0 <= M <= 65535变长度
tinytext微型文本串2^8–1字节
text文本串2^16–1字节
日期和时间型数值类型说明取值范围
DATEYYYY-MM-DD,日期格式1000-01-01 ~ 9999-12-31
TIMEHh:mm:ss ,时间格式-838:59:59~838:59:59
DATETIMEYY-MM-DD hh:mm:ss1000-01-01 00:00:00 至 9999-12-31 23:59:59
TIMESTAMPYYYYMMDDhhmmss格式表示的时间戳197010101000000 ~ 2037年的某个时刻
YEARYYYY格式的年份值1901~2155
字段属性说明补充
UNSIGNED无符号的声明该数据列不允许负数
ZEROFILL0填充的不足位数的用0来填充,如 int(3),5则为 005
AUTO_INCREMENT自动增长的,每添加一条数据,自动在上一个记录数上加1通常用于设置主键,且为整数类型 可定义起始值和步长
NULL&NOT NULL默认为NULL,即没有插入该列的数值如果设置为NOT NULL,则该列必须有值
DEFAULT默认的用于设置默认值
例如,性别字段,默认为“男”,否则为“女”;若无指定则默认为“男”
CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) UNSIGNED COMMENT '编码号'
) COMMENT='测试表';

在数据库中创建一个名为 test 的表(如果该表不存在的话),并且有一个无符号整数类型的字段 id,以及对表和字段的注释。

数据表类型

MySQL 的数据表的类型

MyISAM、InnoDB 、HEAP、BOB、CSV等

名称MyISAMInnoDB
事务处理×
数据行锁定×
外键约束×
全文索引×
表空间大小较小较大,约2倍

使用 MyISAM:节约空间及相应速度

使用 InnoDB:安全性,事务处理及多用户操作数据表

使用语句新建 subject 表,设置数据表为 MyISAM 类型。具体设计如下:

在这里插入图片描述

USE myschool;
CREATE TABLE `subject` (
  `SubjectNo` INT(11) NOT NULL COMMENT '课程编号',
  `SubjectName` VARCHAR(50) NULL COMMENT '课程名称',
  `ClassHour` INT(4) NULL COMMENT '学时',
  `GradeID` INT(4) NULL COMMENT '年级编号'
) ENGINE = MyISAM DEFAULT CHARSET = utf8

MySQL 数据表以文件方式存放在磁盘中

包括表文件、数据文件以及数据库的选项文件

位置:MySQL安装目录\data下存放数据表。目录名对应数据库名,该目录下文件名对应数据表

例如我5.7版本的位置是 C:\ProgramData\MySQL\MySQL Server 5.7\Data\myschool\data

在这里插入图片描述

InnoDB类型数据表只有一个*.frm文件,数据文件为上一级目录的 ibdata1 文件

MyISAM类型数据表对应三个文件:

*.frm – 表结构定义文件

*.MYD – 数据文件

*.MYI – 索引文件

修改数据表

# 修改表(ALTER TABLE)
# 修改表名
ALTER TABLE 旧表名 RENAME AS 新表名
# 添加字段
ALTER TABLE 表名 ADD 字段名 列类型[属性]   

# 修改字段
ALTER TABLE 表名 MODIFY 字段名 列类型[属性]   
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列类型[属性]

# 删除字段
ALTER TABLE 表名 DROP 字段名

删除数据表

DROP TABLE [IF EXISTS] 表名
  • IF EXISTS 为可选,判断是否存在该数据表

  • 如删除不存在的数据表会抛出错误

标签:数据库,定义语言,数据表,MySQL,类型,TABLE,NULL
From: https://blog.csdn.net/m0_66584716/article/details/143207701

相关文章

  • pg系数据库经典报错,no pg_hba.conf entry for host “x.x.x.x“, user “xxx“, datab
            上一篇文档述说了pg的一个经典报错“currenttransactionisaborted,commandsignoreduntilendoftransactionblock”【经典报错1】,这次再来述说一个pg系数据的经典报错。        pg系数据库指的是postgre、greenplum、国产数据中的kingbase、g......
  • 基于案例分析 MySQL 权限认证中的具体优先原则
    在MySQL的日常管理过程中,大家或多或少会遇到权限认证相关的问题。例如,本来能够正常执行的操作,可能在新增一个账号或授权后就突然失败了。这种现象往往让人误以为是bug,但很多时候,其实并不是。下面,将通过两个案例来阐明MySQL权限认证中的具体优先原则,并在此基础上,分析以下问......
  • MySQL:临时表学习
    前言在MySQL中,临时表(TemporaryTable)是一种非常有用的工具,可以帮助我们在执行复杂查询时存储临时数据。临时表的存在时间仅限于会话期,当会话结束后,临时表自动销毁。【数据库会话指的是用户连接到数据库并执行命令的整个时间段。一个会话从用户连接到数据库开始,直到用户......
  • 有关MySQL连接问题
    首先要准备MySQL、jdbc,如果项目使用Maven可以直接添加依赖在pom.xml文件中,使用jdbc需要将jar包放到Tomcat和项目的lib目录下,并且需要再项目结构依赖中添加该依赖,也可以直接在pom.xml文件中mysqlmysql-connector-java8.0.26使用此代码添加依赖同时在connection时URL的端口......
  • GaussDB数据库SQL系列-自定义函数
    一、前言华为云GaussDB数据库是一款高性能、高安全性的云原生数据库,在GaussDB中,自定义函数是一个不容忽视的重要功能。本文将简单介绍一下自定义函数在GaussDB中的使用场景、使用优缺点、示例及示例解析等,为读者提供指导与帮助。二、自定义函数(Function)概述在SQL中,自定义函数(Fu......
  • Navicat连接数据库,报错信息:1045 -Access denied for user 'root'@'localhost'(using p
    错误解析错误信息:无法通过Navicat连接MySQL数据库。原因:MySQL服务未启动。解决方法检查MySQL服务状态打开“服务”管理器(可以在Windows中通过搜索“服务”来找到)。查找MySQL相关的服务,通常名称为MySQL或带有版本号的名称(如MySQL507)。启动MySQL服务如果发现MySQL......
  • java+SSM+mysql缴税管理系统70555-计算机毕设 原创毕设选题推荐(免费领源码)
    摘 要随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达,缴税管理系统的信息通过网络进行信息管理掀起了热潮,所以针对管理的用户需求......
  • (赠源码)基于python+HTML5+flask+mysql技术的酒店在线系统的设计与实现89223-计算机毕业
    目录1绪论1.1课题背景及意义1.1.1课题背景1.1.2课题意义1.2 研究现状1.2.1国外研究现状1.2.2 国内研究现状2 开发工具和开发平台2.1关键性知识及技术简介2.1.1HTML5介绍2.1.2 Flask框架概述2.2Python简介2.3 开发环境及工具3系统分......
  • 基于Springboot+Vue的候鸟监测数据管理系统 (含源码数据库)
    1.开发环境开发系统:Windows10/11架构模式:MVC/前后端分离JDK版本:JavaJDK1.8开发工具:IDEA数据库版本:mysql5.7或8.0数据库可视化工具:navicat服务器:SpringBoot自带apachetomcat主要技术:Java,Springboot,mybatis,mysql,vue2.视频演示地址3.功能这个系......
  • 基于Springboot+Vue的企业绩效考核管理系统 (含源码数据库)
    1.开发环境开发系统:Windows10/11架构模式:MVC/前后端分离JDK版本:JavaJDK1.8开发工具:IDEA数据库版本:mysql5.7或8.0数据库可视化工具:navicat服务器:SpringBoot自带apachetomcat主要技术:Java,Springboot,mybatis,mysql,vue2.视频演示地址3.功能该系统......