MySQL数据库
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)
库操作
增加库
create database 库名;
查看当前有哪些数据库
show databses;
切换数据库
需要使用哪个数据库就使用use 库名;
删除数据库
drop database 库名;
表操作
增加
创建表,格式:
create table 表名(字段名1 字段类型,字段名2 字段类型, ...);
create table users(name varchar(200),age int);
向表中增加数据,格式:
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)
也可以进行批量插入数据
mysql> insert into users values ('Hong',18),('Kong',25);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
修改
关键词 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
如果只想修改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
删除
只想删除数据表中的一行数据
delete from users where 字段名=值;
清空整张表
truncate [table] 表名;
删除记录
delete from 表名;
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;
查询格式
SELECT[ALL | DISTINCT] <目标列表达式> [,<目标列表达式>] ...
FROM <表名或视图名>[, <表名或视图名> ] ...
[WHERE <条件表达式> ]
GROUP BY <列名1> [HAVING <条件表达式> ] ]
[ORDER BY <列名2> [ ASC | DESC ] ];
单表查询
1、查询表中全部数据
select * from table_name;
2、只查询name字段的数据
3、查询name\=lin的数据
4、查询某几行数据
5、模糊查询
字段名 [ NOT ] like ...
如果条件不确定,必须使用LIKE关键字进行模糊查询,用like进行字符串匹配,将该字符串叫做匹配串,用它与属性值进行比较。
匹配串中的通配符为:\_ 任意单个字符;% 零个或多个任意字符串
mysql> select * from users where name like 'L%';
+------+------+
| name | age |
+------+------+
| Lin | 22 |
+------+------+
1 row in set (0.00 sec)
多表查询
同时涉及多个表的查询称为连接查询,用来连接两个表的条件称为连接条件或连接谓词。
一般格式:[\<表名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不支持
常用函数
1、聚合函数-count(),统计元组个数。
2、order by 字段名,根据字段进行排序,asc 顺序,desc倒序(默认使用顺序)。
3、@@hostname:主机名
4、@@datadir:数据库路径
5、database():数据库名
6、current\_user():当前用户
7、version():数据库版本
8、注释符
单行注释可以使用 # 或 -- 注释符。使用 # 后直接加注释内容,而使用 -- 后需要跟一个空格才能生效。
多行注释使用 /* */ 注释符,可以跨多行。
本文系作者 @小白学安全 原创发布在 xbxaq.com 站点,未经许可,禁止转载!
评论