资讯动态

MySQL笔记(2)-- CURD多表操作、库表操作、约束条件、字段类型

发布时间:2026/10/22 1:13:12 来源:尧图企业网站定制
源码仓库Gitee · GitHubinsert语法方式一支持插入多行方式二不支持方式一支持子查询方式二不支持方式一insert into tableName(column,column...) values(str,str...); 方式二insert into tableName set columnstr,columnstr...; 子查询插入insert into tableName(column,column...) 子查询 (1)insert into tableName(column,column...) select str,str....; (2)insert into tableName(column,column...) select str,str.... from tableName where 条件; 使用union进行多行插入 insert into tableName select str,str... union select str,str... union ....update更新多表联合语法sql92语法: update tableName 别名1,tableName 别名2 ... set 别名1.columnvalue,别名2.columnvalue.... where 连接条件【表1和表2的连接条件】 and 筛选条件 sql99语法 update tableName 别名1 inner|left|right join tableName 别名2 on 连接条件 set 别名1value.... where 连接条件delete多表删除语法truncate删除全表自增字段索引重置为0单表delete from 表名 where 条件【 limit 条目】truncate不支持事务无法进行回滚sql92语法: delete 别名1,别名2 ... from tableName 别名1,tableName 别名2... where 连接条件【表1和表2的连接条件】 and 筛选条件 sql99语法 delete 别名1,别名2 ... from tableName 别名1 inner|left|right join tableName 别名2 on 连接条件 where 连接条件 truncate语法truncate table tableName;库表操作【】表示可省略库创建create database [if not exists]库名库修改rename database 旧名 to 新名更改库的字符集alter database 库名 character set 编码格式(gbk)删除库drop database if exists 库名表创建 create table if not exists 表名 列名 列类型【长度约束】......表修改alter table 表名 add|drop|modify|change column 列名 【列类型 约束】alter table 旧表名 rename to 新表名修改列名alter table 表名 change 【column】 旧列名 新列名 类型修改列的类型和约束alter table 表名 modify column 列名 类型列添加 alter table 列名 add column 列名 类型 【first|after 列名】删除列alter table 表名 drop column 列名表删除drop table if exists 表名查看表信息desc 表名 查看当前库的所有表 show tables;复制表的结构create table 新表名 like 库中的表名复制表的结构和数据create table NewTableName select * from 库表名复制部分的结构和数据create table NewTableName select column,column.. from 库表名 where 条件复制部分的结构create table 新表名 select column,column.. from 库表名 where 0【条件是false】约束条件主键和唯一都可以保证数据的唯一主键不能存null唯一可以存null但只能存一个null;主键最多只有1个唯一可以多个。主键和唯一都可以组合等插入的值判断是根据组合判断比如唯一UNIQUE(id,number)数据1,1)和(1,2)、(1,2)和(2,2)没问题1,1)和(1,1)就报错不行。【不推荐进行组合不稳定】外键得先删除从表再删除主表外键在从表中该外键必须是主表的主键。六大约束NOT NULL非空用于保证该字段的值不能为空比如姓名学号等DEFAULT默认用于保证该字段有默认值比如性别PRIMARY KEY主键用于保证该字段的值具有唯一性并且非空比如学号编号等UNIQUE唯一用于保证该字段的值具有唯一性可以为空比如座位号CHECK检查约束【MySQL中不支持】比如年龄性别FOREIGN KEY外键用于限制两个表的关系用于保证该字段的值必须来自与主表的关联列的值在从表中添加外键约束用于引用主表中某列的值比如学生表的专业编号等约束的分类列级约束六大约束语法上都支持但外键的约束没有效果添加列级约束alter table tableName modify column 字段名 字段类型 新约束表级约束除了非空默认其他的都支持添加表级约束在各个字段的最下面【constraint 约束名】约束类似字段名alter table tableName add 【constraint 约束名】约束类型字段名【外键的引用】查看表的所有索引包括主键、外键、唯一show index form tableName;标识列设置自动增长只能是数值默认值是1最多只能设置一列为自增长字段类型整数默认有符号int unsigned 表示int无符号类型即不允许存储负数int(7) zerofill 表示插入的数据不够7位进行剩余位数左填充补上0【使用zerofill默认表示无符号不支持负数】【为整型类型指定宽度例如int(11)对大多数应用是没有意义的它不会限制值的合法范围只是规定了MySQL的一些交互工具比如MySQL命令行客户端用来显示字符的个数。对于存储和计算来说int(1)和int(20)是相同的。】小数定点型的精度比浮点型高如果要求插入的数据精度较高比如货币运算考虑使用定点型M表示整数部分小数部分D表示小数部分如果超过位数则使用临界值字段设置定点型没有限定M和DM默认是10D默认是0当插入数据的小数点后面有数据时会发出警告浮点型没有限定M和D则字段的精度与插入数据的精度一致【MySQL5.0及其以上版本将数字打包保存到一个二进制字符串中每4个字节存9个数字例如DECIMAL(18,9)小数点两边将各存储9个数字一个使用9个字节小数点前的数字用4个字节小数点后的数字用4个字节小数点本身占用1个字节。DECIMAL只是一种存储格式在计算中DECIMAL会转换为double类型。】节省空间可以使用float使用字节少的类型字符型char【M默认为1】存储固定长度字符字段存储在寄存器中因为它的大小是已知的这使得搜索和索引更快varchar存储可变长度字符空间耗费节省存储位置不固定必须使用引用表来查找内容查找效率低。【固定长度值可以存储char比如sex为1/0或男女】binary和varbinary保存二进制字符串枚举要求插入的值必须属于列表中指定的值之一就是说在创建字段为enum类型时需指定列表值是什么进行insert时插入的值在指定列表值中如果插入的不在指定范围内默认插入为空字符串插入字母忽略大小写如果列表成员为1-255则需要1个字节存储如果列表成员为255-65535则需要2个字节存储最多可以有65535个不同的列表成员实际限制小于3000每个成员被分配从1开始的索引值空字符串作为错误值的索引值为0可以使用select语句找出那些被指定无效枚举值的数据行SELECT * FROM tableName WHERE enum_col0;NULL的索引为NULL枚举值不能是0或空字符串enum在底层的存储方式是以整型进行存储的比如这样的字段sex enum(male , female , both , unknow)在查询时where sexmale和where sex1是等效的set不区分大小写用于保存集合和enum枚举类型类型可以保存0-64个成员。【set类型一次可以选取多个成员作为插入值enum枚举只能选一个】根据成员个数的不同存储所占的字节也不同成员数 字节数 1-8 1 9-16 2 17-24 3 25-32 4 33-64 8 create table tab_set( set1 set(a,b,c,d) ) insert into tab_set values(a); insert into tab_set values(a,b); insert into tab_set values(a,c,d);日期型查看当前时区show variables like time_zone设置为其他时区 set time_zone9:00datetime不受时区影响timestamp受时区影响。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑