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(图片无法加载)

表操作

增加

  创建表,格式:

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

  ‍

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

  ‍

invalid image(图片无法加载)

  向表中增加数据,格式:

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

  ‍

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

1
2
3
4
5
6
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(图片无法加载)

  也可以进行批量插入数据

1
2
3
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 条件表达式]

  全部字段都做了更改

1
2
3
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呢?

1
2
3
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(图片无法加载)

删除

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

1
delete from users where 字段名=值;

  ‍

invalid image(图片无法加载)

  清空整张表

1
truncate [table] 表名;

  ‍

invalid image(图片无法加载)

  删除记录

1
delete from 表名;

  ‍

invalid image(图片无法加载)

  truncate与delete的区别:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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。

  ‍

  其他操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- 删除字段: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

1
show tables;

  ‍

invalid image(图片无法加载)

查询格式

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

  ‍

单表查询

  1、查询表中全部数据

1
select * from table_name;

  ‍

invalid image(图片无法加载)

  2、只查询name字段的数据

invalid image(图片无法加载)

  3、查询name=lin的数据

invalid image(图片无法加载)

  4、查询某几行数据

invalid image(图片无法加载)

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

1
2
3
4
5
6
7
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(图片无法加载)