点我

MySQL数据库基础操作

关于数据

一、数据

1、数据(Date) 是用来描述事物的记录符号,是数据库中存储的基本对象,数据库的核心

2、数据的形式多种多样,包括:数字、字母、文字、图形、声音、动画等

二、信息

1、信息通常指被加工处理过的数据, 是行为、决策的基础

2、数据库软件不仅仅保存数据,而且具有加工数据产生信息的能力

信息 \= 数据 + 处理

三、数据库

1、数据库(DataBase 简称DB),是长期储存在计算机内、有组织的、可共享的相关数据的集合

2、数据库不仅仅包括数据本身,还包括数据间的联系,而且能够被不同用户和程序访问

四、数据库系统

1、数据库系统(DataBase System 简称DBS),指在计算机系统中引入数据库后的系统构成

2、主要包括:数据库、硬件、软件、数据库管理系统、数据库管理员、数据库用户

注意:DBMS在操作系统的支持下工作,应用程序DBMS支持下才能使用数据库

五、数据管理系统

1、数据库管理系统(DataBase Management System 简称为DBMS)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库

2、数据库管理系统有:MySQL、Oracle、Microsoft SQL server、Microsoft Access等等

3、数据库管理系统是数据库系统的核心,是管理数据库的软件

4、主要功能:

  • 数据定义功能(建库建表等)
  • 数据操纵功能(增删查改)
  • 数据运行管理功能
  • (备份还原等)

六、数据库管理人员

1、数据库管理人员(DataBase Administrator 简称DBA)是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称

2、DBA的主要职责是运维和管理数据库管理系统,如数据备份还原等

概述

MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL作为网站数据库。

表结构

库-表-字段名-数据
MySQL表由information\_schema表、schemata表、tables表和columns表等组成,如数据库名、表名、列的数据类型,以及访问权限等

  • information\_schema表:MySQL自带的系统数据库,用于存储数据库元数据(关于数据的数据),如数据库名、表名、列的数据类型,以及访问权限等。
  • schemata表:存储数据库名的表,当前MySQL实例的所有数据库。(select schema\_name from schemata)
  • tables表:存储数据库及数据库中的表名。(select table\_schema,table\_name from information\_schema.tables)
  • columns表:存储数据库、表,以及表中的字段(是select group\_concat(column\_name) from information\_schema.columns)

invalid image(图片无法加载)

库操作

增加库

create database 库名;

invalid image(图片无法加载)

查看当前有哪些数据库

show databses;

invalid image(图片无法加载)

切换数据库

需要使用哪个数据库就使用use 库名;

invalid image(图片无法加载)

删除数据库

drop database 库名;

invalid image(图片无法加载)

表操作

增加

创建表,格式:

create table 表名(字段名1 字段类型,字段名2 字段类型, ...);

 create table users(name varchar(200),age int);

invalid image(图片无法加载)

向表中增加数据,格式:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

注意:如果数据是字符型,必须使用单引号 ' 或者双引号 ",如: 'value1', "value1"。

mysql> insert into users (name,age) values ('Ming',20);
Query OK, 1 row affected (0.00 sec)

mysql> insert into users values ('Lin',22);
Query OK, 1 row affected (0.00 sec)

invalid image(图片无法加载)

也可以进行批量插入数据

mysql> insert into users values ('Hong',18),('Kong',25);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

invalid image(图片无法加载)

修改

关键词 update,语法:
update 表名 set 字段名=值 [where 条件表达式]

全部字段都做了更改

mysql> update users set age = 50;
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

invalid image(图片无法加载)

如果只想修改name\=‘Ming’的age为20呢?

mysql> update users set age = 20 where name='Ming';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

invalid image(图片无法加载)

删除

只想删除数据表中的一行数据

delete from users where 字段名=值;

invalid image(图片无法加载)

清空整张表

truncate [table] 表名;

invalid image(图片无法加载)

删除记录

delete from 表名;

invalid image(图片无法加载)

truncate与delete的区别:

DELETE:
    DELETE是一个DML(Data Manipulation Language)操作,用于删除表中的行。
    当你使用DELETE删除数据时,MySQL会生成一个事务日志来记录每一行的删除操作,以便进行回滚操作。
    DELETE操作是可回滚的,因为它记录了足够的信息来撤销删除操作。
    DELETE操作会触发与被删除行相关的任何外键约束,如果存在外键依赖,则可能阻止删除操作。
    DELETE操作通常比TRUNCATE慢,因为它需要逐行处理并记录日志。

TRUNCATE:
    TRUNCATE是一个DDL(Data Definition Language)操作,用于快速删除表中的所有行,并重置任何自增的计数器。
    TRUNCATE操作实际上是重新创建表,但它保留了表结构、索引、触发器和外键约束。
    TRUNCATE操作不会生成事务日志,因为它不是逐行删除,而是一次性删除所有行。
    TRUNCATE操作是不可回滚的,因为它不记录每行的删除信息。
    TRUNCATE操作通常比DELETE快得多,因为它不逐行处理数据。
    TRUNCATE操作不能用于有外键依赖的表,除非外键约束被禁用或使用TRUNCATE CASCADE。

其他操作

- 删除字段:alter table 表名 drop 字段名
- 修改表名:rename table 旧表名 to 新表名
- 修改表名:alter table 旧表名 rename 新表名
- 添加新的字段:alter table 表名 add 新字段名 新数据类型 [新约束条件] [first|after 旧字段名];
- 修改表的字段名:alter table 表名 change 旧字段名 新字段名 新数据类型 ;
- 仅对字段的数据类型进行修改:alter table 表名 modify 字段名 数据类型;
- 添加约束条件:alter table 表名 add constraint 约束名 约束类型(字段名);
- 删除表的主键约束:alter table 表名 drop primary key;
- 删除表的外键约束:alter table 表名 drop foreign key 约束名;
- 删除表字段的唯一约束:alter table 表名 drop index 唯一索引名
- alter table 表名 engine = 新的存储引擎类型
- alter table 表名 default charset = 新的字符集
- alter table 表名 auto_increment = 新的初始值

注意:存在外键约束关系,若想删除父表,首先需要删除父表与子表之间的外键约束条件,解除“父子”,在删除表

查询

查询不但能实现数据检索,而且可以在查询过程中进行计算、合并不同数据源的数据

查询当前数据库下有哪些表,关键词show

show tables;

invalid image(图片无法加载)

查询格式

SELECT[ALL | DISTINCT] <目标列表达式> [,<目标列表达式>] ...
FROM <表名或视图名>[, <表名或视图名> ] ...
[WHERE <条件表达式> ]
GROUP BY <列名1> [HAVING <条件表达式> ] ]
[ORDER BY <列名2> [ ASC | DESC ] ];

单表查询

1、查询表中全部数据

select * from table_name;

invalid image(图片无法加载)

2、只查询name字段的数据

invalid image(图片无法加载)

3、查询name\=lin的数据

invalid image(图片无法加载)

4、查询某几行数据

invalid image(图片无法加载)

5、模糊查询
字段名 [ NOT ] like ...
如果条件不确定,必须使用LIKE关键字进行模糊查询,用like进行字符串匹配,将该字符串叫做匹配串,用它与属性值进行比较。
匹配串中的通配符为:\_ 任意单个字符;% 零个或多个任意字符串

mysql> select * from users where name like 'L%';
+------+------+
| name | age  |
+------+------+
| Lin  |   22 |
+------+------+
1 row in set (0.00 sec)

invalid image(图片无法加载)

多表查询

同时涉及多个表的查询称为连接查询,用来连接两个表的条件称为连接条件或连接谓词。

一般格式:[\<表名1\>.] \<列名1\> \<比较运算符\> [\<表名2\>.]\<列名2\>。

比较运算符:\=、\>、\<、\>\=、\<\=、 !\=

连接谓词中的列名 称为连接字段,连接条件中的各连接字段类型必须是可比的,但不必是相同的。

在多表查询中,存在 内连接、外连接、自连接。

联合查询,合并结果集,关键词 union,使用union将多个select语句的查询结果集组合成一个结果集

语法:select 字段列表1 from table1 UNOIN [all] select 字段列表2 from table2

注意:

  • 字段列表1和字段列表2的字段个数必须相同,且具有相同的数据类型
  • union与union all的区别:union 会筛选掉select结果集中重复记录,union all 会直接合并两个结果集

交集 intersect 和 差集 except 在SQL Server中支持,MySQL不支持

invalid image(图片无法加载)

invalid image(图片无法加载)

常用函数

1、聚合函数-count(),统计元组个数。

invalid image(图片无法加载)

2、order by 字段名,根据字段进行排序,asc 顺序,desc倒序(默认使用顺序)。

invalid image(图片无法加载)

3、@@hostname:主机名

invalid image(图片无法加载)

4、@@datadir:数据库路径

invalid image(图片无法加载)

5、database():数据库名

invalid image(图片无法加载)

6、current\_user():当前用户

invalid image(图片无法加载)

7、version():数据库版本

8、注释符

单行注释可以使用 # 或 -- 注释符。使用 # 后直接加注释内容,而使用 -- 后需要跟一个空格才能生效。

多行注释使用 /* */ 注释符,可以跨多行。

invalid image(图片无法加载)

分类: WEB安全

评论

-- 评论已关闭 --

目录