针对这张表来操作
insert (into) [ 表名 ] values (对应的字段内容);
新增即:插入数据
插入的字段数目和类型需要和表结构中要求的一致
插入完成后,**查看数据:**select * from [ 表名 ];
" * " 表示一个通配符,意思是将所有列都查找出来
insert (into) [ 表名 ] ( 指定要插入的列 ) values (对应的字段内容);
数目和类型都要对应,且指定的列都需在表头中存在
没有被插入的列,默认被填充为 NULL
SQL 中最复杂的就是 查找
创建考试成绩表 & 插入测试数据:
select * from [ 表名 ];
这样的查询方式仅限于在测试环境中使用,千万不要在生产环境的服务器上执行这样的SQL,因为生产环境压力本来就大,服务器数据量非常多,一旦执行 select* 操作,可能就会给生产环境的服务器造成很大的负担
故:一般不建议使用全列查询,查询的列越多,意味着需要传输的数据量越大,可能会影响到索引的使用
select [ 列名] from [ 表名 ];
针对查到的列进行一定的表达式计算
例1: 查找所有同学的总成绩
例2: 查找所有同学的语文成绩,并在基础上 + 10 分
as 可以省略
去重查找,得到的结果的表的行数可能和原来不一样
插入一条能够重复的数据~
去重:
也可以指定多列来去重:
所有的 select 操作都不会对原来的表造成任何改变,基于原来的表,生成结果表
例1: 查找所有同学的信息,并且按照数学成绩 升序排序
例2: 查找所有同学的信息,并且按照数学成绩 降序排序
例3: 查找所有同学的信息,并且按照总成绩 降序排序
例4: 查找所有同学的信息,并且按照总成绩(使用别名) 降序排序
例5: 查找所有同学的信息,按照多个列来降序排序
先按照语文成绩降序排序,再按照数学成绩降序排序,最后按照英语成绩降序排序
(列越靠前,优先级越高)
如果语文成绩一样,按照数学成绩排序
如果语文和数学成绩一样,再按照英语成绩排序
**补充:**null 值被认为是最小的
最终结果的行数可能不一样
比较运算符:
运算符 | 说明 |
---|---|
>,>=,<,<= | 大于,大于等于,小于,小于等于 |
= (比较相等) | 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL |
<=>(比较相等) | 等于,NULL 安全,例如 NULL <=> NULL 的结果是 true(1) |
!= 或 <> | 不等于 |
between A0 and A1 | 范围匹配,[A0,A1],如果 a0 <= value <= a1,返回 true(1) |
IN (option , …) | 当前值在 ( ) 的若干选项中匹配任意一个,就返回 true(1) |
is NULL | 是 NULL |
is not NULL | 不是 NULL |
like | 模糊匹配,% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符 |
逻辑运算符:
运算符 | 说明 |
---|---|
and(逻辑与) | 多个条件必须都为 TRUE(1),结果才是 TRUE(1) |
or(逻辑或) | 任意一个条件为 TRUE(1), 结果为 TRUE(1) |
not(逻辑取反) | 条件为 TRUE(1),结果为 FALSE(0 |
例1: 查询数据中语文成绩为 null 的记录
错误方法: null = null ,结果是 false
正确操作1:
正确操作2:
例2: 查询数学成绩不及格的同学
例3: 查询语文成绩比英语成绩好的同学
例4: 查询总成绩在200分以下的同学
**注意:**在 where 中不能使用别名
例5: 查询语文成绩 和 英语成绩 均 >80 分的同学
例6: 查询语文成绩 > 80 或者 数学成绩 > 90 分的同学
例7: 查询语文成绩在 [80,90] 之间的同学
例8: 查询数学成绩是 98.8 或者 50.1 的同学
例9: 查询所有姓 小 的同学
例10: 查询所有语文成绩 > 90 的同学
例11: 查询姓 小 且 语文成绩 > 60 的同学
多个条件在一起联合生效时,一般要求哪个条件能过滤掉的数据多(剩下的数据少),就把该条件放在左侧
补充:
上边的所有 select 操作,除了条件查找之外,剩下的都是不应该在生产服务器上直接执行的
最保险的就是加上分页查找,相当于把查找结果只选取其中的一小部分来作为结果
例1: 查找总分前三名同学
例2: 查找总分排名 4 ~ 6 名的同学
若 limit 后面数字过大,超出记录的数目,返回结果不会有任何错误:
若 offset 后面数字过大,得到的结果可能是一个空的结果:
update [ 表名 ] set [ 列名 ] = [ 修改的值 ],[ 列名 ] = [ 修改的值 ] where [ 筛选条件 ];
update 每次修改几行记录是不确定的,具体取决于 where 中的条件,得看 where 条件过滤之后剩下几条记录
例1: 把哈哈的数学成绩改成 66.6
若不加任何 where 的限定条件,则会把所有的记录都进行修改
把哈哈的数学成绩改成 88.8
例2: 把 大大小 的数学成绩 改成 50,语文改成 70
例3: 把所有同学的语文成绩 -10 分
例4: 把总成绩倒数的三名同学的 数学成绩 +10分
delete from [ 表名 ] where [ 筛选条件 ];
删除所有记录:
删除操作非常危险!!一旦数据被删了,通过常规手段是无法恢复的
数据库都会支持一些 “权限” 控制,例如:有些数据,只能读不能改;有些数据,能读能改,不能删除
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/m0_47988201/article/details/120948543
内容来源于网络,如有侵权,请联系作者删除!