Mysql - 理解与操作数据库

时间:2022-09-12 14:42:59

首先看数据库的定义

    • 高效的存储和处理数据的介质(介质包括磁盘和内存)。

数据库基于存储介质的不同,分为两类:关系型数据库(SQL)和非关系型数据库(NoSQL:Not Only SQL)。

关系型数据库:是一种建立在关系模型(数学模型)上的数据库。

关系模型:一种所谓建立在关系上的模型,关系模型包含三个方面:

① 数据结构:数据存储的问题,二维表(行和列)。
② 操作指令集合:所有的SQL语句。
③ 完整性约束:表内数据约束(字段与字段之间),表与表之间约束(外键)。

关系型数据库:

     大型:Oracle,DB2;
     中型:SQL-Server,Mysql;
     小型:Access等。

非关系型数据库:memcached,mongodb,redis等。

相比较而言,关系型数据库比较安全,但是比较浪费空间;而非关系型数据库由于运行在内存中,故效率高但是不安全(断电数据丢失,redis可以同步数据到磁盘)。


关键字说明:

数据库:database;

数据库系统:DBS(DataBase System)-是一种虚拟系统,将多种内容关联起来的称呼;

DBS= DBMS+DB;
DBMS:Database Management System,数据库管理系统,专门管理数据库。

DBA:Database Administrator,数据库管理员。

行/记录:row/record,本质是一个东西,都是指表中的一行(一条记录);行是从结构角度出发,记录是从数据角度出发。

列/字段:column/field,本质是一个东西。


SQL

SQL:Structured Query Language,结构化查询语言。

SQL分为三个部分。

① DDL:Data Definition Language,数据定义语言,用来维护存储数据的结构(数据库,表)。代表指令如:create,drop,alter等。

② DML:Data Manipulation Language,数据操作语言。用来对数据进行操作(数据表中的内容),代表指令:insert ,update,delete等。其中DML内部又单独进行了一个分类:DQL(Data Query Language:数据查询语言,如select)。

③ DCL:Data Control Language,数据控制语言。主要负责用户权限管理,代表指令:grant,revoke等。

SQL是关系型数据库的操作指令,是一种非强制性约束,不同数据库产品会有细微差别。


Mysql 服务器对象

将Mysql服务器内部对象分成了四层:系统(DBMS)->数据库(DB)->数据表(Table)->字段(field)。

Mysql - 理解与操作数据库


1.建立用户并分配权限

CREATE USER '用户名'@'%' IDENTIFIED BY '密码';

grant all privileges on *.* to 用户名@'%' identified by '密码' with grant option;

flush privileges;//刷新权限

2.DOS界面执行 *.sql文件

通常用来还原数据库或者导入数据。

source f:2016.sql//f盘下的2016.sql文件

导出存储过程

mysqldump -u 数据库用户名 -p -n -t -d -R 数据库名 > 文件名

3.链接远程主机的MySQL

mysql -h hostip -u 用户名 -p 用户密码

链接本机:
mysql.exe -hlocalhost -p3306 -uroot -p

4.显示表结构

desc table_name || describe table_name

Mysql - 理解与操作数据库


4.1显示当前表的创建语句

show create table table_name;

同理,查看数据库的创建语句:
show create database database_name;

4.2显示表的所有列

  • 效果和显示表结构一致。
show columns from table_name;

Mysql - 理解与操作数据库


5.显示库中的数据表

切换到mysql数据库,浏览管理信息表,如:user

use mysql;
show tables;

show tables like '% or _';

Mysql - 理解与操作数据库


6.查看用户表数据

这里只查询三个字段:

select Host,User,Password from user;

Mysql - 理解与操作数据库


7.删库和删表

drop database name;
drop table table_name;
drop view view_name;--删除视图

8.查看当前使用的数据库

select database();

切换数据库

use database_name;

9.显示当前日期

show now();

10.用户操作

显示当前用户:

select user();

显示当前用户密码

select password('root');

查看用户权限

show grants for root@'localhost';

Mysql - 理解与操作数据库


删除用户

delete user form user where Host='xxxx' and User='xxxx';

13.设置数据库的默认字符集

alter database db_name default character set gbk;

-- 同样可以设置数据库的其他选项,如引擎和校对集。

14.改整个数据库中所有表的某一列的值

    • 如corp_id;

数据库information_schema,保存了用户数据库中表的基本信息。。

select DISTINCT CONCAT(' update ',c.TABLE_NAME,' set ',c.COLUMN_NAME ,'=13;') from COLUMNS c, Tables t where c.TABLE_NAME=t.TABLE_NAME and c.TABLE_SCHEMA='cloudoa_tb' and (c.COLUMN_NAME like 'corpid%' or c.COLUMN_NAME like 'corp_id%' ) and t.TABLE_TYPE='BASE TABLE'

15.显示所有数据库

show database;

show databases like 'pattern';--pattern 是匹配模式
%: 可匹配多个字符;
_: 匹配单个字符;

需要注意的是_ %连用:
show databases like 'information_%';
其相当于'information%';

若想_作为普通字符,需进行转义:
show databases like 'information\_%' 

16.开启事件

SHOW VARIABLES LIKE 'event_scheduler';
SET GLOBAL event_scheduler = ON;