目录
1.CRUD
- 注释:在SQL中可以使用“--空格+描述”来表示注释说明
- CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。
2.新增(Create)
语法:
举例:
(1). 单行数据 + 全列插入
(2). 多行数据 + 指定列插入
1.数据库里面的字符串是单引号
2.数据库一般要有唯一字段来进行表的标识,在java里面如果为了和数据库对应的话,那也需要有这么一个属性
3.以后写,尽量只使用指定列插入的写法,因为如果你不指定列插入,以后你的表要是增加了一个字段,那之前的语句就会报错了
4.注释语法:--空格
3. 查询(Retrieve)
语法:
(1). 全列查询
(2). 指定列查询
(3). 查询字段为表达式
查询的字段为表达式时,他会查询以后,自己进行计算再输出
(4). 别名
为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称。
语法:
- Tips:别名“总分”前面可以加上as
- 注:这里可以看到,我们这里显示的数据是数据库返回给我们的结果集。相当于我们这里的黑框框是客户端,数据库是服务端
(5). 去重:DISTINCT
使用DISTINCT关键字对某列数据进行去重:
distinct放在需要指定的字段前面,且只能加上一个字段
(6). 排序:ORDER BY
Java排序:(1)算法排序 (2)java比较接口进行排序
语法:
1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面
3. 使用表达式及别名排序
4. 可以对多个字段进行排序,排序优先级随书写顺序
5.order by 一般和limit一起使用,用来选取前三的元素。
(7). (重要)条件查询:WHERE
比较运算符:
这里面的比较运算符和java里面的比较运算符不太一样
- = 是比较运算符了,表示判断相等,不再是java里面的==了
- 等于只要知道 = 就可以,不等于只要知道 != 就行
逻辑运算符:
1).基本查询
- 注意WHERE条件可以使用表达式,但不能使用别名。
2).范围查询
--BETWEEN ... AND ...
--IN
3).模糊查询:LIKE
- % 匹配的是0个或多个字符,比如只有一个‘孙’,那只有‘孙%’能匹配出来
- _ 匹配的是一个字符
4).NULL 的查询:IS [NOT] NULL
(8). 日期的使用和查询
1.创建含有日期的表
- 这里要给日期设置一个默认值,不过我自己那里不用设置默认值好像也可以。
- 设置默认值就设置为null就可以了
2.mysql默认的日期格式:yyyy-MM-dd HH:mm:ss
插入含日期的数据
3.查询日期字段
和其他字段一样,查询的时候也可以between-and。
4.
(9). 分页查询:LIMIT(MySQL专用)
语法:
- s表示的是偏移量(就是先偏移几个),n表示的是筛选结果的条数
- 第二个LIMIT s,n表示筛选n条结果,从第s条数据开始
- 第三个LIMIT n OFFSET s表示筛选n条结果,从第s条数据开始
- 这里也不是要建议第三种,第二种也可以,看你哪个用的比较顺,一个是先s后n,另一个是先n后s,本人建议第三种,因为没有s的时候就是LIMIT n
- Order by一般和limit一起使用
eg:用分页查询选出语文成绩第二的同学
select * from exam_result order by chinese desc limit 1 offset 1
4. 修改(Update)
语法:
- 在set的时候,如果值的长度超过了建表时给定的长度,会报错。
- 比如最后的set chinese = chinese * 2;就可能会报错
- 如果不加上where,order by等筛选条件,那就是整列元素的值全部修改
5. 删除(Delete)
语法:
注意delete from table_name,后面什么都不加,那就是整张表删除了,一定要注意。要加上where,order by,limit等
6. 内容重点总结
(1).如何删除表中Id最大的值
mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。
错误:
正确:
(2).正常总结
新增:
查询:
修改:
删除: