初识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双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

MySQL错误代码2058和2059的解决办法

《MySQL错误代码2058和2059的解决办法》:本文主要介绍MySQL错误代码2058和2059的解决办法,2058和2059的错误码核心都是你用的客户端工具和mysql版本的密码插件不匹配,... 目录1. 前置理解2.报错现象3.解决办法(敲重点!!!)1. php前置理解2058和2059的错误

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们