初识MySQL(中篇)

2024-04-04 23:52
文章标签 mysql 初识 database 中篇

本文主要是介绍初识MySQL(中篇),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用语言 MySQL

使用工具 Navicat Premium 16

代码能力快速提升小方法,看完代码自己敲一遍,十分有用

目录

1.SQL语言

1.1 SQL语言组成部分

2.MySQL数据类型 

2.1 数值类型 

2.2 字符串类型 

 2.3 日期类型 

3.创建数据表 

3.1 创建数据表方法1

3.2 创建数据表方法2

3.2.1 语法

3.2.2 简述 

3.3 字段的约束和属性

3.3.1 MySQL中常用的字段约束或属性

3.3.2 单字段主键 

3.3.3 多字段联合主键 

3.3.4 约束贯穿总结示例 

4. 注释


1.SQL语言

SQL(结构化查询语言)用于数据库的查询和操作,在MySQL中同样使用SQL实现数据的查询与操作。SQL语言有自己的国家标准,各数据库管理系统使用的SQL都是基于这个标准开发的,但彼此之间又有一定的不同。 

1.1 SQL语言组成部分

  • DDL(数据定义语言):用于创建或删除数据库对象,如create、drop、alter等语句
  • DML(数据操作语言):用于插入、修改和删除表中的数据,如insert、update、delete语句
  • DQL(数据查询语言):用于数据查询,指select语句
  • DCL(数据控制语言):用于控制数据库组件的存取许可,存取权限等,如grant、revoke等 

2.MySQL数据类型 

2.1 数值类型 

数据类型字节数存储大小
tinyint[(M)]1字节有符号:    (-128,127)
无符号:    (0,255)
smallint[(M)]2字节有符号:    (-32 768,32 767)
无符号:    (0,65 535)
mediumint[(M)]3字节有符号:    (-8 388 608,8 388 607)
无符号:    (0,16 777 215)
int[(M)]或INTEGER[(M)]4字节有符号:    (-2 147 483 648,2 147 483 647)
无符号:    (0,4 294 967 295)
BIGINT[(M)]8字节有符号:(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)
无符号:(0,18 446 744 073 709 551 615)
float[(M,D)]4字节有符号:(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)
无符号:(0,18 446 744 073 709 551 615)
double[(M,D)]8字节有符号:(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
无符号:0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
decimal[(M,D)]M+2字节M:最大精度位数即总位数,M的取值范围是1~65,默认值为10
D:小数位精度位数,D的取值范围是0~30
该类型可能的取值范围与double相同,但有效值访问由M、D决定。例如,类型为decimal(5,2)的字段取值范围是-999.99~999.99

 

M代表需要显示的数字的位数,即数据的显示宽度。该值的大小并不会对数据类型所能承载的值范围产生影响。若数据位数大于显示宽度,只要不超过该类型取值范围,则会以实际位数表示;反之,若数据位数小于指定宽度(就是有小数位但是没有值),则用空格补充。如果不指定显示宽度,系统会为每种类型指定默认的宽度值。例如,int类型的默认宽度值为11。若需要以0填充不足的位置,则可在类型后添加zerofill属性。 

  • tinyint、smallint、mediumint、int、bigint、integer都是整数类型,不同的类型所占的字节数不同,因此取值范围不同。在向表中插入整数类型数据时,若超出该类型的取值范围,则插入的值被阶段并显示警告信息。
  • float和double是浮点型数据,decimal被称为定数类型,它们都可以存储含小数位的数据。float和double存储的是近似值。当对数据的精度要求非常高,如用来存储货币数据时,可以选择decimal类型,它的精度比double类型高。
  • 所有数值类型都包含有符号数和无符号数两类,默认为有符号数,即值可以为负数。如果要确定字段的值一定是一个非负数,可在类型后添加unsigned属性。
  • 若某个字段指定了zerofill属性,则MySQL会自动为该字段添加unsigned属性。

2.2 字符串类型 

CHAR[(M)]M字节固定长度字符串
M为0~255的整数
VARCHAR[(M)]可变长度可变长度字符串
M为0~65535的整数
TINYTEXT0~255微型文本
TEXT0~65535文本

char类型适合存储少量字符串。varchar类型长度是可变的,当字符串的长度检查变化时,为节约空间,可设置为varchar类型,其长度范围是0~65535。tinytext和text类型通常用来存储文章内容等纯文本信息。 

 2.3 日期类型 

datayyyy-MM-dd1000-01-01~9999-12-32
datetimeyy-MM-dd hh:mm:ss1000-01-01 00:00:00~9999-12-31 23:59:59
timehh:mm:ss-838:59:59~838:59:59
timestampYYYYMMDDhhmmss
这个可以跨国际,它会自动换算
1970年某时刻~2038年某时刻,精度为1秒
yearYYYY格式的年份1901~2155
  • 根据具体的业务场景选择适当的日期类型。MySQL运行"不严格"语法:任何标点符号都可以作为日期部分的间隔符。例如,若某个字段为date类型则20-07-08 20@07-08等均可被成功插入数据表中。
  • 如果要设置某字段默认值为系统当前时间,可指定字段类型为timestamp,当该字段未插入数据时,默认为当前时间。 

3.创建数据表 

3.1 创建数据表方法1

直接在数据库中的表直接右键新建表 

3.2 创建数据表方法2

3.2.1 语法

create table [if not exists] 表名(
字段1 数据类型 [字段属性 | 约束] [索引] [字段备注],
...
字段n 数据类型 [字段属性 | 约束] [索引] [字段备注],
)[表类型] [表字符集] [表备注]; 

3.2.2 简述 

  • 表中的字段也被称为列(竖)。
  • 在使用create table语句创建时,字段之间使用逗号分隔,最后一个字段不用;
  • 当SQL语句中出现的数据库名、表名或字段名等与保留字冲突时,可以使用撇号(`)括起来避免冲突。MySQL自动生成的代码,所有表名或字段名都会使用撇号括起来。 

if not exists是表示如果有该表就创建,没有就不创建 

3.3 字段的约束和属性

数据的完整性指数据的准确性和一致性。例如,病人的编号必须是唯一的,密码不能为空,只能到本医院存在的科室看病等。数据的完整性非常重要,他决定了数据库能否真实地反映项目的实际业务。因此,数据的完整性对数据库开发非常重要。 

3.3.1 MySQL中常用的字段约束或属性

主键约束primary key(pk)设置该字段为表的主键,同时保证字段的唯一性和非空。例如,病人编号能唯一确定一名病人,可设置为主键。
外键约束foreign key(fk)
  • 用于在两表之间建立关系,需要指定引用主表的哪一字段。在插入或更新表中的数据时,数据库将自动检查更新的字段值是否符合约束的限制。若不符合约束要求,则更新操作失败。使用时注意:
  • InnoDB支持外键,MyISAM不支持,外键关联的表要求都是InnoDB类型的表
  • 表中作为外键的字段要求在主表中时主键(单字段主键)
自动增长auto_increment1.设置该列的自增字段,默认每条自增1
2.通常用于设置主键,且为整数类型
3.可设置初始值和步长
非空约束not null保证字段的值不能为空,如病人的姓名字段不允许为空
默认约束default保证字段中总会有值,即使没有插入值,也有默认值。例如,病人表中的地址信息,若未填写,则默认"地址不详"
唯一约束unique key(uk)设置字段的值是唯一的。允许为空,但只能有一个空值,如病人的身份证号。

主键约束是非常重要的约束。当需要使用数据表中的某个字段或某几个字段来标识偶有记录是,需要将该字段设置为表的主键。主键可以是单字段的,也可以是多字段的。 

3.3.2 单字段主键 

创建方法1

create table [if not exists] 表名(
字段1 数据类型 primary key,
...
);

创建方法2
create table [if not exists] 表名(
字段1 数据类型 ,
...
[constraint<约束名>] primary key(列名)
); 

3.3.3 多字段联合主键 

create table [if not exists] 表名(
...
[constraint<约束名>] primary key(字段1,字段2,...)
); 

3.3.4 约束贯穿总结示例 

 

4. 注释

MySQL支持注释,注释的方法由单行注释和多行注释两种:

  • 单行注释:#.....
  • 多行注释:/*.....*/

这篇关于初识MySQL(中篇)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/877138

相关文章

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

mysql中insert into的基本用法和一些示例

《mysql中insertinto的基本用法和一些示例》INSERTINTO用于向MySQL表插入新行,支持单行/多行及部分列插入,下面给大家介绍mysql中insertinto的基本用法和一些示例... 目录基本语法插入单行数据插入多行数据插入部分列的数据插入默认值注意事项在mysql中,INSERT I

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

MySQL 衍生表(Derived Tables)的使用

《MySQL衍生表(DerivedTables)的使用》本文主要介绍了MySQL衍生表(DerivedTables)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学... 目录一、衍生表简介1.1 衍生表基本用法1.2 自定义列名1.3 衍生表的局限在SQL的查询语句select

MySQL 横向衍生表(Lateral Derived Tables)的实现

《MySQL横向衍生表(LateralDerivedTables)的实现》横向衍生表适用于在需要通过子查询获取中间结果集的场景,相对于普通衍生表,横向衍生表可以引用在其之前出现过的表名,本文就来... 目录一、横向衍生表用法示例1.1 用法示例1.2 使用建议前面我们介绍过mysql中的衍生表(From子句