当前位置:   article > 正文

【mysql之基础篇】mysql基本操作详解版_mysql 应用文章介绍

mysql 应用文章介绍

欢迎来到博客大学堂,软件工程申请出战

这篇文章基于文档级别进行编写,可以让你体会到不一般的SQL语句的魅力所在...

制作不易,觉得不错请点赞加收藏哟 !!!

目录

1.数据库

1.1  建数据库的基本语法

1.2  drop 命令删除数据库

1.3  选择数据库

2.数据表

2.1  创建数据表基本语法

2.2  删除数据表

2.3  alter

2.4  创建表的同时创建索引

3.数据的操作(CRUD)

3.1  插入数据

3.2  查询数据

3.3  更新数据

3.4  删除数据

3.5  like子句(使用百分号 %字符来表示任意字符,如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的)

3.6  ORDER BY(排序) 语句(如果有多个排序条件,只有前面的排序之后还是相同,才会运用后面的排序机制)

3.7  GROUP BY(分组) + HAVING语句

3.8  查询语句的条件顺序

4.多表查询

4.1  笛卡尔积

4.2  连接(内连接、左连接、右连接)

5.外键

5.1  定义

5.2  作用

5.3  语法

5.4  外键的条件

5.5  举例

6.分页查询

6.1  语法

6.2  公式

7.存储引擎

7.1  定义

7.2  介绍三个常见的存储引擎

7.3  总结

8.数据库相关函数

8.1  字符串函数

8.2  数值函数

8.3  日期函数

8.4  流程函数

9.DCL

9.1  管理用户

9.2  权限控制


【与众不同】详细讲解过滤器和拦截器-CSDN博客文章浏览阅读1k次,点赞19次,收藏13次。Filter表示过滤器,是 JavaWeb三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能使用了过滤器之后,要想访问web服务器上的资源,必须先经过滤器,过滤器处理完毕之后,才可以访问对应的资源。过滤器一般完成一些通用的操作,比如:登录校验、统一编码处理、敏感字符处理等。是一种动态拦截方法调用的机制,类似于过滤器。拦截器是Spring框架中提供的,用来动态拦截控制器方法的执行。https://blog.csdn.net/2301_77358195/article/details/137073280

麒麟而非淇淋,不是干货不制作https://blog.csdn.net/2301_77358195

1.数据库

1.1  建数据库的基本语法


-- IF EXISTS 是一个可选的子句,表示如果数据库存在才执行删除操作,避免因为表不存在而引发错误
 

  1. CREATE DATABASE [IF NOT EXISTS] database_name    
  2.   [CHARACTER SET charset_name]
  3.   [COLLATE collation_name];


1.2  drop 命令删除数据库

  1. DROP DATABASE <database_name>;              -- 直接删除数据库,不检查是否存在
  2. DROP DATABASE [IF EXISTS] <database_name>;  -- 检查是否存在,如果存在才删除


1.3  选择数据库

USE database_name;

2.数据表

2.1  创建数据表基本语法

  1. CREATE TABLE table_name (
  2.     column1 数据类型  [约束]    [默认],
  3.     column2 数据类型  [约束]    [默认],
  4.     ...
  5.     [表间的约束,eg:外键]
  6.     [主键,eg:primary key(column1,column2)]
  7. )[引擎 eg:engine=innodb] [字符集 eg:character set utf8 or default charset=utf8] [校验规则 eg:collate  utf8mb4_general_ci];

2.2  删除数据表

  1. DROP TABLE table_name ;    -- 直接删除表,不检查是否存在
  2. DROP TABLE [IF EXISTS] table_name;  -- 检查是否存在,如果存在才删除

2.3  alter

  • 修改表名
ALTER TABLE <原表名> RENAME [TO] <新表名>
  • 改字段的数据类型
  • 可以修改数据类型或者约束
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
  • 添加字段
ALTER TABLE <表名> ADD <字段名> <数据类型>
  • 删除字段
ALTER TABLE <表名> DROP <字段名>
  • 添加外键约束
  1. ALTER TABLE <表名> ADD [CONSTRAINT <约束名>] FOREIGN KEY (<外键字段名>references
  2. <对应主键所在表><对应主键字段名>

2.4  创建表的同时创建索引

  1. CREATE TABLE 表名(字段名 数据类型 [完整性约束条件],
  2. [UNIQUE | FULLTEXT | SPATIAL] INDEX | KEY
  3. [索引名](字段名1 [(长度)] [ASC | DESC])
  4. );

UNIQUE:可选。表示索引为唯一性索引。

FULLTEXT;可选。表示索引为全文索引。

SPATIAL:可选。表示索引为空间索引。

长度:可选。指索引的长度,必须是字符串类型才可以使用。


3.数据的操作(CRUD)

3.1  插入数据

  1. INSERT INTO table_name (column1, column2, column3, ...)
  2. VALUES (value1, value2, value3, ...);
  3. 插入多条数据
  4. INSERT INTO table_name (column1, column2, column3, ...)
  5. VALUES (value1, value2, value3, ...),(value1, value2, value3, ...),(value1, value2, value3, ...);

3.2  查询数据


 

  1. SELECT [all|distinct] column1 [as '别名'], column2 [as '别名'], ...
  2. FROM table_name [as '别名']
  3. [WHERE condition]
  4. [ORDER BY column_name [ASC | DESC]]
  5. [LIMIT number];

参数说明:

column1, column2, ... 是你想要选择的列的名称,如果使用 * 表示选择所有列。
table_name 是你要从中查询数据的表的名称。
WHERE condition 是一个可选的子句,用于指定过滤条件,只返回符合条件的行。
ORDER BY column_name [ASC | DESC] 是一个可选的子句,用于指定结果集的排序顺序,默认是升序(ASC)。
LIMIT number 是一个可选的子句,用于限制返回的行数。


3.3  更新数据

  1. UPDATE table_name
  2. SET column1 = value1, column2 = value2, ...
  3. WHERE condition;


3.4  删除数据

  1. DELETE FROM table_name
  2. WHERE condition;


3.5  like子句(使用百分号 %字符来表示任意字符,如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的)

  1. SELECT column1, column2, ...
  2. FROM table_name
  3. WHERE column_name LIKE pattern;

参数说明:

column_name 是你要应用 LIKE 子句的列的名称。
pattern 是用于匹配的模式,可以包含通配符。


3.6  ORDER BY(排序) 语句(如果有多个排序条件,只有前面的排序之后还是相同,才会运用后面的排序机制)

  1. SELECT column1, column2, ...
  2. FROM table_name
  3. ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...;


3.7  GROUP BY(分组) + HAVING语句

  1. SELECT column1, aggregate_function(column2)
  2. FROM table_name
  3. WHERE condition
  4. GROUP BY column1
  5. HAVING condition;

参数说明:
column1:指定分组的列。
aggregate_function(column2):对分组后的每个组执行的聚合函数。

where  condition:表示查询条件
having  condition: 是对分组应用的筛选条件,这里的condition是对分组的筛选,比如可以这样筛选aggregate_function(column2) > 90

聚合函数:

COUNT():用于计算选定列的行数。
SUM():用于计算选定列的总和。
AVG():用于计算选定列的平均值。
MAX():用于选取选定列的最大值。
MIN():用于选取选定列的最小值。


注意事项:

count(*),*表示所有字段,也可以填字段名称

GROUP BY 子句通常与聚合函数一起使用,因为分组后需要对每个组进行聚合操作。
SELECT 子句中的列通常要么是分组列,要么是聚合函数的参数。
可以使用多个列进行分组,只需在 GROUP BY 子句中用逗号分隔列名即可
 

  1. SELECT column1, column2, aggregate_function(column3)
  2. FROM TABLE_NAME
  3. WHERE condition
  4. GROUP BY column1, column2;

3.8  查询语句的条件顺序

在MySQL数据库中,查询语句的条件可以按照以下顺序进行组合和使用:

  • 1. SELECT:选择要查询的列或表达式。
  • 2. FROM:指定要查询的表。
  • 3. WHERE:设置查询的条件,用于筛选满足条件的行。
  • 4. GROUP BY:按照指定的列对结果进行分组。
  • 5. HAVING:对分组后的结果进行条件过滤。
  • 6. ORDER BY:按照指定的列对结果进行排序。
  • 7. LIMIT:限制返回结果的数量。

这些条件可以根据需要进行组合和调整,以满足具体的查询需求。

3.9  查询操作符

操作符包括以下几种:

  1. 算术操作符:用于数学运算的操作符,例如加法+,减法-,乘法*,除法/等。
  2. 比较操作符:用于比较两个值的关系,例如等于=,不等于<>!=,大于>,小于<,大于等于>=,小于等于<=等。
  3. 逻辑操作符:用于连接条件表达式的操作符,例如逻辑与AND,逻辑或OR,逻辑非NOT等。
  4. 字符串操作符:用于对字符串进行操作的操作符,例如连接字符串的操作符||,字符串匹配的操作符LIKE等。
  5. 位操作符:用于进行位运算的操作符,例如按位与&,按位或|,按位取反~等。
  6. 赋值操作符:用于给变量赋值的操作符,例如赋值=,加等于+=,减等于-=等。
  7. NULL判断操作符:用于判断字段是否为NULL值的操作符,例如IS NULLIS NOT NULL
  8. 其他操作符:*表示全部列

操作符的使用方式:

  1. 等于:=,用于检查两个值是否相等。
  2. 不等于:<> 或 !=,用于检查两个值是否不相等。
  3. 大于:>,用于检查左边的值是否大于右边的值。
  4. 小于:<,用于检查左边的值是否小于右边的值。
  5. 大于等于:>=,用于检查左边的值是否大于或等于右边的值。
  6. 小于等于:<=,用于检查左边的值是否小于或等于右边的值。
  7. BETWEEN:用于检查某个值是否在指定范围内,语法为 BETWEEN value1 AND value2
  8. NOT BETWEEN:用于检查某个值是否不在指定范围内,语法为 NOT BETWEEN value1 AND value2
  9. IN:用于检查某个值是否在给定的值列表中,语法为 IN (value1, value2, ...)
  10. NOT IN:用于检查某个值是否不在给定的值列表中,语法为 NOT IN (value1, value2, ...)
  11. LIKE:用于在搜索中匹配模式,可以使用通配符 %(代表任意字符序列)和 _(代表任意单个字符)。
  12. NOT LIKE:与 LIKE 相反,用于不匹配指定模式。
  13. IS NULL:用于检查字段是否为空值。
  14. IS NOT NULL:用于检查字段是否不为空值。

4.多表查询

4.1  笛卡尔积

笛卡尔积是指在进行SQL查询时,如果没有指定任何条件或者连接条件,多张表之间会做笛卡尔积运算。笛卡尔积将两个表的所有行组合在一起,生成的结果是第一个表中每一行和第二个表中每一行的组合。这种情况下可能会导致结果集非常大,因此应该避免无意义的笛卡尔积操作。

要避免在数据库查询中使用不必要的笛卡尔积,可以使用连接操作(JOIN)指定表之间的关联条件,以便获取所需的结果集。


4.2  连接(内连接、左连接、右连接)

①.INNER JOIN(INNER JOIN 返回两个表中满足连接条件的匹配行,也就是它们的交集)

查到的是整合成的另外一张表

  1. SELECT [all|distinct] column1 [as '别名'], column2 [as '别名'], ...
  2. FROM table_name [as '别名'] inner join table_name2 on 连接条件
  3. [WHERE 查询条件表达式]
  1. SELECT *
  2. FROM table1
  3. INNER JOIN table2 ON table1.column_name = table2.column_name;

与上面结果一样,也可以这样实现

  1. SELECT [all|distinct] column1 [as '别名'], column2 [as '别名'], ...
  2. FROM table_name [as '别名'] , table_name2 [as '别名']
  3. WHERE 连接条件 [AND 查询条件表达式]
  1. SELECT *
  2. FROM table1,table2
  3. where table1.column_name = table2.column_name;


②.LEFT JOIN(左连接以左表为基础,根据on 后给出的条件将两表连接起来,最终的结果会将左表所有的信息列出,而右表只列出on条件与左表满足的部分,其余部分为NULL.)

  1. SELECT *
  2. FROM table1
  3. LEFT JOIN table2 ON table1.column_name = table2.column_name;


③.RIGHT JOIN(右连接以右表为基础,根据on 后给出的条件将两表连接起来,最终的结果会将右表所有的信息列出,而左表只列出on条件与右表满足的部分,其余部分为NULL.)

  1. SELECT *
  2. FROM table1
  3. RIGHT JOIN table2 ON table1.column_name = table2.column_name;

4.3  自连接查询

  1. -- 5、查询同时买了“sm01”和“sm02”商品的订单信息:订单号order_id、商品编号item_id、数量quantity和折扣discount。
  2. select A.order_id,A.item_id,A.quantity,A.discount,B.order_id,B.item_id,B.quantity,B.discount
  3. from order_details A inner join order_details B
  4. on A.order_id = B.order_id
  5. where A.item_id = 'sm01' and B.item_id = 'sm02';

4.4  相关子查询和不相关子查询

写代码一般先写子查询,从内层到外层

相关子查询:

相关子查询是指内部查询依赖外部查询的结果进行计算。换句话说,内部查询中的条件是由外部查询中的结果传递给内部查询的。通常情况下,相关子查询会在外层查询的WHERE子句或FROM子句中使用。

例如,查找员工工资高于平均工资的员工可以使用相关子查询

  1. SELECT employee_name
  2. FROM employees
  3. WHERE salary > (
  4. SELECT AVG(salary)
  5. FROM employees
  6. );

不相关子查询:

不相关子查询是指内部查询与外部查询没有直接关联,内部查询的结果不依赖于外部查询的结果。不相关子查询通常在SELECT子句或FROM子句中独立存在。也就是涉及两张表


5.外键

5.1  定义

外键(Foreign Key)是关系数据库中的一个重要概念,用于建立表与表之间的关联关系。在关系数据库中,数据通常分布在多个表中,外键定义了一个表中的列(或多列)与另一个表中的列之间的关系。


5.2  作用

外键的作用是确保数据的完整性和一致性.


5.3  语法

1.创建外键

foreign  key  (字段)    references  表名(字段) 
  1. ALTER TABLE 表名
  2. ADD CONSTRAINT 外键约束名
  3. FOREIGN KEY (外键列名) REFERENCES 关联表名(关联列名);

2.删除外键

  1. ALTER TABLE 表名
  2. DROP FOREIGN KEY 外键约束名;
  1. ALTER TABLE 表名
  2. DROP CONSTRAINT 外键约束名;


5.4  外键的条件

  • 1.在外键所在的表中,必须存在一个对应的主键或唯一约束,作为参照目标。
  • 2.外键列的数据类型和长度必须与对应的参照列相同。
  • 3.外键约束可以是单列或多列。
  • 4.当参照目标表中的记录被删除或更新时,外键约束才可以指定相应的动作(如级联删除、设置为NULL等。)


5.5  举例

  1. create database test02;
  2. use test02;
  3. create table class(
  4.     class_id int primary key,
  5.     name varchar(32
  6. );
  7. create table student(
  8.     id int not null,
  9.     name varchar(32),
  10.     foreign key (id) references class(class_id)
  11. );
  12. insert into class values(001,"ggs"),(002,"gzdx");
  13. -- 这里插入失败,原因是class_id是001和002,外键被约束只能是001和002这里面选
  14. insert into student VALUES(003,"lhx"),(004,"zgj");
  15. -- 插入成功
  16. insert into student VALUES(001,"lhx"),(002,"zgj");

注意:

alter table `参加` add constraint `FK_参加_职工` foreign key (`职工号`) references `职工`(`职工号`) on delete cascade;

1452 - Cannot add or update a child row:

错误代码 1452 和其描述表明,您尝试添加一个外键约束时出现了问题,因为在子表(参加表)中存在至少一个职工号的值,在父表(职工表)中没有对应的值。这违反了外键约束,因为外键要求子表中的每个值都必须在父表中有一个对应的存在的值


6.分页查询

6.1  语法

  1. SELECT * FROM table
  2. ORDER BY id         -- 这里可以是任何你想要排序的字段
  3. LIMIT startrows;

表示从start + 1行开始取,取出rows行,start从0开始


6.2  公式

  1. select * from table 
  2.     order by  column
  3.     limit 每页显示记录数 * (第几页 - 1),每页显示记录数


7.存储引擎

7.1  定义


存储引擎(Storage Engine)是负责管理表的存储和检索的组件,它们之间有不同的特性、优缺点

以及适用场景    

7.2  介绍三个常见的存储引擎

1.InnoDB:

事务支持:InnoDB 支持事务,这意味着它提供了 ACID(原子性、一致性、隔离性、持久性)特性。
行级锁定:InnoDB 使用行级锁定来管理并发访问,这使得它在高并发环境中表现良好。
外键支持:InnoDB 支持外键约束,可以确保数据的完整性。
崩溃恢复:InnoDB 提供了崩溃恢复功能,可以在数据库异常关闭后进行自动恢复。
CPU 和内存消耗较高:相对于 MyISAM,InnoDB 的 CPU 和内存消耗较高,但提供了更好的数据完整性和事务支持。
默认存储引擎:MySQL 5.5.5 版本之后,InnoDB 成为 MySQL 的默认存储引擎。


2.MyISAM:

不支持事务:MyISAM 不支持事务,因此不提供事务的 ACID 特性。
表级锁定:MyISAM 使用表级锁定,这在高并发环境下可能导致性能瓶颈。
全文索引:MyISAM 提供了全文索引的支持,这使得它在某些特定场景下效率较高。
较快的读取速度:在读取密集型的应用场景下,MyISAM 可能比 InnoDB 更快。
不支持外键约束:MyISAM 不支持外键约束,因此需要在应用层面进行数据完整性的控制。
容易损坏:MyISAM 表容易因为崩溃或断电而损坏,需要手动修复。


3.MEMORY:

存储在内存中:MEMORY 存储引擎将数据存储在内存中,因此读写速度非常快。
不支持事务:与 MyISAM 类似,MEMORY 也不支持事务。
表级锁定:类似于 MyISAM,MEMORY 使用表级锁定。
临时表:MEMORY 表通常用于存储临时数据,例如临时结果集或缓存数据。
数据易丢失:由于数据存储在内存中,因此在服务器重新启动或崩溃时,数据会丢失。

7.3  总结

如果应用程序需要事务支持和数据完整性,则应选择 InnoDB。如果应用程序对读取性能更为重要且不需要事务支持,则可以考虑使用 MyISAM。
而对于临时性数据或缓存数据,MEMORY 可能是一个不错的选择

8.数据库相关函数

8.1  字符串函数

MySQL中内置了很多字符串函数,常用的几个如下:

8.2  数值函数

8.3  日期函数

8.4  流程函数

流程函数也是很常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句的效率。

9.DCL

DCL 英文全称是 Data Control Language ( 数据控制语言 ) ,用来管理数据库用户、控制数据库的访
问权限。

9.1  管理用户

①.查询用户

select * from mysql.user;
查询的结果如下 :

其中 Host 代表当前用户访问的主机 , 如果为 localhost, 仅代表只能够在当前本机访问,是不可以
远程访问的。 User 代表的是访问该数据库的用户名。在 MySQL 中需要通过 Host User
唯一标识一 个用户。
②.创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

③.修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ;

④.删除用户
DROP USER '用户名'@'主机名' ;

注意事项 :
  • MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户。
  • 主机名可以使用 % 通配。
  • 这类SQL开发人员操作的比较少,主要是DBADatabase Administrator 数据库 管理员)使用。

9.2  权限控制

MySQL中定义了很多种权限,但是常用的就以下几种:

①.查询权限

SHOW GRANTS FOR '用户名'@'主机名' ;

②.授予权限

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

③.撤销权限

REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

注意事项:
  • 多个权限之间,使用逗号分隔
  • 授权时, 数据库名和表名可以使用 * 进行通配,代表所有。

详细讲解Cookie、Session、JWT令牌技术-CSDN博客文章浏览阅读914次,点赞43次,收藏13次。这篇文章将带你彻底理解会话跟踪方案的三种技术,分别是Cookie、Session、令牌技术,揭示它们的原理以及对各个技术进行通俗化,让你更好的了解,它们的交互过程 ! ! !https://blog.csdn.net/2301_77358195/article/details/137049985

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/639600
推荐阅读
相关标签
  

闽ICP备14008679号