MySQL 基础操作总结:数据库、数据表和 CRUD

📅 2026/6/27 3:53:52
MySQL 基础操作总结:数据库、数据表和 CRUD
MySQL 基础操作总结数据库、数据表和 CRUD这篇文章主要整理 MySQL 中常见的基础操作包括数据库操作、数据表操作、数据类型、增删改查、条件查询、排序分页、聚合查询以及简单约束。MySQL 的基础操作可以先按照三个层次理解数据库操作创建、查看、修改、删除数据库数据表操作创建表、查看表结构、修改表结构、删除表数据操作对表中的数据进行新增、查询、修改和删除也就是常说的 CRUD。在正式操作数据表之前需要先选择要使用的数据库use 数据库名;与数据库有关的操作1.查看所有数据库showdatabases;2.创建数据库createdatabase数据库名;3.修改数据库alterdatabase数据库名charsetutf8mb4--设置字符集collateutf8mb4_general_ci--设置排序规则/校对规则注alter 主要是改数据库属性比如字符集、排序规则4.删除数据库dropdatabase数据库名;和数据表有关的操作数据类型常用数据类型适合存什么bool布尔类型0表示false 1表示trueint普通整数比如年纪、数量、编号bigint很大的整数比如用户id、订单号double浮点数比如gpadecimal(10,2)精确小数适合金额比如银行数据varchar(n)可变长字符最常用datetime存日期时间2005-01-01 140200timestamp时间戳注decimal(10,2) decimal(总位数, 小数位数),10表示这个数最多有10位数字2表示小数点后保留两位操作表结构sql操作时要选中数据库 use 数据库名 1.查看所有表showtables;2.创建表表名不与关键词重复若重复用反引号 引用createtable表名(列名 数据类型,列名 数据类型,...);3.查看表结构desc表名;4.修改表(低频操作)altertable表名addclass_idintaftergender;--(列名 数据类型)--altertablestudentmodifynamevarchar(200);--modify是关键字 修改 student 表中已经存在的 name 字段把它的数据类型改成 VARCHAR(200)。altertablestudentrenamecolumnidtostudent_id;altertable表名dropclassId;注修改表结构是低频操作很危险实际操作时修改前查一下。5.删除表droptable表名;C:新增表内容insertintostudentvalues(1,张三1);insertintostudent(id,name)values(1,张三);insertintostudentvalues(5,王五,0),(6,赵六,1),(7,田七,0);--多个数据之间要用英文逗号隔开insertintostudentsselect*fromstudent;注第三种方式效率更高列名命名要蛇形命名student_namesql里字符串用’’ 都可以。sql是弱类型会存在隐式类型转换int-varchar,varchar-intR: 查询select 查询不会修改数据库中的原始数据它只是根据表中的数据生成一个查询结果集。这个结果集可以理解为临时看到的一张结果表select*from表名;--危险操作容易吃满网卡select列名,列名...from表名;select表达式from表名;select表达式as别名from表名;selectdistinctmathfromexam;去重条件指定列必须完全相同。distinct 会根据 select 后面指定的所有列一起去重。如果只查询 math就只按 math 去重如果查询 name, math就要求 name 和 math 都相同才会被去重。如下:namemath张三88张三88selectname,mathfromexamwhereenglish60--条件中写的列和select查询的列是没有关系的select列名from表名where条件; 表示比较相等在条件查询里 不能正确处理 NULL NULL NULL 安全等于可以判断 NULL 和 NULL 相等:不等于between A and B AvalueB (闭区间连续区间)value in(option,…) 多选一 一个离散的集 where 字段名 in andornot 取反/不是/不满足这个条件 not age 18;这个可以 age not 18 这样不可以not后面更多的是条件is not不是用来判断是否等于某个字符的一般用is not nullwhereuniversity!复旦大学;whereuniversuty北京大学;条件查询过程遍历每一行的数据把这一行的数据带入到条件里条件成立将这一行加入到集合里不成立的话跳过完成所有遍历过程后得到了结果集合再根据select指定的列/表达式/别名/去重操作对集合处理selectname,chinesemathastotalfromexamwheretotal200;--报错 注意上面写的条件查询过程注and or优先级建议手动加保证调整优先级尽量不要写复杂条件。selectnamefromexamwherenamelike孙%;//%包含多个任意字符selectnamefromexamwherenamelike孙_;//_一个任意字符select列名from表名orderby列名selectnamefromexamorderbychinesedesc;selectnamefromexamwherechineseisnotnullorderbychineseselectdevice_id,gpa,agefromuse_profileorderbygpadesc,agedesc;--order by 后的顺序不能反gpa相等后再按照age降序输出。没有order by 查询结果的顺序是不一定null在排序中默认最小相同值之间彼此顺序是不一定的order by 子句 默认排序是升序 在结尾加desc(descond)降序selectname,chinesefromexamwherechineseisnotnullandenglishisnotnullorderbymathdesc,chinses,english;--先按 math 降序排序--如果 math 相同再按 chinese 升序排序--如果 chinese 也相同再按 english 升序排序limitnum;--返回num条记录limit起始位置,查询条数;limit查询条数OFFSET起始位置;U:修改操作危险操作不可撤销update表名set列名值,列名值;注修改的前提是先查询到不加条件的修改就是作用于全部行。Ddelete 删除数据中数据行deletefromexamwherename孙;--如果不指定条件的话会删除掉表内所有数据剩下一个空表truncate 清空整张表里的所有数据truncatetablestudent;truncatestudent;--上面两个都可以这个表示表结构还在但表里的数据全没有了--如果表里有自增主键TRUNCATE 通常会把自增编号重置。--再插入新数据id 通常会从 1 重新开始。delete删除表中的数据行truncate清空整张表的数据drop删除数据库、表等对象本身聚合查询对查询结果进行统计 行级别的聚合函数聚合函数通常会忽略 NULL但表达式里出现 NULL 时整个表达式可能变成 NULL。selectcount(*)fromexam;--count 和之间不能有空格先执行select 再count 统计查询结果行数selectcount(name)fromexam;--有一行name是null就不被统计字符串和数字有隐式转换count(*)用来统计查询结果中的行数。实际理解时可以认为先从表中取数据再根据where条件过滤最后统计剩余行数。selectsum(math)fromexam;--sum 操作会直接排除null值selectsum(mathenglishchinese)astotalfromexam;--算总分--如果一行里面 math、english、chinese 只要有一个是 NULL那么这一行的结果就是 NULL这一行就不会被 sum 正常累计。selectavg(mathchneseenglish)fromexam;selectmax(english),min(english)fromexam;--字符串可以比大小selectrole,count(*)fromempgroupbyrole;注一条 SQL 语句中通常只有一个 group by 子句但 group by 后面可以写多个分组字段。分组后每一组通常通过聚合函数产生一行统计结果。非group by的列不能直接作为被查询的列但通过聚合函数来进行一些分组查询。selectuniversity,avg(question_cnt)asavg_question_cntfromuser_profilegroupbyuniversityhavingavg(question_cnt)10;where 是在聚合以前的使用条件写在group by前having是在聚合以后使用的条件写在group by后createtablestudent(idint,namevarchar(20),gendervarchar(20))check(gender男orgender女);--后续修改插入数据都会自动带入条件条件成立才能修改插入