初识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 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

mysql重置root密码的完整步骤(适用于5.7和8.0)

《mysql重置root密码的完整步骤(适用于5.7和8.0)》:本文主要介绍mysql重置root密码的完整步骤,文中描述了如何停止MySQL服务、以管理员身份打开命令行、替换配置文件路径、修改... 目录第一步:先停止mysql服务,一定要停止!方式一:通过命令行关闭mysql服务方式二:通过服务项关闭

SQL Server数据库磁盘满了的解决办法

《SQLServer数据库磁盘满了的解决办法》系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了,一查日志发现说是数据库磁盘满了,所以本文记录了SQLServer数据库磁盘满了的解... 目录问题解决方法删除数据库日志设置数据库日志大小问题今http://www.chinasem.cn天发

mysql主从及遇到的问题解决

《mysql主从及遇到的问题解决》本文详细介绍了如何使用Docker配置MySQL主从复制,首先创建了两个文件夹并分别配置了`my.cnf`文件,通过执行脚本启动容器并配置好主从关系,文中还提到了一些... 目录mysql主从及遇到问题解决遇到的问题说明总结mysql主从及遇到问题解决1.基于mysql

MySQL的索引失效的原因实例及解决方案

《MySQL的索引失效的原因实例及解决方案》这篇文章主要讨论了MySQL索引失效的常见原因及其解决方案,它涵盖了数据类型不匹配、隐式转换、函数或表达式、范围查询、LIKE查询、OR条件、全表扫描、索引... 目录1. 数据类型不匹配2. 隐式转换3. 函数或表达式4. 范围查询之后的列5. like 查询6

Linux下MySQL8.0.26安装教程

《Linux下MySQL8.0.26安装教程》文章详细介绍了如何在Linux系统上安装和配置MySQL,包括下载、解压、安装依赖、启动服务、获取默认密码、设置密码、支持远程登录以及创建表,感兴趣的朋友... 目录1.找到官网下载位置1.访问mysql存档2.下载社区版3.百度网盘中2.linux安装配置1.

PostgreSQL如何用psql运行SQL文件

《PostgreSQL如何用psql运行SQL文件》文章介绍了两种运行预写好的SQL文件的方式:首先连接数据库后执行,或者直接通过psql命令执行,需要注意的是,文件路径在Linux系统中应使用斜杠/... 目录PostgreSQ编程L用psql运行SQL文件方式一方式二总结PostgreSQL用psql运

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据