DML和DQL语言学习

1、DML语言

DML是一门数据操作语言,用于操作数据库对象中所包含的数据,包含:INSERT (添加数据语句)、UPDATE (更新数据语句)、DELETE (删除数据语句)。

1.1、添加数据

insert 命令

基本语法:

INSERT INTO 表名[(字段1,字段2,字段3,...)] VALUES('值1','值2','值3')

! [] 表示可选,() 表示必选

注意:

  • 字段或值之间用英文逗号隔开
  • VALUES(‘值1’,‘值2’,‘值3’),添加的值务必与表结构,数据列,顺序相对应,且数量一致
  • 可同时插入多条数据 , values 后用英文逗号隔开

1.2、修改数据

update 命令

基本语法:

UPDATE 表名 SET 字段名=修改的值 [,字段名2=修改的值2,...] [WHERE 条件];

注意:

  • 修改的值可以为变量、具体值、表达式或者嵌套的select结果
  • where条件子句表示筛选条件,不知道默认为修改字段的所有值

1.3、删除数据

delete 命令

基本语法:

DELETE FROM 表名 [WHERE condition]

! condition为筛选条件 , 如不指定则删除该表的所有列数据

truncate 命令

基本语法:

TRUNCATE [TABLE] 表名

**!**truncate 命令用于完全清空表数据 , 但表结构 , 索引 , 约束等不变

两者区别

  • 相同 : 都能删除数据 , 不删除表结构 , 但TRUNCATE速度更快

  • 不同 :

    • 使用TRUNCATE TABLE 重新设置AUTO_INCREMENT计数器
    • 使用TRUNCATE TABLE不会对事务有影响

2、DQL语言

DQL是一门数据查询语言 ,可以实现数据库数据的查询、简单的单表查询、多表的复杂查询和嵌套查询,是数据库语言中最核心、最重要、使用频率最高的语句。

主要语句语法结构(select语句)

SELECT [ALL | DISTINCT]
{* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]]}
FROM table_name [as table_alias]
  [left | right | inner join table_name2] 
  [WHERE ...]  
  [GROUP BY ...]  
  [HAVING]  
  [ORDER BY ...]  
  [LIMIT {[offset,]row_count | row_countOFFSET offset}]

注意:

  • [ALL | DISTINCT],ALL 为默认(即查询全部),DISTINCT为去重查询

  • as 为取别名,可作用于表和字段

  • left | right | inner join ,为联合查询

  • WHERE,为指定满足的条件

  • GROUP BY,指定结果按照哪几个字段来分组

  • HAVING,过滤分组须满足的条件

  • ORDER BY,排序,分ASC升序和DESC降序

  • LIMIT ,指定查询记录(分页)

  • ! [ ] 括号代表可选的 , { } 括号代表必选得

  • 上面语句顺序不能乱放

2.1、连接查询

使用条件:如需要多张数据表的数据进行查询,则可通过连接运算符实现多个查询

join 对比

七种Join:

DML和DQL语言学习_第1张图片

常用三种join对比:

DML和DQL语言学习_第2张图片

自连接

数据表与自身进行连接

例如:从一个包含栏目ID , 栏目名称和父栏目ID的表中查询父栏目名称和其他子栏目名称

创建一个表:DML和DQL语言学习_第3张图片

-- 把一张表看成两张一模一样的表,然后将这两张表连接查询(自连接)
SELECT a.categoryName AS '父栏目',b.categoryName AS '子栏目'
FROM category AS a,category AS b
WHERE a.`categoryid`=b.`pid`

得到结果:在这里插入图片描述

2.2、排序和分页

order by 排序

基本语法:

ORDER BY 字段名 [DESC|ASC]

注意:默认按照ASC升序对记录进行排序,DESC为降序排序

limit 分页

基本语法:

LIMIT [offset,] rows | rows OFFSET offset

! 第一个参数指定第一个返回记录行的偏移量(索引),第二个参数指定返回记录行的最大数目(显示的个数)。初始记录行的偏移量是 0(而不是 1)

推导:
   第一页 : limit 0,5
   第二页 : limit 5,5
   第三页 : limit 10,5
   ......
   第N页 : limit (pageNo-1)*pageSzie,pageSzie
   [pageNo:页码,pageSize:单页面显示条数]

2.3、子查询

概述

  • 在查询语句中的WHERE条件子句中,又嵌套了另一个查询语句;

  • 嵌套查询可由多个子查询组成,求解的方式是由里及外;

  • 子查询返回的结果一般都是集合,故而建议使用IN关键字;

例:

-- 在student、result和subject三表中查询subjectname为'高等数学-2',Result不少于80的studentno,studentname
SELECT studentno,studentname FROM student WHERE studentno IN(
   SELECT studentno FROM result WHERE StudentResult>=80 AND subjectno=(
       SELECT subjectno FROM subject WHERE subjectname = '高等数学-2'
  )
)

3、where 条件子句(补充)

用于筛选数据,检索数据表中符合条件的记录

搜索条件为运算符

DML和DQL语言学习_第4张图片

**!**注意 ‘<> ’有另一个写法‘ != ’ 。

搜索条件为逻辑操作符

DML和DQL语言学习_第5张图片

! 可由一个或多个逻辑表达式组成 , 结果一般为真或假.

搜索条件为比较操作符

DML和DQL语言学习_第6张图片

! 相同数据类型的数据之间才能进行比较.


学习资源路径

你可能感兴趣的:(mysql,学习,编程,学习,数据库,sql)