ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【MySQL】数据库基础:数据库操作与sql中的数据类型

【MySQL】数据库基础:数据库操作与sql中的数据类型 文章目录一、数据库基础数据管理的工具1.1 为什么需要数据库文件存储的局限性1.2 数据库分类关系型与非关系型的核心区别主流数据库举例二、MySQL基础操作数据库与表的核心命令2.1 数据库操作4个核心命令2.1.1 显示所有数据库2.1.2 创建数据库2.1.3 使用数据库2.1.4 删除数据库2.2 常用数据类型选择合适的“容器”2.2.1 数值类型存数字2.2.2 字符串类型存文本2.2.3 日期类型存时间2.3 表操作5个核心命令2.3.1 查看表结构2.3.2 创建表2.3.3 查看数据库中的表2.3.4 删除表2.3.5 修改表属性三、SQL分类理解命令的身份在数据驱动的时代数据库是存储和管理数据的核心工具。MySQL作为开源且功能强大的关系型数据库被广泛应用于各类项目。一、数据库基础数据管理的工具1.1 为什么需要数据库文件存储的局限性很多人会疑惑“用文件就能存数据为什么还要数据库”其实文件存储存在4个关键问题而数据库恰好能解决这些痛点安全性差文件可直接被修改或删除缺乏权限控制和数据保护机制查询管理难若要从大量文件中筛选特定数据如“查询2023年所有订单”需手动编写复杂逻辑效率极低海量数据支撑弱文件系统难以高效存储和读取百万级、千万级数据程序控制不便在代码中操作文件需处理IO流、格式解析等问题且不支持多程序并发访问。数据库本质是“更高效管理数据的软件”不仅能解决上述问题还支持远程连接因此也叫“数据库服务器”存储介质可灵活选择磁盘持久化或内存临时缓存。1.2 数据库分类关系型与非关系型的核心区别数据库主要分为关系型数据库RDBMS和非关系型数据库NoSQL二者适用场景差异极大需根据业务需求选择对比维度关系型数据库非关系型数据库是否支持SQL是基于标准SQL仅实现细节有差异不强制多数不基于SQL事务支持支持ACID特性确保数据一致性不支持适合对一致性要求低的场景复杂操作支持如多表关联、子查询不支持仅适合简单数据操作海量读写效率低结构固定读写需解析表关系高灵活存储专为高并发设计基本结构基于二维表行列结构固定灵活键值对、文档、图等适用场景业务系统如电商订单、OA系统OLTP联机事务处理数据缓存、统计分析如用户行为分析OLAP联机分析处理MySQL是一个关系型数据库简单来说关系型数据库就是二维表格以及他们之间的联系组成的数据组织。主流数据库举例关系型Oracle收费适合大型复杂项目如ERP系统MySQL开源免费轻量易用适合中小型项目重点SQL Server微软产品需部署在Windows Server中大型项目常用。非关系型键值对Redis缓存常用、Memcached文档型MongoDB存储JSON格式数据列族HBase大数据场景图型Neo4j社交网络关系分析。二、MySQL基础操作数据库与表的核心命令掌握“数据库创建/删除”“表创建/删除”是MySQL实战的第一步以下命令需在MySQL命令行mysql -u root -p登录后执行。2.1 数据库操作4个核心命令2.1.1 显示所有数据库查看当前MySQL中已存在的数据库SHOWDATABASES;执行后会显示系统默认数据库和自定义数据库。系统默认数据库记录关于MySQL自身的配置性能系统变量信息2.1.2 创建数据库语法CREATEDATABASE[IFNOTEXISTS]数据库名[DEFAULTCHARACTERSET字符集][DEFAULTCOLLATE校验规则];IF NOT EXISTS可选避免“数据库已存在”报错CHARACTER SET指定字符集推荐utf8mb4MySQL真正的UTF8支持复杂中文字符COLLATE指定校验规则使用utf8mb4_0900_ai_ci。示例-- 创建db_test1数据库默认字符集CREATEDATABASEdb_test1;-- 若不存在则创建db_test2避免报错CREATEDATABASEIFNOTEXISTSdb_test2;-- 若不存在则创建db_test3指定字符集为utf8mb4,CREATEDATABASEIFNOTEXISTSdb_test3CHARACTERSETutf8mb4;注意MySQL允许使用关键字命名数据库名但是必须用反引号引起来createdatabasedatabase;2.1.3 使用数据库use 数据库名操作某个数据库前必须先“切换”到该数据库示例USE db_test3;执行后终端会显示“Database changed”。select database()显示当前选择或操作的是哪个数据库SELECTdatabase();2.1.4 删除数据库警告删除数据库会清空所有表和数据且无法恢复语法DROPDATABASE[IFEXISTS]数据库名;示例-- 直接删除db_test1若不存在会报错DROPDATABASEdb_test1;-- 若存在则删除db_test2安全写法DROPDATABASEIFEXISTSdb_test2;2.2 常用数据类型选择合适的“容器”创建表时需为每个字段指定“数据类型”以下是MySQL中最常用的类型对应Java类型也已标注方便开发对接2.2.1 数值类型存数字数据类型大小说明对应Java类型BIT[(M)]1-8字节二进制数M1时存0/1对应布尔值BooleanTINYINT1字节小整型范围-128~127ByteINT4字节常用整型范围-231~231-1IntegerBIGINT8字节大整型存海量数字如订单号LongFLOAT(M,D)4字节单精度浮点会丢失精度不推荐FloatDOUBLE(M,D)8字节双精度浮点精度比FLOAT高但仍有误差DoubleDECIMAL(M,D)可变精确浮点适合金额、汇率无精度丢失BigDecimal注意数值类型可加unsigned无符号仅存正数但不推荐——若int存不下直接用BIGINT更稳妥金额类字段必须用DECIMAL(M,D)如DECIMAL(13,2)表示最大13位数字2位小数避免精度丢失。2.2.2 字符串类型存文本数据类型大小范围说明对应Java类型VARCHAR(SIZE)0-65535字节可变长度字符串存短文本如姓名、手机号StringTEXT0-65535字节长文本存文章内容、备注StringMEDIUMTEXT0-16777215字节中等长文本存大段内容StringBLOB0-65535字节二进制文本存图片、文件byte[]注意size表示字符串长度不是字节大小。也就是说定义varchar10最多可以存放10个字符多了就会报错。在utf8mb4编码集1个字符最多占4个字节根据具体使用情况用1-4字节表示1个字符。一个varchar最多可以存放 16383 (65535/4)个字符推荐用法短文本用VARCHAR如姓名用VARCHAR(20)长文本用TEXT文件优先存在服务器磁盘数据库只存文件路径避免数据库过大。2.2.3 日期类型存时间数据类型大小说明对应Java类型DATETIME8字节范围1000-9999年不随时区变化常用java.sql.Timestamp / java.util.DateTIMESTAMP4字节范围1970-2038年自动转换时区java.sql.Timestamp / java.util.Date选择建议若业务涉及多时区如跨国项目用TIMESTAMP否则用DATETIME范围更广无2038年限制。2.3 表操作5个核心命令表是数据库中“存储数据的基本单元”操作前需先通过USE 数据库名切换到目标数据库。2.3.1 查看表结构查看表的字段名、类型、是否允许为空等信息DESC表名;示例查看users表结构DESCusers;执行后会显示FieldTypeNullKeyDefaultExtraidint(11)YESNULLnamevarchar(20)YESNULLpasswordchar(32)YESNULLFeild字段Type数据类型Null当前字段是否允许为空如果置为No那么字段中必须有值不能为空Default当前列的默认值Extra其他拓展内容2.3.2 创建表语法CREATETABLE[IFNOTEXISTS]表名(字段1数据类型[COMMENT字段说明],字段2数据类型[COMMENT字段说明],...);IF NOT EXISTS可选避免“表已存在”报错COMMENT可选添加字段说明方便后期维护只是描述性的内容对表结构没有影响。示例创建学生表stu_testcreatetableifnotexistsstu_test(idintcomment学生ID,namevarchar(20)comment姓名,passwordvarchar(50)comment密码,ageintcomment年龄,sexvarchar(1)comment性别男/女,birthdaytimestampcomment生日,amountdecimal(13,2)comment余额,resumetextcomment个人简介);2.3.3 查看数据库中的表查看当前数据库下所有表SHOWTABLES;2.3.4 删除表警告删除表会清空表中所有数据且无法恢复语法DROPTABLE[IFEXISTS]表名;示例-- 直接删除stu_test表若不存在会报错DROPTABLEstu_test;-- 若存在则删除安全写法DROPTABLEIFEXISTSstu_test;2.3.5 修改表属性ALTER TABLE 修改已经建好的表的任何结构修改字段类型、长度、非空、默认值添加/删除主键、外键、唯一、CHECK 约束新增/删除/重命名字段修改表名1. 修改字段属性类型/非空/长度ALTERTABLE表名MODIFY字段名 类型[约束];示例altertablestudentmodifysnamevarchar(20)notnull;注意必须写完整类型约束2. 设置/删除默认值ALTERTABLE表名ALTER字段SETDEFAULT值;ALTERTABLE表名ALTER字段DROPDEFAULT;3. 添加主键ALTERTABLE表名ADDPRIMARYKEY(字段);4. 添加外键ALTERTABLE从表ADDFOREIGNKEY(外键字段)REFERENCES主表(主键)ONDELETE删除规则ONUPDATE更新规则;四大规则CASCADE级联删除/更新SET NULL删除后主表字段设为空RESTRICT禁止删除/更新默认NO ACTION同 RESTRICT5. 添加 CHECK 约束ALTERTABLE表名ADDCHECK(条件);示例ALTERTABLEstudentADDCHECK(sage10ANDsage40);6. 添加/删除字段-- 添加字段ALTERTABLE表名ADD字段 类型;-- 删除字段ALTERTABLE表名DROP字段;7. 重命名字段ALTERTABLE表名 CHANGE 旧名 新名 类型;8. 修改表名ALTERTABLE旧表名RENAME新表名;注意外键必须字段类型完全一致外键可以为空可以重复修改非空前必须确保无 NULL 值添加约束时现有数据必须符合规则MODIFY必须写完整字段定义三、SQL分类理解命令的身份操作数据库要使用SQL这即使一个标准也是一门语言。DDLdata definition language, 数据定义语言维护数据结构创建/删除数据库、表代表命令CREATE、DROP、ALTERDMLdata manipulation language, 数据操纵语言操作表中数据新增/修改/删除数据代表命令INSERT、UPDATE、DELETEDQLdata query language, 数据查询语言查询表中数据最常用代表命令SELECT单独从DML中拆分出来DCLdata control language, 数据控制语言权限管理和事务控制代表命令GRANT授权、REVOKE回收权限、COMMIT提交事务。
返回列表