广州天河42期cyp 发表于 2022-6-5 20:27:06

mysql语句的学习

本帖最后由 广州天河42期cyp 于 2022-6-5 20:28 编辑

alter table ==》修改表,改变表的格式结构的sql语句对表中数据的操作:增删改查,(查使用最多)增---增加----对表格进行数据的插入---为了添加或者插入测试数据供我们进行测试某些测试不到的场景删---删除----对一些我们测试过程中产生的脏数据(测试过程中一些不是程序正常生成的数据)进行清除处理改---修改----对表中原有的数据进行修改---为了修改测试数据供我们进行测试某些测试不到的场景查---查询----对测试过程中产生的数据进行检查核查查--select select * from 表; ==》查询表中所有字段的值增---insert intoint、bigint、float、double只能插入数字,插入数据时无需加引号char、varchar插入字符串,可以插入任意格式的数据,但必须加英文引号date插入日期格式的数据,也必须加英文的引号方式一:要求表中字段数量不多,对表的结构要熟悉1、插入的值的数量必须与字段的数量对应2、值的格式必须要对应字段的要求insert into 表名 values(字段1的值,字段2的值,字段3的值,......,字段7的值),(字段1的值,字段2的值,字段3的值,......,字段7的值); ==》对一个有7个字段的表插入两行数据方式二:对指定字段插入数据--常用方式insert into 表名(字段4,字段1,字段2) values (字段4的值,字段1的值,字段2的值),(字段4的值,字段1的值,字段2的值); ==》对一个表中三个指定字段插入值,值的顺序按照指定字段的顺序进行插入(格式与字段要求对应)NULL和' ':NULL是完全不占系统空间的。但是' '是占系统一个字节改--update setupdate 表 set 被改字段=值 where 条件字段=满足什么条件update 表 set sid=4 where name='xiaoming'; ==》更新test表 设置sid的值为4 当name字段='xiaoming'时update 表 set 被改字段=值 where 条件字段=满足什么条件;update test set sid=4 where name='xiaoming'; ==》当 name字段等于'xiaoming'时,更新 test表并设置 sid的值为4 update test set score =88.88; ==》更新 test表并设置 score的值为88.88 update test set name='laomai',age=28,score=100,time='1999-01-01' where sid=7; ==》当 sid字段等于7时,更新 test表并设置 name的值为'laomai'、age的值为28、score的值为100、time的值为'1999-01-01'查--查询--selectselect * from 表;==>查询 所有字段(*)的值 来自于 xx表;select sid,name,age from emp; ==》查询来源于emp表中的sid ,name,age字段的值条件查询先接where(当满足......条件时)select * from emp where dept2=101; ==》当dept2等于101时,查询来源于emp表中所有字段的值不等于 != <> (NULL值是不参与等于、不等于、大于小于这些条件匹配的)select * from emp where dept2!=101; ==》当dept2不等于101时,查询来源于emp表中所有字段的值select * from emp where dept2<>101; ==》当dept2小于/大于101时,查询来源于emp表中所有字段的值多条件查询and条件:要求两边同时满足select *from emp where dept2=101 and incoming=3500; ==》当dept2等于101且incoming等于3500时,查询来源于emp表中所有字段的值or条件:以or为分界,两边只要满足一个select * from emp where dept2=101 or incoming=7500; ==》当dept2等于101或incoming=7500时,查询来源于emp表中所有字段的值null的匹配 :is、is notselect *from test where age is null; ==》当age为空时,查询来源于test表中所有字段的值select *from test where age is not null; ==》当age不为空时,查询来源于test表中所有字段的值大于小于的匹配:select *from test where age>19 and age <=21; ==》当age大于19且小于等于21时,查询来源于test表中所有字段的值between 。。and 。。。:介于,是包含着等于的闭区间select *from test where age between 19 and 21; ==》当age在19-21之间时,查询来源于test表中所有字段的值in与not in(与or条件类似)select * from emp where age in (35,32,57); ==》当age为35或32或57时,查询来源于emp表中所有字段的值select * from emp where age not in (35,32,57); ==》当age不为35或32或57时,查询来源于emp表中所有字段的值在linux中模糊匹配符:‘_’,‘?’但是在mysql中‘’和‘?’有着其他作用mysql中的模糊匹配符:‘%’,'''%':匹配0个或者多个字符‘’:匹配一个字符模糊匹配:likeselect *from test where name = '%m%'; ==》当name等于一个或多个字符+m+一个或多个字符格式时,查询来源于test表中所有字段的值select * from test where name like 'xiao____'; ==》当name像xiao+4个字符格式时,查询来源于test表中所有字段的值select * from test where age like '2%'; ==》当age像2开头+一个或多个字符格式时,查询来源于test表中所有字段的值select * from test where time like '2022%'; ==》当time像2022开头+一个或多个字符格式时,查询来源于test表中所有字段的值查询限定的数据---分页查询 limit,只能放在SQL语句的末尾select *from test limit 0,3; ==》查询来源于test表中所有字段的值,显示从0行开始的3行数据select *from test where time is not null limit 2,3; ==》当time不为空时,查询来源于test表中所有字段的值,显示从第2行开始的3行数据select *from test limit 0,3 where time is not null; ===》错误的写法排序order by如果结合limit使用,那么limit也是放在最后面如果结合where条件查询,那么要先做条件查询,才可以做排序asc表示升序、desc表示降序,默认是升序操作select *from test order by age desc; ==》查询来源于test表中所有字段的值并以age的降序排序select *from test order by age asc; ==》查询来源于test表中所有字段的值并以age的升序排序select * from test where age is not null order by age asc limit 3; (先做where条件过滤,再做order by排序,最后做limit限定查询)==》当age不为空值时,查询来源于test表中所有字段的值并以age的升序排序,显示前3行的数据select * from test order by phone asc,age asc;对多个字段进行同时排序,谁在前谁的优先级更高(注意:order by排序最好不要同时对3个以上的字段进行排序)==》查询来源于test表中所有字段的值,并以phone的升序和age的升序排序分组查询:group by注意:1、分组查询要查询指定的字段,对什么字段进行分组就查询什么字段。因为分组之后,只有分组字段可以正常匹配,其他非分组字段(普通字段)是随机出现的(一般是分组的第一条)。2、当使用group by分组之后,要进行条件过滤不能使用where,where只能写在group by之前(先对表格的数据进行过滤,再进行分组)3、如果希望在group by分组之后进行条件过滤,就要使用having(作用类似于where,但是只能写在group by分组之后)4、group by分组一般要结合聚合函数使用,where条件不允许接聚合函数,having才可以接聚合函数select dept2 from emp group by dept2; ==》以dept2字段进行分组查询来源于emp表中dept2字段的值select dept2,count(*) from emp where dept2 !=101 group by dept2; ==》当dept2不等于101时,对dept2字段进行分组查询来源于emp表中dept2字段的值并统计select dept2,count(*) from emp group bydept2 having dept2 != 101; ==》当dept2不等于101时,对dept2字段进行分组查询来源于emp表中dept2字段的值并统计行数select dept2,count(*) from emp group bydept2 having count(*) >1; ==》当统计行数大于1时,对dept2字段进行分组查询来源于emp表中dept2字段的值并统计行数聚合函数:(一般是结合分组查询使用,如果不使用分组查询,那么则直接按照整个表格的情况进行处理)count() 统计select count(*) from 表; ==》统计表中的行数select count(1) from 表; ==》统计表中的行数select count(字段) from 表; ==》统计表中对应字段有多少条数据sum() 求和select sum(incoming) from emp; ==》求emp表中的总收入 ==》对表中某个字段的值进行求和统计avg() 求平均select avg(incoming) from emp; ==》求emp表中的平均收入 ==》对表中某个字段的值进行求平均max() 求最大值select max(incoming) from emp;==》求emp表中的最大收入 ==》对表中某个字段的值进行求最大值min() 求最小值select min(incoming) from emp;==》求emp表中的最小收入 ==》对表中某个字段的值进行求最小值distinct() 去重select distinct(phone) from test; ==》对test表中的phone字段的值进行去重复的操作,每种值只保留一个SQL中进行四则运算:select max(incoming),min(incoming),(max(incoming)-min(incoming))*100 from emp;==》对emp表中incoming字段的值进行求最大值、求最小值、求最大值与最小值之差*100的运算as语句:取别名,可以对输入结果的字段名进行简化输出select max(incoming),min(incoming),max(incoming)-min(incoming)*100 as '乱取的' from emp; ==》对emp表中incoming字段的值进行求最大值、求最小值,求最大值与最小值之差*100的运算并命名为'乱取的'删 --deletedelete from 表 where xx字段=满足什么条件;delete from test where phone=17688889999 and time is null; ==》删除 test表中 phone字段等于'17688889999'且time为空值时的数据delete from 表; ==>不限定条件删除表中数据,可以清空表中内容

页: [1]
查看完整版本: mysql语句的学习