MySQL数据表的DML(数据操纵语言)

目录

1 insert语句

1.1 一次插入一条

 1.2 一次插入多条

2 replace语句

3 updata语句

4 truncate语句

eg1:truncate

eg2:delete

5 select语句

5.1 直接查询

5.2 select 语句中的算术表达式

5.3 给select出来的列名设置别名

5.4 select时可以使用distinct来去重

5.5 带有判断的查询 

#desc为降序 asc为升序

5.6 聚合函数对一组值进行运算,并返回单个值。也叫组合函数。

5.7 使用concat修改输出内容样式

5.8 select查询中 if case

5.9 group by 和 having用法

     ①group by

     ②having 子句

#HAVING与WHERE的区别:

5.10 联合查询

5.11 查询结果限定

6 多表查询

6.1 inner join

6.2 left join

6.3 right join

7 子查询


1 insert语句

1.1 一次插入一条

方法一:
insert 表名 values ('***','***',……)
eg:
mysql> insert student values(100,'白熊');
Query OK, 1 row affected (0.00 sec)

方法二:
insert 表名(列) values('***')
eg:
mysql> insert student(name) values('胖达');
Query OK, 1 row affected (0.00 sec)

方法三:
insert 表名 set 列名='***';
eg:
mysql> insert student set name='小白';
Query OK, 1 row affected (0.00 sec)

 1.2 一次插入多条

方法一:
insert 表名  values('***','***',……),('***','***',……),('***','***',……),……

方法二:
insert 表名(列名) values('***'),('***'),('***'),……
eg:
mysql> insert student(name) values('棕熊'),('查理'),('克洛伊');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

2 replace语句

可以修改一个或多个
replace 表名 values ('***','***','***',……)

eg1修改一个:
mysql> replace student values('101','小胖');
Query OK, 2 rows affected (0.00 sec)
eg2修改多个:
mysql> replace student values ('103','胖达'),('105','查理');
Query OK, 4 rows affected (0.00 sec)
Records: 2  Duplicates: 2  Warnings: 0

3 updata语句

update 表名 set 列名1=*** where 列名2=***;
/*前一个列名可以和后一个列名相同*/

mysql> update student set sno=200 where name='查理';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update student set sno=201 where sno=104;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

4 truncate语句

清空整个表
truncate table 表名;
delete from 表名;
​
使用delete删除某条或某几条
delete from 表名 where 判断条件;

eg1:truncate

eg2:delete

5 select语句

5.1 直接查询

select * from 表名;

select 列名1,列名2,…… from 表名;

 

5.2 select 语句中的算术表达式

先算乘除、后算加减、同级从左到右依次计算。

select 列名(/进行计算),列名(/进行计算),…… from 表名

5.3 给select出来的列名设置别名

eg:
mysql> select weig '体重',age '年龄' from test;
+--------+--------+
| 体重   | 年龄    |
+--------+--------+
|   80.0 |     10 |
|   75.0 |     10 |
+--------+--------+
2 rows in set (0.00 sec)

5.4 select时可以使用distinct来去重

示例如下

5.5 带有判断的查询 

select 列名1,列名2,……  from 表名 (where 判断条件) (order by 列名 排序方式)

#desc为降序 asc为升序

eg:
mysql> select distinct * from ruler order by length desc;
+--------+
| length |
+--------+
|   1000 |
|    222 |
|    101 |
|    100 |
|     20 |
+--------+
5 rows in set (0.01 sec)

5.6 聚合函数对一组值进行运算,并返回单个值。也叫组合函数。

COUNT(*|列名) 统计行数
AVG(数值类型列名) 平均值
SUM (数值类型列名) 求和
MAX(列名) 最大值
MIN(列名) 最小值
除了COUNT()以外,聚合函数都会忽略NULL值。

eg:
mysql> select avg(length),max(length),min(length),count(length),sum(length) from ruler;
+-------------+-------------+-------------+---------------+-------------+
| avg(length) | max(length) | min(length) | count(length) | sum(length) |
+-------------+-------------+-------------+---------------+-------------+
|    223.2857 |        1000 |          20 |             7 |        1563 |
+-------------+-------------+-------------+---------------+-------------+
1 row in set (0.00 sec)

5.7 使用concat修改输出内容样式

mysql> select concat('<体重',weight,'>') as '体重' from test2;
+--------------+
| 体重         |
+--------------+
| <体重50.0>   |
| <体重53.0>   |
| <体重55.0>   |
| <体重60.0>   |
+--------------+

5.8 select查询中 if case

IF 判断,流程控制 ​

IFNULL 判断是否为空 ​

CASE 搜索语句

示例如下

5.9 group by 和 having用法

     ①group by

group by 子句的真正作用在于与各种聚合函数配合使用。它用来对查询出来的数据进行分组。

eg:如下是按照num分组,得出不同num的人数。

eg:如下是相同num有哪些人  

     ②having 子句

用来对分组后的结果再进行条件过滤

eg:如下是相同num有哪些人且人数大于2

eg:如下是num相同且人数小于2按人数降序排列

#HAVING与WHERE的区别:

WHERE是在分组前进行条件过滤, HAVING子句是在分组后进行条件过滤,WHERE子句中不能使用聚合函数, HAVING子句可以使用聚合函数。

5.10 联合查询

UNION 去重复 ​
UNION ALL 不去重复

5.11 查询结果限定

limit x————/*检索前x个记录*/
​
limit x,y————/*检索从x+1开始y个记录*/

6 多表查询

6.1 inner join

SELECT 列名1,列名2... FROM 表1 INNER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;
​
方法一
​
mysql> select e.name,d.depName from Employee e,department d where e.depno=d.depno;
​
方法二:
​
mysql> select e.name,d.depName from Employee e inner join department d on  e.depno=d.depno;

 

6.2 left join

SELECT 列名1 FROM 表1 LEFT OUTER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;

6.3 right join

SELECT 列名1 FROM 表1 RIGHT OUTER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;

7 子查询

子查询是将一个查询语句嵌套在另一个查询语句中。内部嵌套其他select语句的查询,称为外查询或主查询。

eg:比如这里要查询zip数值最大的员工的所有信息可以使用嵌套。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值