文章目录

  • 一、SQL注意事项
  • 二、新增(Create)
  • 1.单行数据+全列插入
  • 2.多行数据+指定列输入
  • 三、查询(Retrieve)
  • 1.创建一个案例
  • 2.全列查询
  • 3.指定列查询
  • 4.查询字段为表达式
  • 5.别名
  • 6.去重:DISTINCT
  • 7.排序:ORDER BY
  • 8.条件查询:WHERE
  • 9.分页查询:LIMIT
  • 四、修改(Update)
  • 五、删除(DELETE)



一、SQL注意事项

1.在命令行工具写sql时,最后用“;”表示结束整个语句;本质是输入“;”+回车,客户换才会发送sql语句到服务端,由服务端执行这条语句
2.sql的注释:- - 注释内容(- -后面要有一个空格)
创建表时使用comment,可以加在表、字段上,可以在表结构中看到
3.写sql时,表名和字段名尽量避免使用关键字,如果是关键字,在前后加`,如表名为desc,创建时就应该写为 create table `desc`
4.字符串都需要使用单引号 ‘字符串内容’

二、新增(Create)

先创建一个表:

axios增删改查 增删改查功能描述_mysql

1.单行数据+全列插入

axios增删改查 增删改查功能描述_axios增删改查_02

value_list数量必须和定义表的列的数量及顺序一致

2.多行数据+指定列输入

axios增删改查 增删改查功能描述_字段_03

三、查询(Retrieve)

语法:

axios增删改查 增删改查功能描述_sql_04

1.创建一个案例

-- 创建考试成绩表
mysql> create table score (
    -> id int,
    -> name varchar(20),
    -> math decimal(3,1),
    -> english decimal(3,1)
    -> );
    
-- 插入测试数据
mysql> insert into score (id,name,math,english) values
    -> (1,'图图',68,76),
    -> (2,'小美',90,95),
    -> (3,'壮壮',34,45),
    -> (4,'王子',99,98.5);

2.全列查询

select * from table_name;

axios增删改查 增删改查功能描述_mysql_05

通常情况下不建议使用*进行全列查询
1.查询的列越多,意味着需要传输的数据量越大
2.可能会影响到索引的使用。(索引后面讲)

3.指定列查询

axios增删改查 增删改查功能描述_字段_06

指定列的顺序不需要按照定义表的顺序来

4.查询字段为表达式

查询字段可以是:
1.表达式
2.常量值
3.加减乘除表达式

1.表达式不包含字段:

axios增删改查 增删改查功能描述_字段_07


2.表达式中包含一个字段:

axios增删改查 增删改查功能描述_axios增删改查_08


3.表达式中包含多个字段:

axios增删改查 增删改查功能描述_axios增删改查_09


但是我们会发现:如下图这样显示在表头十分不美观,于是乎,我们可以为它指定别名

axios增删改查 增删改查功能描述_axios增删改查_10

5.别名

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该类的名称

mysql> select id,name,math+english sum from score;

这里的sum就是我为总分起的别名。

axios增删改查 增删改查功能描述_数据库_11

别名可以使用在字段上,作为最终显示给客户端看的表头字段
客户端看的表头字段:
可能与数据库表字段一样,也可能不一样
但是客户端(特别是以后Java程序连接MySQL作为客户端)来说,只能看到返回的表头字段

6.去重:DISTINCT

使用DISTINCT关键字对某列数据进行去重:

(由于我这里没有重复的,我这里再插入一个)

axios增删改查 增删改查功能描述_数据库_12

-- 数学的90重复了
select id,name,math from score;
+------+--------+------+
| id   | name   | math |
+------+--------+------+
|    1 | 图图   | 68.0 |
|    2 | 小美   | 90.0 |
|    3 | 壮壮   | 34.0 |
|    4 | 王子   | 99.0 |
|    5 | 小丽   | 90.0 |
+------+--------+------+
5 rows in set (0.00 sec)

-- 去重结果
select distinct math from score;
+------+
| math |
+------+
| 68.0 |
| 90.0 |
| 34.0 |
| 99.0 |
+------+
4 rows in set (0.00 sec)

可以跟多个字段
必须每个字段都相同,才能去重
和Java中根据多个属性重写hashcode和equals类似,必须重写的所有属性都一样,才表示是同样的对象

axios增删改查 增删改查功能描述_mysql_13

7.排序:ORDER BY

ASC 为升序(从小到大)
DECS为降序(从大到小)
– 默认为ASC

1.没有ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
2.NULL数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面
(查询同学姓名和数学成绩,按照数学成绩排序)

axios增删改查 增删改查功能描述_字段_14


3.使用

表达式及别名

排序:


(查询同学名字及总分,由高到低)


axios增删改查 增删改查功能描述_数据库_15


4.可以对多个字段进行排序,排序优先级随书写顺序(先按照第一个字段排序,如果第一个字段相同,再使用第二个字段排序,以此类推)


(查询同学名字,以及各门成绩,依次按数学降序,英语升序的方式显示)


axios增删改查 增删改查功能描述_数据库_16

Java中list<自定义类型>来排序,类似于mysql的order by排序
Java中实现方式:

1.自定义类型实现comparable接口,使用Collection.sort(list)
2.Collection.sort(list,new Comparator<>(){})

其中,第一种写法耦合性更高(代码侵入性)
不修改原有的代码(自定义类型)就没有侵入性,耦合性低

8.条件查询:WHERE

比较运算符:

运算符

说明

>,>=,<,<=

大于,大于等于,小于,小于等于

=

等于,NULL不安全,例如NULL=NULL的结果是NULL

<=>

等于,NULL安全,例如NULL<=>NULL的结果是TRUE(1)

!=,<>

不等于

BETWEEN a0 AND a1

范围匹配,[a0,a1],如果a0<=value<=a1,返回TRUE(1)

IN(option,…)

如果是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.WHERE条件可以使用表达式,但不能使用别名
2.AND的优先级高于OR,在同时使用时,需要使用小括号包裹优先执行的部分

基本查询:

axios增删改查 增删改查功能描述_mysql_17

axios增删改查 增删改查功能描述_字段_18


AND和OR:

axios增删改查 增删改查功能描述_axios增删改查_19


axios增删改查 增删改查功能描述_字段_20


范围查询:1.BETWEEN…AND…

axios增删改查 增删改查功能描述_mysql_21


这种使用and也可以实现:

axios增删改查 增删改查功能描述_sql_22


2.IN

axios增删改查 增删改查功能描述_mysql_23


使用OR也可以实现

axios增删改查 增删改查功能描述_mysql_24


模糊查询:LIKE

axios增删改查 增删改查功能描述_字段_25

常见的方式:
包含:%模糊匹配的内容%
以XXX开头:模糊匹配的内容%
以XXX结尾:%模糊匹配的内容

NULL的查询:IS [NOT] NULL

axios增删改查 增删改查功能描述_axios增删改查_26


axios增删改查 增删改查功能描述_sql_27

9.分页查询:LIMIT


-- 起始下标为0

-- 从0开始,筛选n条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从s开始,筛选n条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s,n;
-- 从s开始,筛选n条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

将表格分为三页,前两页2条记录,后一页3条记录:

axios增删改查 增删改查功能描述_mysql_28

四、修改(Update)

axios增删改查 增删改查功能描述_字段_29

五、删除(DELETE)

axios增删改查 增删改查功能描述_sql_30


axios增删改查 增删改查功能描述_sql_31


注意:修改和删除操作都是要非常谨慎的,特别是在公司生产环境建议把修改和删除sql转换成查询sql,看看是否事项修改或者想删除的,再执行修改和删除.