MySQL表的CURD操作方法有哪些
这篇文章主要介绍“MySQL表的CURD操作方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL表的CURD操作方法有哪些”文章能帮助大家解决问题。
一、SQL语句操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准,简称SQL。
- SQL通用语法1 . SQL语句可以单行或多行书写,以分号结尾。
2 . SQL语句可以使用空格/缩进来增强语句的可读性。
3 . MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
- 注释单行注释: – 注释内容 或者使用 # 注释内容 。
多行注释:/* 注释内容 */
- SQL语句分类同一个数据库中,不能有两个表的名字相同,表名和列名不能和SQL的关键词重复。
语法:
createtable表名(定义列1,定义列2,.......);列->变量名数据类型
举例:
mysql>createtableifnotexistsbook(->book_namevarchar(32)comment'图书名称',->book_authorvarchar(32)comment'图书作者',->book_pricedecimal(12,2)comment'图书价格',->book_categoryvarchar(12)comment'图书分类',->publish_datatimestamp->)charactersetutf8mb4;QueryOK,0rowsaffected(0.04sec)
语法:
show tables;
举例:
mysql> show tables;
+--------------------+
| Tables_in_mytestdb |
+--------------------+
| book |
+--------------------+
1 row in set (0.00 sec)
语法:
desc 表名;
举例:
- 删除表MySQL数据库中的表结构主要包含以下几种信息: 字段名称,字段类型,是否允许为空,索引类型。默认值,扩充信息
语法:
droptable表名
举例 :
mysql>desctest1;+-------+-------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|Extra|+-------+-------------+------+-----+---------+-------+|name|varchar(10)|YES||NULL|||age|int(11)|YES||NULL||+-------+-------------+------+-----+---------+-------+2rowsinset(0.02sec)mysql>droptabletest1;QueryOK,0rowsaffected(0.04sec)mysql>desctest1;ERROR1146(42S02):Table'mytestdb.test1'doesn'texist
语法:
rename table old_name to new_name;
举例:
mysql> rename table book to eBook;
Query OK, 0 rows affected (0.05 sec)
mysql> show tables;
+--------------------+
| Tables_in_mytestdb |
+--------------------+
| ebook |
+--------------------+
1 row in set (0.00 sec)
CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写
案例:
--创建一张图书表mysql>createtableifnotexistsbook(->book_namevarchar(32)comment'图书名称',->book_authorvarchar(32)comment'图书作者',->book_pricedecimal(12,2)comment'图书价格',->book_categoryvarchar(12)comment'图书分类',->publish_datatimestamp->)charactersetutf8mb4;
单行插入(全列)
insert into 表名 values(对应列的参数列表);
-- 一次插入一行
多行插入(全列)
insert into 表名 values(对应列的实参列表), (对应列的参数列表), (对应列的参数列表);
-- 一次插入多行 -- 一次插入多行
指定列插入
insert into 表名 (需要插入的列) values(对应列的参数列表);
-- 一次插入一行
insert into 表名 (需要插入的列) values(对应列的参数列表), (), ()....
-- 一次插入多行
values 后面( )中的内容, 个数和类型要和表名后面( )中指定的结构匹配.
未被指定的列会以默认值进行填充.
案例
# 单行输入
mysql>
insert into book values('计算机网络','谢希仁',45,'计算机类','2020-12-25 12:51:00');
Query OK, 1 row affected (0.01 sec)
#多行输入
mysql>
insert into book values('计算机组成原理','王峰',45,'硬件类','2020-12-12 12:00:00'),
-> ('微机原理','李华',97,'硬件类','2000-12-19 20:00:00');
Query OK, 2 rows affected (0.04 sec)
Records: 2 Duplicates: 0 Warnings: 0
#指定列插入
mysql>
insert into book(book_name,book_author,publish_data) values ('软件工程','张三','2020-05-06 12:00:00');
Query OK, 1 row affected (0.02 sec)
插入数据后的表如图所示:
- 查询(select语句)在MySQL当中 , 多条记录逐次插入的效率是要低于一次把多条纪录一起插入的 ,原因如下:
网络请求和响应时间开销 , 每次插入都会有一定的时间开销.
数据库服务器是把数据保存在硬盘上的 , IO操作时,操作的次数带来的影响大于数据量.
每一次sql操作,内部开启的事务也会占据一定的开销.
全列查询
语法
select*from表名--*表示通配符,可以匹配表中的所有列.
企业级别的数据库中慎用, 容易把I/O或者网络带宽吃满,如果有外边的用户客户端要通过宽带访问服务器时,服务器就无法做出正确的响应.
示例
select*frombook;
指定列查询
select列名...from表名
示例
mysql>selectbook_namefrombook;+----------------+|book_name|+----------------+|计算机网络||计算机组成原理||微机原理||软件工程|+----------------+4rowsinset(0.01sec)mysql>selectbook_author,book_pricefrombook;+-------------+------------+|book_author|book_price|+-------------+------------+|谢希仁|45.00||王峰|45.00||李华|97.00||张三|NULL|+-------------+------------+4rowsinset(0.00sec)
查询你字段为表达式
select字段或表达式,字段或表达式...from表名;
示例
--查询图书涨价10元后所有图书的名称作者和价格mysql>selectbook_name,book_author,book_price+10frombook;+----------------+-------------+-----------------+|book_name|book_author|book_price+10|+----------------+-------------+-----------------+|计算机网络|谢希仁|55.00||计算机组成原理|王峰|55.00||微机原理|李华|107.00||软件工程|张三|NULL|+----------------+-------------+-----------------+4rowsinset(0.00sec)
将表达式或者字段指定别名查询
mysql中支持给所查询的表达式取一个别名 , 使用 as 可以使查询结果更加直观 , 代码的可读性也会更强.
select列名或表达式as别名,...from表名;
示例
--将涨价20元后的图书价格取为别名newpricemysql>selectbook_name,book_author,book_price+20asnewpricefrombook;+----------------+-------------+----------+|book_name|book_author|newprice|+----------------+-------------+----------+|计算机网络|谢希仁|65.00||计算机组成原理|王峰|65.00||微机原理|李华|117.00||软件工程|张三|NULL|+----------------+-------------+----------+4rowsinset(0.00sec)
去重查询
selectdistinct列名from表名
示例
--book表中插入一条重复的book_name数据mysql>insertintobookvalues('计算机网络','张华',89,'计算机类','2020-11-2311:00:00');QueryOK,1rowaffected(0.00sec)mysql>selectbook_namefrombook;+----------------+|book_name|+----------------+|计算机网络||计算机组成原理||微机原理||软件工程||计算机网络|+----------------+5rowsinset(0.00sec)mysql>selectdistinctbook_namefrombook;+----------------+|book_name|+----------------+|计算机网络||计算机组成原理||微机原理||软件工程|+----------------+4rowsinset(0.00sec)
查询结果当中,没有了重复的book _ name 元素,达到了去重效果.
排序查询
select列名from表名orderby列名asc(升序)/desc(降序);#想要排序的列
示例
#按照书的价格升序进行排列mysql>selectbook_name,book_pricefrombookorderbybook_priceasc;+----------------+------------+|book_name|book_price|+----------------+------------+|软件工程|NULL||计算机网络|45.00||计算机组成原理|45.00||计算机网络|89.00||微机原理|97.00|+----------------+------------+5rowsinset(0.00sec)#按照书的价格降序进行排列mysql>selectbook_name,book_pricefrombookorderbybook_pricedesc;+----------------+------------+|book_name|book_price|+----------------+------------+|微机原理|97.00||计算机网络|89.00||计算机网络|45.00||计算机组成原理|45.00||软件工程|NULL|+----------------+------------+5rowsinset(0.00sec)
使用排序查询时 , 升序查询 asc 可以省略, 即默认为升序排列, null值一定为其中最小的.
可以对多个字段进行排序,优先级按照书写的顺序进行.
示例
#查询按照价格升序,年份降序selectname,price,agefrombookorderbypriceasc,agedesc;#查询按照总成绩进行降序selectname,english+math+chineseastotalfromgradeorderbytotaldesc;
条件查询
当我们使用查询时, 通常具有各种各样的前提条件 , 此时就需要使用条件查询来完成.
select列名..from表名..where+条件
比较运算符
逻辑运算符
注:
WHERE条件可以使用表达式,但不能使用别名。
AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分
案例
--查询图书价格低于50的图书作者和图书名称mysql>selectbook_name,book_authorfrombookwherebook_price<50;+----------------+-------------+|book_name|book_author|+----------------+-------------+|计算机网络|谢希仁||计算机组成原理|王峰|+----------------+-------------+2rowsinset(0.05sec)--查询图书价格等于97的图书作者mysql>selectbook_name,book_authorfrombookwherebook_price=97;+-----------+-------------+|book_name|book_author|+-----------+-------------+|微机原理|李华|+-----------+-------------+1rowinset(0.00sec)--查询图书价格在50-100之间的图书名称mysql>selectbook_namefrombookwherebook_pricebetween50and100;+------------+|book_name|+------------+|微机原理||计算机网络|+------------+2rowsinset(0.02sec)\--查询图书价格在此范围内的图书名称mysql>selectbook_namefrombookwherebook_pricein(12,45);+----------------+|book_name|+----------------+|计算机网络||计算机组成原理|+----------------+2rowsinset(0.00sec)
模糊查询
% 匹配任意多个(包括 0 个)字符
_ 匹配严格的一个字符
#查询姓张的作者的书本价格书名.mysql>selectbook_price,book_name,book_authorfrombookwherebook_authorlike'张%';+------------+------------+-------------+|book_price|book_name|book_author|+------------+------------+-------------+|NULL|软件工程|张三||89.00|计算机网络|张华|+------------+------------+-------------+2rowsinset(0.00sec)#查询前缀为'计算机'后缀为七个字的书籍名称mysql>selectbook_namefrombookwherebook_namelike'计算机____';+----------------+|book_name|+----------------+|计算机组成原理|+----------------+#查询前缀为'计算机'的书籍名称并去重mysql>selectdistinctbook_namefrombookwherebook_namelike'计算机%';+----------------+|book_name|+----------------+|计算机网络||计算机组成原理|+----------------+2rowsinset(0.00sec)
分页查询
分页查询即将查询出的结果 , 按页进行呈现,并不是一次性展现出来,这种模式就是分页查询, mysql当中使用limit来实现分页查询.
limit 子句当中接受一个或者两个参数 , 这两个参数的值为0 或者正整数
两个参数的limit子句的用法
select元素1,元素2from表名limitoffset,count;#offset参数指定要返回的第一行的偏移量。第一行的偏移量为0,而不是1。#count指定要返回的最大行数。
示例:
mysql>selectbook_authorfrombooklimit2,3;+-------------+|book_author|+-------------+|李华||张三||张华|+-------------+3rowsinset(0.02sec)#表示获取列表当中偏移量为2(表示从第3行开始),最大行数为3的作者名称
带有一个参数的limit子句的用法
select列名1.列名2from表名limitcount;#表示从结果集的开头返回的最大行数为count;#获取前count行的记录
等同于
select列名1,列名2from表名limit0,count;#第一行的偏移量为0
示例
mysql>selectbook_pricefrombooklimit5;+------------+|book_price|+------------+|45.00||45.00||97.00||NULL||89.00|+------------+5rowsinset(0.00sec)#获取表中前五行的图书价格,最大行数为5
limit 结合 order by 语句 和其他条件可以获取n个最大或者最小值
select book_name,book_price from book order by book_price desc limit 3;
#获取价格前三高的图书名称和图书价格
mysql> select book_price,book_name from book order by book_price desc limit 3;
+------------+------------+
| book_price | book_name |
+------------+------------+
| 97.00 | 微机原理 |
| 89.00 | 计算机网络 |
| 45.00 | 计算机网络 |
+------------+------------+
3 rows in set (0.01 sec)
使用limit 获取第n高个最大值
偏移量从
0
开始,所以要指定从n - 1 开始,然后取一行记录
#示例:获取价格第二高的图书名称mysql>selectbook_namefrombookorderbybook_pricedesclimit1,1;+------------+|book_name|+------------+|计算机网络|+------------+1rowinset(0.00sec)
MySQL当中使用update关键字来对数据进行修改 , 既可以修改单列又可以修改多列.
update表名set列名1=值,列名2=值...where限制条件下修改
SET
子句指定要修改的列和新值。要更新多个列,请使用以逗号分隔的列表。以字面值,表达式或子查询的形式在每列的赋值中来提供要设置的值。第三,使用WHERE子句中的条件指定要更新的行。
WHERE
子句是可选的。 如果省略WHERE
子句,则UPDATE
语句将更新表中的所有行。
示例:
#将书名为'软件工程'的图书价格修改为66元mysql>updatebooksetbook_price=66wherebook_name='软件工程';QueryOK,1rowaffected(0.05sec)Rowsmatched:1Changed:1Warnings:0mysql>selectbook_pricefrombookwherebook_name='软件工程';+------------|book_price|+------------+|66.00|+------------+1rowinset(0.00sec)#将所有的图书价格修改为原来的二倍mysql>updatebooksetbook_price=2*book_price;QueryOK,5rowsaffected(0.02sec)Rowsmatched:5Changed:5Warnings:0#更新成功mysql>selectbook_pricefrombook;+------------+|book_price|+------------+|90.00||90.00||194.00||132.00||178.00|+------------+5rowsinset(0.00sec)
要从表中删除数据,需要使用delete 语句, delete 语句的 用法如下
deletefrom表名where+条件
首先指定需要删除数据的表,其次使用条件指定where子句中删除的行记录, 如果行匹配条件,这些行记录将会删除.
WHERE
子句是可选的。如果省略WHERE
子句,DELETE
语句将删除表中的所有行 , 请注意,一旦删除数据,它就会永远消失。因此,在执行DELETE
语句之前,应该先备份数据库,以防万一要找回删除过的数据。
示例
#删除图书表中图书单价大于150的图书记录mysql>deletefrombookwherebook_price>150;QueryOK,2rowsaffected(0.01sec)mysql>selectbook_pricefrombook;+------------+|book_price|+------------+|90.00||90.00||132.00|+------------+3rowsinset(0.00sec)
MySQL中delete 语句也可以结合limit语句 和 order by 语句来控制删除的数量和条件
关于“MySQL表的CURD操作方法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。