加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL数据库的的基本操作(增、删、改、查)

发布时间:2022-11-26 14:03:26 所属栏目:MySql教程 来源:未知
导读: 学习总结
一、数据查询
数据库管理系统的一个最主要的功能就是数据查询,数据查询不应只是简单查询数据库中存储的数据,还应该,根据需要对数据进行筛选,以及确定数据以什么样的格式显示。

学习总结

一、数据查询

数据库管理系统的一个最主要的功能就是数据查询,数据查询不应只是简单查询数据库中存储的数据,还应该,根据需要对数据进行筛选,以及确定数据以什么样的格式显示。

下面首先介绍如何使用SELECT语句查询数据表中的一列或多列数据、使用集合函数显示查询结果、连接查询、子查询以及使用正则表达式查询等。

SELECT语句的基本格式是:

SELECT

{ * | }

[

FROM ,........

[WHERE

[GROUP BY ]

[HAVING ]

[ORDER BY ]

[LIMIT [,]]

]

或者

SELECT [字段1,字段2,......,字段n]

FROM [表或视图]

WHERE [查询条件];

根据开发人员习惯将关键字使用大写,而数据列和表名使用小写,读者应该养成一个良好的习惯,这样更易于阅读和维护;

1、单表查询:指从一张表数据中查询所需的数据。

1.1、查询所有字段: SELECT * FROM 表名 ;

1.2、查询指定字段: SELECT 列名 FROM 表名 ;

1.3、查询指定记录:数据库中包含大量的数据,根据特殊要求,可能只需要查询表中的指定数据,即对数据进行过滤;

SELECT 字段1、字段2、,...字段n

FROM 表名

WHERE 查询条件 ;

1.4、带IN关键字的查询:用来查询满足指定范围内的条件的记录 ;

SELECT s_id, f_name

FROM fruits

WHERE s_id IN (101 , 102)

ORDER BY f_name ;

相反的,可以使用关键字NOT来检索不在条件范围内的记录 ;

1.5、带BETWEEN AND 的范围查询:用来查询某个范围内的值;

例如:查询价格在2.00元到10.20元之间的水果名称和价格 ;

SELECT f_name , f_price FROM fruits WHERE f_price BETWEEN 2.00 AND 10.20 ;

BETWEEN AND操作符前可以加关键字NOT,表示指定范围之外的值,如果字段值不满足指定范围内的值,则这些记录被返回

1.6、带LIKE的字符匹配查询:通配符是一种在SQL的WHERE条件子句中拥有特殊意思的字符 ;

1.6.1:百分号通配符‘%’,匹配任意长度的字符,甚至包括零字符

SELECT f_id, f_name

FROM fruits

WHERE f_name LIKE 'b%'

1.6.2 :下划线通配符 ‘_’,一次只能匹配任意一个字符

1.7、查询空值 :空值不同于0,也不同于空字符串。空值一般表示数据未知 、不适用或将在以后添加数据 ;

SELECT * FROM fruits WHERE f_price IS NULL ;

1.8、带AND的多条件查询 :通过AND增加查询的限制条件,这样可以使查询的结果更加精确 ;

SELECT f_id, f_price FROM fruits WHERE s_id='101' AND f_price >=5 ;

1.9、带 OR 的多条件查询 :使用OR操作符,表示只需要满足其中一个条件的记录即可返回 ;

1.10、查询结果不重复 :有时使用SELECT查询,会出现一些重复的s_id值数据库插入操作,有时,出于

对数据分析的要求,需要消除重复的记录值,可以使用 DISTINCT关键字MySQL消除重复的记录值。

SELECT DISTINCT 字段名 FROM 表名 ;

1.11、对查询结果进行排序:ORDER BY 字段名 ;指定反序方向:ASC (升序排序) DESC(降序排序)

多列排序 : 即首先对第一列字段排序,然后对第一列有相同的字段进行第二次排序 ;

1.12、分组查询 :是对数据 按照某个或多个字段进行分组,MySQL中使用GROUP BY 关键字对数据进行分组。

[GROUP BY 字段] [HAVING ]

GROUP BY 关键字通常和集合函数一起使用,例如:MAX() 、 MIN() 、 COUNT() 、SUM() 、AVG()。

例:SELECT s_id ,COUNT(*) AS Total FROM fruits GROUP BY s_id ;

例:根据s_id 对fruits表中的数据进行分组, 将每个供应商的水果名称显示出来,SQL 语句如下:

SELECT s_id ,GROUP_CONCAT(f_name) AS Names FROM fruits GROUP BY s_id ;

使用HAVING过滤分组:

例:根据s_id对fruits表中的数据进行分组,并显示水果种类大于1的分组信息,SQL语句如下:

SELECT s_id ,GROUP_CONCAT(f_name) AS Names

FROM fruits

GROUP BY s_id HAVING COUNT (f_name) >1 ;

注意: HAVING关键字与WHERE关键字都是用来过滤数据,两者有什么区别呢?其中重要一点是,HAVING在数据分组之后进行过滤来选择分组,而WHERE在分组之前用来选择记录。另外WHERE排除的记录不再包括在分组中。

在GROUOP BY 子句中使用 WITH ROLLUP:使用WITH ROLLUP 关键字之后,在所有查询出的分组记录之后增加一条记录,例:该记录计算查询出的所有记录的总和,即统计记录数量。

SELECT s_id , COUNT(*) AS Total

FROM fruits

GROUP BY s_id WITH ROLLUP ;

2、连接查询:通过连接查询出存放在多个表中的不同实体的信息。当两个或多个表中存在相同意义的字段时,便可以通过这些字段对不同的表进行连接查询 ;

内连接查询:

SELECT suppliers.s_id , s_name , f_name , f_price

FROM fruits , suppliers

WHERE fruits.s_id = suppliers . s_id ;

外连接查询:查询多个表中没有关联的行中数据

3、使用正则表达式查询:通常用来检索或替换那些符合某个模式的文本内容,根据指定的匹配模式匹配文本中符合要求的特殊字符串 ;

1、‘^’匹配文本的开始字符 ‘^b’匹配以字母b开头的客串

2、‘$’匹配文本的结束字符 ‘st$’匹配以st结尾的客串

3、‘.’ 匹配任何单个字符 ‘b.t’匹配任何b和t之间有一个字符的字符串

4、‘*’匹配零个或多个在它前面的字符 ‘f*n’匹配字符n前面有任意个字符f

5、‘+’匹配前面的字符1次或多次 ‘ba+’匹配以b开头后面紧跟至少有一个a

6、‘[^]’匹配不在括号中的任何字符 '[^abc]'匹配任何不包含a、b、或的字符串

7、‘字符串{n}’匹配前面的字符串至少n次 b{2}匹配2个或更多的b

8、 ' 字符串{n,m}' 匹配前面的字符串至少n次,至多m次。

9、 匹配包含指定的字符串的文本

10、[字符集合] 匹配字符集合中的任何一个字符 '[xz]' 匹配x或者z

二、数据插入 INSERT INTO

1、为表中所有字段插入数据:INSERT INTO table_name (column_list) VALUES (value_list) ;

table_name : 表名 ; column_list :指定要插入数据的哪些列 ; value_list :指定每个列对应插入的数据 ;

2、为表的指定字段插入数据:INSERT INTO person (name , age) VALUES ('xiaoxi',20) ;

3、将查询结果插入到表中:INSERT INTO table_name (column_list1 )

SELECT (column_list2) FROM table_name2

WHERE (condition)

三、更新数据 UPDATA SET

1、基本语法格式如下:

UPDATE table_name

SET column_name1 = value1 , column_name2=value2........column_namen=valuen

WHERE (condition) ;

四、删除数据 DELETE

1、基本语法格式如下:

DELETE FROM table_name [WHERE ] ;

例:删除表中id=11的记录

DELETE FROM person WHERE id=11 ;

首先对MySQL数据库进行了安装与配置,然后又数据库和表的创建,在这里通过功能丰富的数据库管理语句实现了数据的插入,查询,修改,删除等操作。这些基本的操作已经总结完。下面一篇将深入学习索引、存储过程和函数、视图、触发器。

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!