首页 > 数据库 >MySQL数据库管理

MySQL数据库管理

时间:2023-09-22 09:25:24浏览次数:54  
标签:insert 管理 数据库 values user MySQL into tt select

目录

数据库的基本概念

  • 数据

    • 描述事物的符号记录
    • 包括数字,文字、图形、图像、声音、档案记录等
    • 以“记录”形式按统一的格式进行存储
    • 将不同的记录组织在一起
    • 用来存储具体数据
  • 数据库

    • 表的集合,是存储数据的仓库
    • 以一定的组织方式存储的相互有关的数据集合
    • 是按照数据结构来组织、存储和管理数据的仓库
  • 数据库管理系统(DBMS)

    • 是实现对数据库资源有效组织、管理和存取的系统软件

      数据库的建立和维护功能、数据定义功能、数据操纵功能、数据库的运行管理功能、通信功能

  • 数据库系统

    • 是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成

    • 用户可以通过DBMS或应用程序操作数据库

数据库的发展

  • 第一代数据库

    • 自20世纪60年代起,第一代数据库系统问世
    • 是层次模型与网状模型的数据库系统
    • 为统一管理和共享数据提供了有力的支撑
  • 第二代数据库

    • 20世纪70年代初,第二代数据库-关系数据库开始出现
    • 20世纪80年代初,IBM公司的关系数据库系统DB2问世,开始逐步取代层次与网状模型的数据库,成为行业主流
    • 到目前为止,关系数据库系统仍占领数据库应用的主要地位
  • 第三代数据库

    • 自20世纪80年代开始,适应不同领域的新型数据库系统不断涌现

    • 面向对象的数据库系统,实用性强、适应面广

    • 20世纪90年代后期,形成了多种数据库系统共同支撑应用的局面

    • 一些新的元素被添加进主流数据库系统中

      例如,Oracle支持的“关系-对象”数据库模型

主流的数据库介绍

  • SQL Server(微软公司产品)

    • 面向Windows操作系统
    • 简单、易用
  • Oracle (甲骨文公司产品)

    • 面向所有主流平台
    • 安全、完善,操作复杂
  • DB2(IBM公司产品)

    • 面向所有主流平台
    • 大型、安全、完善
  • MySQL (甲骨文公司收购)

    • 免费、开源、体积小
  • 关系数据库

    • 关系数据库系统是基于关系模型的数据库系统
    • 关系模型的数据结构使用简单易懂的二维数据表
    • 关系模型可用简单的“实体-关系”(E-R)图来表示
    • E-R图中包含了实体(数据对象)、关系和属性三个要素
  • 实体

    • 也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”
      • 如银行客户、银行账户等
  • 属性

    • 实体所具有的某一特性,一个实体可以有多个属性
      • 如“银行客户”实体集中的每个实体均具有姓名、住址、电话等属性
  • 联系

    • 实体集之间的对应关系称为联系,也称为关系
      • 如银行客户和银行账户之间存在“储蓄”的关系
  • 所有实体及实体之间联系的集合构成一个关系数据库

  • 关系数据库的存储结构是二维表格

  • 在每个二维表中

    • 每一行称为一条记录,用来描述一个对象的信息
    • 每一列称为一个字段,用来描述对象的一个属性
  • 关系数据库

    • Oracle,MySQL
    • SQLServer、Sybase
    • Informix、access
    • DB2、FoxPRO
    • PostgreSQL
  • 应用举例

    • 12306用户信息系统
    • 淘宝账号系统
    • 联通手机号信息系统
    • 银行用户账号系统
    • 网站用户信息系统
  • 非关系数据库介绍

    • 非关系数据库也被称作NoSQL (Not Qnly SQL)
    • 存储数据不以关系模型为依据,不需要固定的表格式
    • 非关系型数据库的优点
      • 数据库可高并发读写
      • 对海量数据高效率存储与访问
      • 数据库具有高扩展性与高可用性
    • 常用的非关系数据库:Redis、mongoDB等
  • MySQL数据库介绍

    • 一款深受欢迎的开源关系型数据库
    • Oracle旗下的产品
    • 遵守GPL协议,可以免费使用与修改
    • 特点
      • 性能卓越、服务稳定
      • 开源、无版权限制、成本低
      • 多线程、多用户
      • 基于C/S(客户端/服务器)架构
      • 安全可靠
  • MySQL商业版与社区版

    • MySQL商业版是由MySQL AB公司负责开发与维护需要付费才能使用
    • MySQL社区版是由分散在世界各地的MySQL开发者爱好者一起开发与维护,可以免费使用
    • 两者区别
      • 商业版组织管理与测试环节更加严格,会比社区版更稳定
      • 商业版不遵守GPL,社区版遵从GPL可以免费使用
      • 商业版可获得7*24小时的服务,社区版则没有

MySQL安装方法

操作MySQL

  • 常用的数据类型

    类型 说明
    int 整型 无符号[0,232-1],有符号[-231,2^31-1]
    float 单精度浮点 4字节32位
    double 双精度浮点 8字节64位
    char 固定长度的字符类型
    varchar 可变长度的字符类型
    text 文本
    image 图片
    decimal(5,2) 5个有效长度数字,小数点后面有2位

查看数据库结构

show databases;
#查看当前服务器中的数据库
SHOW DATABASES;
#SQL语句对大小写不敏感,只对库名


use mysql;
#切换数据库
show tables;
#查看当前mysql数据库中的表

show tables from mysql;
#不切换库查看表

describe user;
#查看user表结构

dsec user;
#查看user表结构


desc mysql.user;
#查看表结构

SQL语句

SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。

SQL语言分类:

DDL:用于管理数据库对象 库、表、索引

show databases;

use 库名;
show tables;      show tables from 库名;
desc [库名.]表名;

create database 库名;
use 库名;
create table [库名.]表名 (字段1 数据类型, 字段2 数据类型, ....[, primary key (字段)]);

drop table [库名.]表名;
drop database 库名;


create database 库名;
use 库名;
create table [库名.]表名 (字段1 数据类型, 字段2 数据类型, ....[, primary key (字段)]);

drop table [库名.]表名;
drop database 库名;

DML:用于管理表数据

DQL:用于根据条件查询表数据

DCL:用于管理用户与权限

创建及删除数据库和表
create database mt;
#创建数据库mt

use mt;
create table mm (id int, name char(4),age int,sex char(2),hobby varchar(20));
#创建表mm
#####create table 表名 (字段1 数据类型,字段2 数据类型,字段3 数据类型,......,[primary key (字段)]);
#create database.table

create table tt (id int, name char(4),age int,sex char(2),hobby varchar(20),primary key(id));
#创建表tt
desc tt;
#查看表的结构

drop table mm;
#删除数据表mm
#####drop table 表名
#drop database.table

drop database mt;
#删除数据库mt
#####drop database 数据库名
###drop删除表的对象

create database mt;

create table mt.mm (id int, name char(4),age int,sex char(2),hobby varchar(20));

show tables from mt;

drop table mt.mm;

show tables from mt;

create table tt(id int ,name char(4),age int,sex char(2),hobby varchar(20),primary key(id));


insert into tt(id,name,age,sex,hobby) values(1,'aa',18,'男','football');

select * from tt;

insert into tt values(2,'bb',19,'男','basketball');

insert into tt (id,name,sex) values (3,'cc','男');

update tt set age=20,hobby='tennis' where id=3;

insert into tt values(4,'dd',18,'女','singing');
insert into tt values(5,'ee',18,'女','dancing');

update tt set hobby='PS5' where sex='男';

delete from tt where id=1;

insert into tt(id,name,age,sex,hobby) values(1,'aa',18,'男','football');

select * from tt;

delete from tt where id>=1 and id<=3;

insert into tt(id,name,age,sex,hobby) values(1,'aa',18,'男','football');
insert into tt values(2,'bb',19,'男','basketball');
insert into tt values(3,'cc',20,'男','tennis');

delete from tt where id=1 or id=3;

insert into tt(id,name,age,sex,hobby) values(1,'aa',18,'男','football');

insert into tt values(3,'cc',20,'男','tennis');

select * from tt where id=1 or id=3;

select * from tt limit 3;
#查询前两行数据

select * from tt limit 3,2;
#查询后从第3行之后的头2行内容  就是第4第5行

select * from tt;

select * from tt\G;
#纵向查看

show databases;
use mysql;
show tables;
select * from user;
select * from user\G;

select * from tt;

select name,hobby from tt;
#只查看name和hobby

select hobby,name,age from tt;
#调整字段顺序查看

select NAME,hobby from tt;

select NAME,hobby from TT;

#mysql涉及到表名和库名的时候要区分大小写,字段名不区分大小写

修改表名和表结构
use mt;

show tables;

alter table tt rename tm;

alter table tm rename tt;

desc tt;

alter table tt add address varchar(50) default '地址不详';
#添加字段

select * from tt;

insert into tt(id,name,hobby) values(6,'ff','swing');

select * from tt;

insert into tt(id,name,address) values(7,'gg','宇宙曹县');

select * from tt;

desc tt;

alter table tt change name username varchar(10) unique key;

#把tt表中name字段改成username 属性改为varchar(10) 

desc tt;

select * from tt;

insert into tt(id,age) values(8,20);

 select * from tt;

insert into tt(id,username,age) values(9,'aa',20);


#username是唯一键,可以为空,但不能重复

desc tt;

alter table tt drop address;
#删除字段

desc tt;

create table if not exists tt (myid int);

desc tt;

create table if not exists ttt (myid int);

show tables;

desc ttt;

drop table ttt;

create table if not exists ttt(
id int(4) zerofill primary key auto_increment,
name varchar(10) default '匿名',
cardid int  zerofill not null unique key,
hobby varchar(50));


select * from ttt;


insert into ttt(name,cardid,hobby) values('zhangsan',11111111,'running');

insert into ttt(name,cardid,hobby) values('lisi',22222222,'jumping');

insert into ttt(name,cardid,hobby) values('wangwu',333333,'swimming');

insert into ttt(name,cardid,hobby) values('wangwu',11111111,'swimming');

insert into ttt(name,cardid,hobby) values('zhaoliu',22222222,'swimming');

insert into ttt(name,cardid,hobby) values('zhaoliu',66666666,'sleeping');

insert into ttt(name,hobby) values('zhuba','sleeping');

数据表高级操作
#####克隆表


###法一
select * from ttt;

desc ttt;

create table ttt2 like ttt;
#克隆表结构

show tables;

desc ttt2;

select * from ttt2;

insert into ttt2(select * from ttt);
#克隆表数据

select * from ttt2;



###法二

create table ttt3(select * from ttt);


#####清空表数据

###法一
insert into ttt(name,cardid,hobby) values('sunqi',77777777,'jumping');

select * from ttt;

delete  from ttt;

insert into ttt(name,cardid,hobby) values('zhouba',88888888,'jumping');



###法二
insert into ttt(name,cardid,hobby) values('sunqi',77777777,'jumping');
insert into ttt(name,cardid,hobby) values('wujiu',99999999,'jumping');

select * from ttt;

truncate table ttt;

select * from ttt;

insert into ttt(name,cardid,hobby) values('sunqi',77777777,'jumping');

select * from ttt;

#####创建临时表

create temporary table xyz(id int,name varchar(10),sex char(3));

insert into xyz values (1,'ab','男'),(2,'cd','男'),(3,'ef','女');

select * from xyz;

show tables;

desc xyz;

delete from xyz where id=3;

select * from xyz;

#再开一个会话或者quit数据库,临时表就消失了

image-20230914172852104

image-20230914173043651

#####创建外键约束,保证数据的完整性和一致性

use mt;

create table profession (proid int , proname varchar(20));

create table student (id int , name varchar(10) , age int ,sex char(2), proid int);

show tables;
#profession为主表 student为外表

image-20230914174934879

desc profession;
#proid为主键

alter table profession add primary key(proid);

show create table profession;

desc student;

alter table student add constraint FK_proid foreign key(proid) references profession(proid);

show create table student\G;

image-20230914175414113

image-20230914175459498

desc student;

insert into student values (1,'张三',20,'男',1);
#插入学生,无法插入成功,外键约束

select * from student;

desc profession;

insert into profession values (1,'软件工程'),(2,'计算机科学与技术'),(3,'网络工程'),(4,'大数据');
#先对专业进入插入数据

select * from profession;


image-20230914175809961

image-20230914180140304

insert into student values (1,'张三',20,'男',1);

insert into student values (2,'李四',21,'男',2);

insert into student values (3,'王五',22,'男',3);

insert into student values (4,'赵六',23,'男',4); 

insert into student values (5,'孙七',24,'女',4); 

select * from student;

insert into student values (6,'周八',25,'女',5); 
#没有proid为5的专业,外键约束,无法插入数据成功

image-20230914180510608

select * from profession;

delete from profession where proid=4;
#proid=4的大数据课程有调整,进行删除操作,但是学生有大数据课程,无法删除

image-20230914180935643

#但是大数据必须要改革,就需要先把该课程的学生给转移到其他课程,才能删除大数据

select * from student;

update student set proid=2 where id=4 or id=5;

select * from student;

delete from profession where proid=4;

image-20230914181547610

数据库用户管理
select user();

select user,host,authentication_string from mysql.user;

image-20230914183201897

create user 'mtwm'@'localhost' identified by '123456';
#创建用户

select user,host,authentication_string from mysql.user;

quit

mysql -u mtwm -p123456 -h 192.168.174.106 -P3306

mysql -u root -pabc123


create user 'mtwm'@'%' identified by '123123';

select user,host,authentication_string from mysql.user;

quit


mysql -u mtwm -p123123 -h 192.168.174.106 -P3306


image-20230914184625484

###修改密码


grant all privileges on *.* to 'root'@'%' identified by 'abc123' with grant option;

quit

mysql -u root -pabc123 -h 192.168.174.106 -P3306

select user,host,authentication_string from mysql.user;

select user();

set password = password('123123');
#修改当前用户密码


set password for 'mtwm'@'localhost' = password('123123');
#修改指定用户密码

image-20230914185722642

select user,host,authentication_string from mysql.user;

drop user 'mtwm'@'%';
#删除用户
select user,host,authentication_string from mysql.user;

rename user 'mtwm'@'localhost' to 'mtw'@'%';
#重新命名
select user,host,authentication_string from mysql.user;

image-20230914190038372

alter user 'root'@'%' identified by 'abc123';
#修改密码


image-20230914190222912

mysql -u root -pabc123


vim /etc/my.cnf

#在[mysqld] 下面添加 skip-grant-tables 配置项
skip-grant-tables

systemctl restart mysqld

mysql -u root -p123123

select user();

set password for 'root'@'localhost' = password('123123');
alter user 'root'@'localhost' identified by '123123';



select user,host,authentication_string from mysql.user; 

update mysql.user set authentication_string =password('123123') where user='root' and host='localhost';


quit

vim /etc/my.cnf
#删除在[mysqld] 下dd面 skip-grant-tables 配置项
skip-grant-tables

systemctl restart mysqld

mysql -u root -p123123


image-20230914192125654

数据库用户授权
select user,host,authentication_string from mysql.user;

quit

mysql -u mtw -p123123 -h 192.168.174.106 -P3306

show databases;
#只有登陆权限,没有其他权限

image-20230914192615433

mysql -u root -p123123

grant insert,update,select on mt.* to 'mtw'@'%';
#给mtw用户对mt数据库插入,更新,茶查找的权限

flush privileges;
#立即刷新数据库





mysql -u mtw -p123123 -h 192.168.174.106 -P3306
show databases;

use mt;

show tables;

select * from tt;

insert into tt values(9,'xx',18,'女','eating');

select * from tt;

update tt set username='zz' where id=8;

select * from tt;

delete from tt where sex is null;
#无法删除,没有给权限





image-20230914212100710

image-20230914212308620

mysql -u root -p123123

show grants for 'mtw'@'%';


grant all on *.* to 'mwmw'@'%' identified by '123456';

select user,host,authentication_string from mysql.user;

show grants for 'mwmw'@'%';



mysql -u mwmw -p123456 -h 192.168.174.106 -P3306
show databases;

use mt;
show tables;

select * from tt;

delete from tt where sex is null;

select * from tt;


image-20230914212751119

image-20230914213055691

mysql -u root -p123123

revoke all on *.* from 'mwmw'@'%';

show grants for 'mwmw'@'%';

quit

mysql -u mwmw -p123456 -h 192.168.174.106 -P3306

show databases;

image-20230914213324005

image-20230914213416496

标签:insert,管理,数据库,values,user,MySQL,into,tt,select
From: https://www.cnblogs.com/mtwm/p/17721524.html

相关文章

  • 操作mysql
    importpymysqlimportpandasaspdconnection=pymysql.connect( host='127.0.0.1', #服务器ip地址 port=3306, #mysql默认端口号 user="root", #用户名 password="123456", #密码 charset="utf8",#字符集 db="new_dev......
  • multiprocessing:Python像线程一样管理进程
    前言multiprocessing库是基于threadingAPI,它可以把工作划分为多个进程。有些情况下,multiprocessing可以作为临时替换取代threading来利用多个CPU内核,相应地避免Python全局解释器锁所带来的计算瓶颈。下面,我们来看看multiprocessing库创建进程与threading库有多像。创建一个进......
  • Docker上运行RabbitMQ,无法访问管理页面
    在CentOS7中的Docker安装并运行了RabbitMQ,但是在访问管理页面http://IP:15672/却提示拒绝访问这是因为在Docker上运行的RabbitMQ,默认情况下是没有启用管理插件和管理页面的使用命令dockerexec-it容器名/bin/bash进入RabbitMQ容器的命令行终端。容器名即CONTAINERID......
  • Mysql忘记密码后如何重置密码
    长时间不使用本机的Mysql后把密码忘记了咋整?直接上干货:第一步(Mysql部署的位置,若自己能找到就忽略这一步):任务管理器中也可以找到第二步:修改配置文件在my.ini末尾加上 skip-grant-tables=1(这一句是为了忽略数据库密码)第三步:重启数据库服务并重置数据库密码(先用管理员模式......
  • MySQL主从原理及常见架构介绍
    主从概述MySQL主从复制也可以称为MySQL主从同步,它是构建数据库高可用集群架构的基础。它通过将一台主机的数据复制到其他一台或者多台主机上,并重新应用日志(relaylog)中的SQL语句来实现复制功能。MySQL支持单向、双向、链式级联、异步复制,5.5版本之后加入的半同步复制,5.6版本之后......
  • 第二章 文件管理
    1.文件目录与路径1.1文件目录1.1.1  根目录:/1.1.2默认颜色:蓝色表示目录,绿色表示可执行文件,浅蓝色表示链接文件,红色表示压缩文件,黄色表示设备文件等。这些颜色是Linux系统默认的颜色,用户可以根据自己的喜好进行修改。1.1.3根目录下常见的目录:1.2文件路径1.2.1 绝对......
  • openGauss学习笔记-76 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT简介
    openGauss学习笔记-76openGauss数据库管理-内存优化表MOT管理-内存表特性-MOT简介本节介绍了openGauss内存优化表(Memory-OptimizedTable,MOT)的简介。76MOT简介openGauss引入了MOT存储引擎,它是一种事务性行存储,针对多核和大内存服务器进行了优化。MOT是openGauss数据库最先进......
  • 关于mysql安装过程中的密码设置问题
    在使用setpassword=password("0000000000");更改密码时出现的ERROR1064(42000):YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'password("0000000000")......
  • 6 定时器 &中断管理&资源管理
    生成函数周期,多久触发一次定时器(从定时器启动开始计算) 触发什么呢?回调函数被调用,被谁调用呢1,tick中断去调用timer函数 Linux中使用这个 (定时器回调函数若执行时间过长,会阻碍其他定时器函数执行)2,freeRTOS中一般定时器守护函数设置优先级比较高使用定时器的话,需要定义......
  • C++-内存管理
    今天,和大家分享一些与内存管理相关的知识,本次的内容主要是new和delete的使用。内存这一块的知识,我们在学习C语言的时候,就有作相对细致的了解。我们现在来写几道题。做一个简单的回顾复习。内存的分布我们先来看看,下面一段代码:intglobalVar=1;staticintstaticGlobalVar=1;v......