DML操作表和DQL查询表(学会并使用数据库day2)

这篇具有很好参考价值的文章主要介绍了DML操作表和DQL查询表(学会并使用数据库day2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

DML操作表中数据

DML操作是用于对表中的记录进行增删改操作。

1 .插入操作

# 格式
INSERT [INTO] 表名 [字段名] VALUES (字段值);

解析:

INSERT INTO 表名:表示往哪张表中添加数据

(字段名 1, 字段名 2, …):要给哪些字段设置值

VALUES (值 1, 值 2, …):设置具体的值

  1. 插入全部字段–方法一(所有的字段名都写出来)
# 格式
INSERT INTO 表名 (字段名 1, 字段名 2, 字段名 3…) VALUES (值 1, 值 2, 值 3);
# demo
insert into employee (id,name,birthday) values (1, '孙悟空', '1999-12-09');
  1. 插入全部字段–方法二(不写字段名)
# 格式
INSERT INTO 表名 VALUES (值 1, 值 2, 值 3);
# demo
insert into employee values (2, '猪八戒', '1999-12-10');
  1. 插入部分数据
# 格式
INSERT INTO 表名 (字段名 1, 字段名 2, ...) VALUES (值 1, 值 2, ...);
# demo
insert into employee (id,name) values (1, '孙悟空');

注意

  1. 没有添加数据的字段会使用 NULL;
  2. 插入的数据应与字段的数据类型相同;
  3. 数据的大小应在列的规定范围内,例如:不能将一个长度为 80 的字符串加入到长度为 40 的列中;
  4. 在 values 中列出的数据位置必须与被加入的列的排列位置相对应。在 mysql 中可以使用 value,但
    不建议使用,功能与 values 相同;
  5. 字符和日期型数据应包含在单引号中,MySQL 中也可以使用双引号;
  6. 不指定列或使用 null,表示插入空值。

2.表复制的相关操作

如何将一张已经存在的表中的数据复制到另一张表中。

首先创建一张表employee1

create table employee1 like employee;

再将表employee中的所有列内容复制到employee1中:

# 格式
INSERT INTO 表名 1 SELECT * FROM 表名 2;
# demo
insert into employee1 select * from employee;

如何将表employee中的部分列内容复制到employee2中;

首先创建一张表employee2

 create table employee2 like employee;

再将表employee中的部分列内容复制到employee2中:

# 格式
INSERT INTO 表名 1(列 1, 列 2) SELECT 列 1, 列 2 FROM student;
# demo
insert into employee2(name,age) select name,age from employee;

3.更新表中的数据

# 格式
UPDATE 表名 SET 列名=值 [WHERE 条件表达式]
解析:
UPDATE 表名:需要更新的表名
SET:修改的列值
WHERE:符合条件的记录才更新
  1. 不带条件修改(会修改所有字段的值)
# 格式
UPDATE 表名 SET 字段名=值;
# demo
update employee set name ='小明';
  1. 带条件修改(修改满足条件的部分列值)

    # 格式
    UPDATE 表名 SET 字段名=值 WHERE 字段名=值;
    # demo
    update employee set name ='john' where id=2;
    

    4.删除表中的数据

# 格式
DELETE FROM 表名 [WHERE 条件表达式]
解析:
DELETE from 表名:从哪个表中删除记录
WHERE: 符合条件的记录才删除
  1. 不带条件删除数据(会删除所有记录)
# 格式
DELETE FROM 表名;
# demo
delete from employee;
  1. 带条件删除数据
# 格式
DELETE FROM 表名 WHERE 字段名=值;
# demo
delete from employee where name ='小明';

3.使用truncate进行删除记录

# 格式
TRUNCATE TABLE 表名;
 TRUNCATE TABLE employee;

注意

如果使用truncate进行删除记录,相当于删除表的结构,再创建一张表

truncate和delete的区别

  1. truncate是用于清空表中的数据;delete不加条件是删除表中数据;

  2. truncate清空表中数据后,数据的id会从1开始,delete不是从一开始还是在之前的末尾插入记录;

DQL查询表中记录

1、基础查询

语法:
select 查询列表 from 表名
特点:
①查询列表可以是:表中的字段、常量值、表达式、函数
②查询的结果是一个虚拟的表格
操作:
①查询表中的单个字段

SELECT name FROM stu;

②查询表中多个字段

SELECT stu_number,name FROM stu;

③查询表中的全部字段(也可以把每个字段一个一个列出来查询)

SELECT * FROM stu;

④查询常量值

SELECT 100;
SELECT 'john';
SELECT 100%100;
SELECT version();

2、取别名

使用AS
①SELECT 100 AS 结果;
使用空格和字段名隔开
①SELECT stu_number ‘学号’,name ‘姓名’ from stu
好处:

①便于理解
②如果要查询的字段有重复的情况,使用别名可以区分
注意:如果取的别名有特殊符号或者是数据库关键字,比如OUT,空格,#号等,需要给别名加上引号。

3、去重

在查询语句中,select后面加上distinct。

SELECT  DISTINCT * FROM employee ;

4、+号的作用

作用:仅仅只有做加法运算功能。

例如:

①两个操作数都是数值型,做加法运算

SELECT 122+20;

②其中一个是字符型,会试图将字符型数值转换成数值型,成功就做加法运算,以下结果为242

SELECT "222"+20;

③其中一个是字符型,会试图将字符型数值转换成数值型,失败就会将字符型数值转换成0,在做加法运算,以下结果为20

SELECT "john"+20;

④只有有一个字符为null,结果就是null

SELECT NULL+20;

如果要把两个字符型数值连在一起,就要使用concat函数。

stu_number,name分别是stu表中的字符型字段名

SELECT CONCAT(stu_number,`name`) from stu;

5、条件查询

语法:select 查询列表 from 表名 where 条件

分类:

①按条件表达式筛选

> < = != <> >= <=

<>:这个符号的意思是不等于的意思,又大于,又小于自然是不等于的意思。

例如:

SELECT * FROM stu WHERE age > 22;

②按逻辑表达式筛选

&& || !

and or not

例如:

SELECT * FROM stu WHERE age <> 22 AND `name` <> '小红';

③模糊查询(条件查询的一种)

like,between and,in,is null,<=>

Like:

例如:

SELECT * FROM stu WHERE `name` LIKE '%红%';

注意:like一般和通配符一起使用,常用通配符

%:代表0到多个字符,包括0

_ :代表任意单个字符

特殊情况:查询带有_的字段,需要转义

SELECT * FROM stu WHERE `name` LIKE '\_%';

between and:等价于大于等于第一个值,小于等于第二个值

SELECT * FROM stu WHERE age between 22 AND 23;

注意:可以提高语句的简洁度;包含临界点;临界值不能颠倒;

in:判断某个字段的值是否属于in列表中的某一项

例如:

SELECT age,name FROM stu WHERE stu_number in(003,002);

注意:可以提高语句的简洁度;in列表的值类型必须统一或兼容;不支持通配符

is null:为空的字段值

例如:

SELECT age,name FROM stu WHERE money IS NULL;	

6、排序查询

语法:select 查询列表 from 表名 [where 条件] order by 排序列表 [ASC|DESC]

基本排序, ASC是从小到大的排序,DESC是从大到小的排序

SELECT age FROM stu ORDER BY age ASC;

按条件排序

SELECT age FROM stu WHERE age > 22 ORDER BY age ASC;

按多个字段排序,姓名长度是按照正序排列的,age是按照逆序排列的

SELECT LENGTH(`name`) 姓名长度,age FROM stu ORDER BY 姓名长度 ASC,age DESC;

特点

①ASC表示升序;DESC表示降序;不写默认是ASC

②ORDER BY子句中支持单个字段,多个字段,函数,别名等

③ORDER BY一般是放在查询语句的最后,limit子句除外

7、组合排序

同时对多个字段进行排序,如果第 1 个字段相等,则按第 2 个字段排序,依次类推。

在 SQL 中,你可以使用 ORDER BY 子句来同时对多个字段进行排序。如果第一个字段相等,则按照第二个字段排序。

格式:
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 1 [ASC|DESC], 字段名 2 [ASC|DESC];
例如:

SELECT column1, column2, column3
FROM table_name
ORDER BY column1, column2;

​ 在上面的查询语句中,table_name 是你要查询的表名,column1column2 是你要排序的字段名。通过在 ORDER BY 子句中指定多个字段,你可以实现按照这些字段的顺序进行排序。

8、分组查询

格式:SELECT 字段名 FROM 表名 group by 字段名 [having] 条件

例如:

SELECT sex FROM stu GROUP BY sex;
SELECT sex FROM stu GROUP BY sex HAVING sex<>'女';

注意:

having 与 where 的区别:

①对查询结果进行分组前,将不符合 where 条件的行去掉,即在分组之前过滤数据,即先过滤再分组;

②where 后面不可以使用聚合函数;

③having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,即先分组再过滤;

④having 后面可以使用聚合函数。文章来源地址https://www.toymoban.com/news/detail-607072.html

到了这里,关于DML操作表和DQL查询表(学会并使用数据库day2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Oracle查询表字段名并拼接

            在数据库使用中,我们常常需要,获取一张表的全部字段,那该如何查询呢?         只需将引号中的table_name,替换为自己的表名,就可查出全部字段,并已多行返回。         只需将引号中的table_name,替换为自己的表名,就可查出全部字段,并用逗号拼接

    2024年02月12日
    浏览(15)
  • MySql中怎样查询表是否被锁

    查看表被锁状态 查看造成死锁的sql语句 查询进程 解锁(删除进程) 查看正在执行的事务 查看正在锁的事物 查看等待锁的事物 出现的现象 页面出现502错误,数据库CPU持续飙升,大量事务堆积未提交成功(事务一直处于阻塞阶段) 查看阻塞事务列表,发现其中有锁表现象。 排

    2024年02月03日
    浏览(11)
  • python赋值运算符,及查询表

    python的赋值运算符也是十分重要的,因为软件程序的基本工作就是接收数据,处理数据存储数据,然后响应请求发送数据,这整个过程通常都需要通过计算机指令将各种各样的值赋值给变量,来存储数据,以供计算机处理。 那么,在python当中,我们是如何将数据赋值给变量的

    2024年02月07日
    浏览(12)
  • Python逻辑运算符、身份运算符查询表

    python的逻辑运算符,在python开发的条件判断中非常有用,这其中涉及到的数学非常基础,就是一个集合的并集、交集、补集的运算。具体的规则如下表: 运算符 描述 实例 and python中布尔“与”,就是求集合运算中的交集 a and b #如果a为False,b不管是True还是False,输出False,两

    2024年02月06日
    浏览(8)
  • 【clickhouse笔记】 查询表或列的磁盘占用大小

    通过系统表 system.parts 我们可以查询MergeTree表的磁盘占用信息,而通过 system_part_columns 表可以查询具体字段的磁盘占用信息 示例:以下SQL 查询所有表的 磁盘压缩大小 和 原始未压缩磁盘占用、压缩比等信息 示例:以下SQL 查询所有表的所有字段的磁盘压缩大小 和 原始未压缩磁盘

    2024年02月21日
    浏览(9)
  • hive、pg库,建表语句及查询表结构语句

    hive、pg库,建表语句及查询表结构语句

    hive 建表语句 hive 查询表结构语句   pg库建表语句

    2024年02月11日
    浏览(10)
  • SQL 查询表中某列字段相同的重复数据的方法

    SQL 查询表中某列字段相同的重复数据的方法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 在数据库查询中,我们经常需要查找表中某列中重复的数据。本文将介绍如何使用 SQL 查询语句来查找表中某列字

    2024年02月15日
    浏览(9)
  • mysql中desc的两种用法---1、查询表结构和降序

    mysql中desc的两种用法---1、查询表结构和降序

    1、查询表结构 语法: desc table_name; PS:此处desc是describe的缩写,用法: desc 表名/查询语句 2、降序 语法: select * from 表 order by 字段 desc select ename,sal from emp order by sal desc; 手动指定按照薪水由大到小排序(降序desc) select ename,sal from emp order by sal asc; 手动指定按照薪水

    2024年02月13日
    浏览(17)
  • 一百八十八、Hive——HiveSQL查询表中的日期是星期几(亲测,附截图)

    一百八十八、Hive——HiveSQL查询表中的日期是星期几(亲测,附截图)

    指标需要查询以工作日和周末维度的数据统计,因此需要根据数据的日期判断这一天属于星期几,周一到周五为工作日,周六到周日为周末 今天是2023年9月26日,周二! 2023-05-02为任意一天的周二,不是选周一或者周日,这个可以自行验证!

    2024年02月07日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包