Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
归纳详解MySQL知识点之表结构_创想鸟

归纳详解MySQL知识点之表结构

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了表结构包括了约束条件以及修改表结构的相关问题,希望对大家有帮助。

归纳详解MySQL知识点之表结构

推荐学习:mysql教程

约束条件

作用是限制如何给字段赋值

查看约束条件

mysql> desc 库名.表名;

mysql> desc db1.t9;

归纳详解MySQL知识点之表结构

//如图所示,每列代表的含义:字段名 | 类型 | 空 | 键值 | 默认值 | 额外设置

mysql> insert into t9 values (null,null,null);

  //如上图所示,约束条件允许为空(NULL),所以此处赋值的时候可以为空,null不区分大小写

mysql> select * from  db1.t9;

归纳详解MySQL知识点之表结构

mysql> insert into db1.t9(name,sex) values("lucy","girl");mysql> select * from db1.t9;

 //t9表的约束条件里,第三字段默认值为NULL,也就是说当没有给第三字段赋值的时候,会以默认值填入表中,即如下图所示默认填入NULL

归纳详解MySQL知识点之表结构

设置约束条件

null               //允许为空(默认设置)

not null         //不允许为null(空)

key                //键值类型

default          //设置默认值,缺省为NULL

extra             //额外设置

mysql> create database db2;mysql> create table db2.t1(    -> name char(10) not null default "",    -> age tinyint unsigned default 19,    -> sex enum("m","w") not null default "m"    -> );

//创建一个表db2.t1,name字段的类型为定长char,约束条件是不允许为空,默认值为0个字符,显示效果入下图所示;age字段的类型是微小整数tinyint,约束条件是不允许为负数(unsigned),默认值设置为19,注此处的默认值设置不得超过tinyint类型的范围,即默认值的设置不能超过255;sex字段的类型为枚举,enum为单选,约束条件是不允许为空,默认值设置为m;

mysql> desc db2.t1;

归纳详解MySQL知识点之表结构

mysql> insert into db2.t1(name) values("bob");

  //只给name字段赋值,剩下的字段由默认值赋值

mysql> select * from db2.t1;

归纳详解MySQL知识点之表结构

mysql> insert into db2.t1 values("lucy","21","w");     //给字段赋值,就不会以默认值赋值了mysql> select * from db2.t1;

归纳详解MySQL知识点之表结构

mysql> insert into db2.t1 values(null,null,null);      //错误提示,name字段不允许为空;name和sex字段都不能为空ERROR 1048 (23000): Column 'name' cannot be nullmysql> insert into db2.t1 values("null",null,"w");     //"null"的意思不再是空,仅仅是字符null,没有空的含义了,所以可以给字段赋值mysql> insert into db2.t1 values("",null,"w");     //""为0个字符,和空不一样,也可以给字段赋值mysql> select * from db2.t1;

归纳详解MySQL知识点之表结构

总结

约束条件

类型

Null(是否允许为空null)

默认允许   null

不允许为空   not null

Key(键值)

普通索引   index

唯一索引   unique

主键   primary key

外键   foreign key

全文索引   fulltext

Default(默认值:不给字段赋值使用默认值赋值)

默认不定义时是 null

定义时是 default(要与字段类型匹配)

Extra(额外设置:默认都没有额外设置)

修改表结构

语法结构

用法

mysql> alter table 库名.表名 执行动作;

执行动作

add          添加字段

modify     修改字段类型

change     修改字段名

drop         删除字段

rename     修改表名

添加新字段

用法

—— 新字段默认添加在字段末尾

mysql> alter table 库名.表名 add 字段名 类型(宽度) 约束条件;

                                               add 字段名 类型 [约束条件] after 字段名;

                                               add 字段名 类型 [约束条件] first;

不指定位置添加字段

mysql> alter table db2.t1 add email varchar(50);     //不指定添加字段的位置,默认就在末尾mysql> desc db2.t1;

归纳详解MySQL知识点之表结构

在某一字段后面添加字段

mysql> alter table db2.t1 add hobby set("eat","drink","play","happy") not null default "eat,drink" after age;    //指定添加位置在字段age之后,条件设置不允许为空,并设置默认值为eat,drinkmysql> desc db2.t1;

归纳详解MySQL知识点之表结构

mysql> select * from db2.t1;     //查看表内容,发现hobby字段自动添加了默认值

归纳详解MySQL知识点之表结构

将字段添加到最前面

mysql> alter table db2.t1 add class char(7) default "B180601" first;     //将字段class添加到最前面mysql> desc db2.t1;

归纳详解MySQL知识点之表结构

mysql> select * from db2.t1;     //class字段自动添加默认值

归纳详解MySQL知识点之表结构

修改字段类型

基本用法

—— 修改的字段类型不能与已存储的数据冲突

mysql> alter table 库名.表名 modify 字段名 类型(宽度) 约束条件;

                                              modify 字段名 类型 [约束条件] after 字段名;

                                              modify 字段名 类型 [约束条件] first;

注:

       如果表中这个字段类型下面的字段已经有值了,那么修改的类型与约束不能与字段里面已经存储的数据发生冲突,如果发生冲突则不允许修改。比如,有一个字段name,里面存储了一个数据为bob,那么把字段的类型(宽度)改成char(1),则会修改失败,因为bob的宽度为3,如果将字段的类型(宽度)改为char(1),则源数据bob就存不下了,由于已存储的数据优先,所以就不能进行修改;

       修改字段的类型时要注意,不修改的部分要原样进行抄写,如果不修改的部分不原样抄写,那就相当于对其进行还原即使用默认配置。比如有一个字段name,他的类型是char(10),约束条件是不允许为空,默认值是””,现在要将其类型宽度改为char(20),其余没修改的部分没有在命令中进行原样抄写,那么输出结果该字段的约束条件会变为默认情况,即允许为空,默认值为NULL。改变字段位置的时候也一样。

mysql> desc db2.t1;

归纳详解MySQL知识点之表结构

将字段age的位置修改到字段class的后面

mysql> alter table db2.t1 modify age tinyint unsigned default 19 after class;     //除了对字段age的位置进行了修改,其余不修改的地方如:类型(宽度)、约束条件进行原样抄写

mysql> desc db2.t1;

归纳详解MySQL知识点之表结构

将字段name的类型变为varchar(15)

mysql> alter table db2.t1 modify name varchar(15) not null default "";mysql> desc db2.t1;

归纳详解MySQL知识点之表结构

修改字段名

基本用法

—— 也可以用来修改字段类型

mysql> alter table 库名.表名 change 源字段名 新字段名 类型(宽度) 约束条件;

注:也可以用来修改类型和约束条件,只需要写上新的类型和新的约束条件即可

mysql> desc db2.t1;

归纳详解MySQL知识点之表结构

将字段名email修改为mail

mysql> alter table db2.t1 change email mail varchar(50);

mysql> desc db2.t1;

归纳详解MySQL知识点之表结构

将字段名mail修改为email,并修改约束条件

mysql> alter table db2.t1 change mail email varchar(50) not null default "njw@163.com";     //出现错误,因为源数据中,mail字段中的值为NULL,如果将约束条件修改为not null,那么就与源数据发生冲突,所以修改失败ERROR 1138 (22004): Invalid use of NULL valuemysql> alter table db2.t1 change mail email varchar(50) default "njw@163.com";mysql> desc db2.t1;

归纳详解MySQL知识点之表结构

删除字段

基本用法

mysql> alter table 库名.表名 drop 字段名;

mysql> alter table db2.t1 drop email;    //删除库db2中表t1的字段emailmysql> desc db2.t1;    //没有字段email,已被删除

归纳详解MySQL知识点之表结构

mysql> select * from db2.t1;    //字段email及其数据已被删除

归纳详解MySQL知识点之表结构

修改表名

基本用法

mysql> alter table 库名.表名 rename 新表名;

                                                          库名.新表名;

mysql> use db2;

mysql> show tables;

归纳详解MySQL知识点之表结构

mysql> alter table db2.t1 rename stuinfo;     //将表名修改为stuinfo

mysql> show tables;

归纳详解MySQL知识点之表结构

mysql> select * from stuinfo;

归纳详解MySQL知识点之表结构

推荐学习:mysql视频教程

以上就是归纳详解MySQL知识点之表结构的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/177355.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
怎么登录我的谷歌邮箱_谷歌邮箱登录步骤与安全验证方法
上一篇 2026年9月1日 07:34:22
飞飞重逢三大核心任务系统深度指南:勋章进阶、跑环技巧与悬赏冲星全解析
下一篇 2026年9月1日 07:38:10

相关推荐

  • 事务隔离级别在mysql中如何应用

    MySQL提供四种事务隔离级别:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ(默认)、SERIALIZABLE,依次增强数据一致性,分别用于平衡并发性能与脏读、不可重复读、幻读等问题;通过SELECT @@tx_isolation等命令可查看级别,S…

    2026年9月21日
    300
  • mysql数据库和表的关系是怎样

    数据库是表的集合,一个MySQL数据库可包含多个表,表依赖数据库存在,需先创建数据库才能建表,如CREATE DATABASE school;USE school;CREATE TABLE students;数据库实现数据隔离与管理,不同项目使用不同数据库,便于组织与权限控制。 MySQL数据库和表…

    2026年9月21日
    000
  • mysql如何调整字符集和排序规则

    答案是调整MySQL字符集和排序规则需分层级操作:先修改数据库默认设置,再转换表和字段,最后配置服务器参数。具体步骤为:使用ALTER DATABASE更改数据库默认字符集;用ALTER TABLE CONVERT TO转换表中所有字符型字段;通过MODIFY修改特定字段的字符集;在my.cnf中设…

    2026年9月21日
    000
  • mysql安装后如何优化配置文件

    答案:优化MySQL配置需先定位配置文件,再根据硬件和业务调整内存、InnoDB、连接等核心参数。具体包括设置innodb_buffer_pool_size为物理内存50%~70%,合理配置日志参数与连接数,启用慢查询日志,并使用工具辅助调优,避免过度配置,确保稳定高效。 MySQL 安装后,优化配…

    2026年9月21日
    000
  • mysql如何设计数据归档表

    归档目标是解决主表数据量过大问题,需明确归档范围如时间维度冷数据,设计与原表一致或简化的归档表结构,保留必要索引并可添加archive_time字段和分区,通过分批迁移、限流休眠、事务安全和断点记录策略执行归档,避免影响线上服务,同时建立查询视图、定期备份、监控任务及生命周期管理,确保数据可用与系统…

    2026年9月21日
    000
  • 如何基于Swoole开发自定义框架?

    基于swoole开发自定义框架可以通过以下步骤实现:1. 创建核心app类,初始化swoole服务器并定义回调函数;2. 实现路由功能,使用router类处理请求分发;3. 添加中间件支持,使用middleware类处理请求;4. 集成异步数据库操作,使用swoole的mysql协程客户端;5. 实…

    2026年9月21日
    100
  • mysql如何理解数据压缩

    MySQL数据压缩通过减少存储空间提升I/O效率,主要在InnoDB引擎中实现页级压缩,使用zlib算法对BLOB、TEXT等大字段表压缩效果显著,需设置ROW_FORMAT=COMPRESSED和KEY_BLOCK_SIZE;压缩可降低磁盘使用并加速全表扫描,但增加CPU开销,频繁更新可能导致页分…

    2026年9月21日
    000
  • mysql如何使用savepoint

    SAVEPOINT用于在事务中设置回滚点,支持部分回滚。开启事务后可用SAVEPOINT命名保存点,通过ROLLBACK TO回滚至指定点,RELEASE SAVEPOINT可释放保存点。例如转账时先扣款并设保存点,若后续操作失败可回滚到该点,保留前置操作。保存点仅在当前事务有效,提交或回滚后自动清…

    2026年9月21日
    100
  • mysqlmysql如何优化in条件大列表查询

    使用EXPLAIN和慢查询日志判断IN性能问题,type为ALL且possible_keys为空或rows过大说明需优化;JOIN在有索引时通常优于IN,尤其当列表值来自另一表时;大IN列表可拆分为多个小IN结合UNION ALL,或存入临时表后用JOIN提升效率。 优化 MySQL 中 IN 条件…

    2026年9月21日
    000
  • 如何配置mysql初始用户和密码

    答案:MySQL安装后默认用户为root,密码为空或自动生成。需先确认服务运行,再登录并设置密码;若为空密码则直接登录后用ALTER USER修改,若为临时密码需从日志获取并强制修改;可创建远程用户并授权;推荐运行mysql_secure_installation进行安全加固,包括设密码、删匿名用户…

    2026年9月21日
    000
  • mysql如何排查磁盘IO瓶颈

    首先检查系统级磁盘IO,使用iostat、iotop等工具分析磁盘利用率和进程IO行为;再通过MySQL慢查询日志、sys.schema视图及SHOW ENGINE INNODB STATUS排查高IO消耗的SQL与内部等待事件;接着评估innodb_buffer_pool_size、innodb_…

    2026年9月21日
    000
  • 如何在Laravel中配置数据库连接?

    在laravel中配置数据库连接需要以下步骤:1. 编辑.env文件,设置db_connection、db_host、db_port、db_database、db_username、db_password。2. 确保config/database.php文件正确引用.env文件中的配置。3. 利用环…

    2026年9月21日
    000
  • mysql如何调试事务问题

    首先通过日志和锁信息确认事务状态,1. 启用通用日志追踪事务操作,2. 查询INNODB_TRX和INNODB_LOCK_WAITS分析活跃事务与阻塞关系,3. 查看死锁日志定位冲突原因,4. 调整隔离级别并优化事务逻辑以避免异常。 调试 MySQL 事务问题需要结合日志分析、锁信息查看和事务状态监…

    2026年9月21日
    100
  • mysql如何设置自动重连

    答案:通过连接配置、连接池和应用层逻辑实现MySQL自动重连。启用MYSQL_OPT_RECONNECT选项(旧版本),推荐使用连接池如PooledDB、HikariCP并配置ping机制,应用层捕获连接异常后重试,结合指数退避策略提升稳定性。 MySQL 客户端或应用程序在连接断开后无法自动恢复,…

    2026年9月21日
    100
  • mysql如何理解数据完整性

    数据完整性在MySQL中通过主键、外键、约束等机制确保数据准确一致。1. 实体完整性用主键保证记录唯一,主键非空且不重复;2. 域完整性通过数据类型、CHECK约束、默认值等确保字段数据合法;3. 参照完整性利用外键维护表间关系,支持级联操作;4. 用户定义完整性由开发者通过触发器或程序实现业务规则…

    2026年9月21日
    100
  • 如何迁移触发器

    迁移触发器需确保逻辑重建与行为一致,须考虑平台差异、依赖对象及权限。首先确认源与目标数据库对触发事件、时机、级别及功能支持的兼容性,如MySQL支持BEFORE/AFTER行级触发器,SQLite不支持语句级触发器,跨平台可能需重写。接着通过元数据查询或系统表导出触发器定义,如MySQL使用SHOW…

    2026年9月21日
    100
  • mysql如何配置默认存储引擎

    首先查看当前默认存储引擎,通过SHOW VARIABLES命令确认;然后编辑my.cnf或my.ini文件,在[mysqld]下添加default-storage-engine=InnoDB;接着重启MySQL服务使配置生效;最后验证更改结果并检查建表默认引擎。 MySQL 默认存储引擎的配置可以通…

    2026年9月21日
    100
  • mysql索引的类型和作用有哪些

    MySQL常见索引类型包括:1. 普通索引用于加速查询;2. 唯一索引确保列值唯一;3. 主键索引为唯一非空且自动创建聚簇索引;4. 聚簇索引决定数据物理存储顺序,每表仅一个;5. 非聚簇索引保存主键值,需回表查询;6. 覆盖索引避免回表提升性能;7. 联合索引遵循最左前缀原则;8. 全文索引支持文…

    2026年9月21日
    100
  • Linux怎么使用systemctl管理服务

    Linux怎么使用systemctl管理服务Linux怎么使用systemctl管理服务Linux怎么使用systemctl管理服务Linux怎么使用systemctl管理服务

    systemctl是Linux中管理systemd服务的核心工具,提供统一命令集来启动、停止、重启、查看服务状态及设置开机自启,支持并行启动、依赖管理与Cgroups资源控制,相比SysVinit更高效;通过创建/etc/systemd/system/下的.service文件可自定义服务,包含[Un…

    2026年9月21日 用户投稿
    200
  • mysql如何优化子查询

    优先使用JOIN替代相关子查询,减少扫描行数并利用索引;对子查询字段建立合适索引;用EXISTS代替IN处理大量数据;物化不相关子查询结果;避免无索引的标量子查询;通过EXPLAIN分析执行计划优化性能。 MySQL中子查询如果使用不当,容易导致性能下降,尤其是在数据量大的情况下。优化子查询的核心是…

    2026年9月21日
    100

发表回复

登录后才能评论
关注微信