• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

MySQL学习(二)

开发技术 开发技术 2周前 (05-01) 4次浏览

MySQL学习(二)

DML语言

数据库意义 : 数据存储、数据管理

管理数据库数据方法:

DML语言 :数据操作语言

  • 用于操作数据库对象中所包含的数据

  • 包括 :

    • INSERT (添加数据语句)
    • UPDATE (更新数据语句)
    • DELETE (删除数据语句)

添加数据INSERT

语法:

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

注意 :

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

修改数据UPDATE

语法:

UPDATE 表名 SET column_name=value [,column_name2=value2,...] [WHERE condition];

注意 :

  • column_name 为要更改的数据列
  • value 为修改后的数据 , 可以为变量 , 具体指 , 表达式或者嵌套的SELECT结果
  • condition 为筛选条件 , 如不指定则修改该表的所有列数据

删除数据DELETE

语法:

DELETE FROM 表名 [WHERE condition];

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

TRUNCATE命令

作用:用于完全清空表数据 , 但表结构 , 索引 , 约束等不变 ;

语法:

TRUNCATE [TABLE] table_name;

注意:区别于DELETE命令

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

  • 不同 :

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

WHERE条件子句

语法(非整句):

[WHERE condition1 [AND [OR]] condition2.....
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件。
  • 你可以在 WHERE 子句中指定任何条件。
  • 你可以使用 AND 或者 OR 指定一个或多个条件。
  • WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
  • WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。

DQL语言

DQL( Data Query Language 数据查询语言 )

  • 查询数据库数据 , 如SELECT语句
  • 简单的单表查询或多表的复杂查询和嵌套查询
  • 是数据库语言中最核心,最重要的语句
  • 使用频率最高的语句

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}];  -- 指定查询的记录从哪条至哪条

注意 : [ ] 括号代表可选的, { }括号代表必选

AS 子句作为别名

作用:

  • 可给数据列取一个新别名
  • 可给表取一个新别名
  • 可把经计算或总结的结果用另一个新名称来代替

DISTINCT关键字的使用

作用 : 去掉SELECT查询返回的记录结果中重复的记录 ( 返回所有列的值都相同 ) , 只返回一条

使用表达式的列

数据库中的表达式 : 一般由文本值 , 列值 , NULL , 函数和操作符等组成

-- selcet查询中可以使用表达式
SELECT @@auto_increment_increment; -- 查询自增步长
SELECT VERSION(); -- 查询版本号
SELECT 100*3-1 AS 计算结果; -- 表达式

-- 学员考试成绩集体提分一分查看
SELECT studentno,StudentResult+1 AS '提分后' FROM result;
  • SELECT语句返回结果列中使用
  • SELECT语句中的ORDER BY , HAVING等子句中使用
  • DML语句中的 where 条件语句中使用表达式
  • 避免SQL返回结果中包含 ‘ . ‘ , ‘ * ‘ 和括号等干扰开发语言程序

WHERE条件语句

作用:用于检索数据表中 符合条件 的记录

搜索条件可由一个或多个逻辑表达式组成 , 结果一般为真或假

LIKE模糊查询

like模糊查询是mysql中常用的查询语句,具体用法如下:

LIKE 通配符如

  • “*” 表示所有的,全部的
  • “_”下划线:通配任意一个字符
  • “%”百分号:通配任意多个字符

除LIKE以外,还有BETWEEN、AND、IN、NULL的用法

连接查询JOIN

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

  1. 内连接 inner join
    查询两个表中的结果集中的交集

  2. 外连接 outer join

    • 左外连接 left join

      (以左表作为基准,右边表来一一匹配,匹配不上的,返回左表的记录,右表以NULL填充)

    • 右外连接 right join

      (以右表作为基准,左边表来一一匹配,匹配不上的,返回右表的记录,左表以NULL填充)

语法:

select * from 表名 [连接方式] join 表名 [on 连接条件] where ...;

自连接

自连接就是数据表与自身进行连接。

核心思想:把一张表看成两张一模一样的表,然后将这两张表连接查询(自连接)

排序和分页

排序

语法 : ORDER BY
ORDER BY 语句用于根据指定的列对结果集进行排序
ORDER BY 语句默认按照ASC升序对记录进行排序
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

分页

语法 : SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset
好处 : (用户体验,网络传输,查询压力)

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

子查询

什么是子查询?
在查询语句中的WHERE条件子句中,又嵌套了另一个查询语句;
嵌套查询可由多个子查询组成,求解的方式是由里及外;
子查询返回的结果一般都是集合,故而建议使用IN关键字;


程序员灯塔
转载请注明原文链接:MySQL学习(二)
喜欢 (0)