欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql 学习笔记(5)-- 增删改查

程序员文章站 2022-07-14 08:50:04
...

FROM 菜鸟教程: https://www.runoob.com/mysql/mysql-insert-query.html

1. 插入数据

方式一:

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );

实例如下:

insert into runoob_tbl (runoob_title, runoob_author, submission_date)
VALUES
("myTest", "test", NOW());

PS: 实例中 NOW() 是一个 MySQL 函数,该函数返回日期和时间。

注意:

(1)如果数据是字符型,必须使用单引号或者双引号,如:"value"。

(2)如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写 SQL 语句,SQL 语句的命令结束符为分号 ;。

(3)规定插入的列名时,可以不用加反引号。

添加多列 实例如下:

方式二:

如果所有列都需要添加数据,可以不规定列进行数据添加 ????

实例:

insert into runoob_tbl
values
(null,"test2", "me", NOW());

如果添加过主键自增(PRINARY KEY AUTO_INCREMENT)第一列在增加数据的时候,可以写为0或者null,这样添加数据可以自增, 从而可以添加全部数据,而不用特意规定那几列添加数据。

添加多列 实例如下:

insert into runoob_tbl
values
(0, 'test4', 'test',now()),
(0, 'test5', 'test',now()),
(0, 'test6', 'test',now());

2. 查询数据

1. 查询某个表的所有记录

select * from 表名;

2. mysql 查询数据通用的语法

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件
  • SELECT 命令可以读取一条或者多条记录。
  • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  • 你可以使用 WHERE 语句来包含任何条件。
  • 你可以使用 LIMIT 属性来设定返回的记录数
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。(相当于mongodb中的skip)

2.1 WHERE 子句(筛选数据的条件)

1. select 语句 使用 where 子句从数据表中读取数据的通用语法

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

mysql 学习笔记(5)-- 增删改查

使用实例如下:

select * from runoob_tbl where runoob_author='test';

操作结果:

mysql 学习笔记(5)-- 增删改查

注意:使用 where 子句的字符串比较是不会区分大小写的,但可以通过 BINARY(或者小写的 binary) 关键字来设定where子句的字符串比较是区分大小写的。

使用实例如下:

(1)

select * from runoob_tbl where binary runoob_author='test';

操作结果:

mysql 学习笔记(5)-- 增删改查

(2)

select * from runoob_tbl where binary runoob_author='TEST';

操作结果:

mysql 学习笔记(5)-- 增删改查

2.2 like 子句 (like子句可以用来替代等号,通常用作模糊查询,等号则相当于精确查询)

like 的执行效率:LIKE运算符要对字段数据进行逐一扫描匹配,实际执行的效率比较差。

语法:

SELECT field1, field2,...fieldN 
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • 你可以在 WHERE 子句中指定任何条件。
  • 你可以在 WHERE 子句中使用LIKE子句。
  • 你可以使用LIKE子句代替等号 =
  • LIKE 通常与 % 一同使用,类似于一个元字符的搜索
  • 你可以使用 AND 或者 OR 指定一个或多个条件。
  • 你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。

***************************** like 匹配/模糊匹配,会与 % 和 _ 结合使用 *****************************

'%a'     // 以a结尾的数据
'a%'     // 以a开头的数据
'%a%'    // 含有a的数据
'_a_'    // 三位且中间字母是a的
'_a'     // 两位且结尾字母是a的
'a_'     // 两位且开头字母是a的

***************************** 在 where like 的条件查询中,SQL 提供了四种匹配方式,如下:*****************************

  1. %:表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
  2. _:表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。
  3. []:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个 ---- 使用的不是like, 而是regexp。
  4. [^] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
  5. 查询内容包含通配符时,由于通配符的缘故,导致我们查询特殊字符 “%”、“_”、“[” 的语句无法正常实现,而把特殊字符用 “[ ]” 括起便可正常查询。

实例1:

 select * from test where name like 'zhang%';

实例2:

select * from test where name regexp 'zhang[1-9]';

2.3 where / group by / having 

where数据库中常用的是where关键字,用于在初始表中筛选查询。它是一个约束声明,用于约束数据,在返回结果集之前起作用

group by对select查询出来的结果集按照某个字段或者表达式进行分组,获得一组组的集合,然后从每组中取出一个指定字段或者表达式的值。

having用于对where和group by查询出来的分组经行过滤,查出满足条件的分组结果。它是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作

执行顺序

select –>where –> group by–> having–>order by

3. 更新记录

语法:

UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
  • 你可以同时更新一个或多个字段。
  • 你可以在 WHERE 子句中指定任何条件。
  • 你可以在一个单独表中同时更新数据。

实例:

update runoob_tbl set runoob_author='M' where runoob_id=10;

4. 删除记录

语法: (delete from 表名 from where 删除条件)

DELETE FROM table_name [WHERE Clause]
  • 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除
  • 你可以在 WHERE 子句中指定任何条件
  • 您可以在单个表中一次性删除记录。

实例1:删除 runoob_tbl 数据表中 runoob_id为12的数据

delete from runoob_tbl where runoob_id=12;

实例2:删除 runoob_tbl 数据表中的所有数据

delete from runoob_tbl;

4.1 delete / drop / truncate 区别: 

delete,drop,truncate 都有删除表的作用,区别在于:

  •  1、delete 和 truncate 仅仅删除表数据drop 连表数据和表结构一起删除,打个比方,delete 是单杀,truncate 是团灭,drop 是把电脑摔了。
  •  2、delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚,打个比方,delete 是发微信说分手,后悔还可以撤回,truncate 和 drop 是直接扇耳光说滚,不能反悔。
  •  3、执行的速度上,drop>truncate>delete,打个比方,drop 是神舟火箭,truncate 是和谐号动车,delete 是自行车。