MYSQL数据库管理基本操作

一、数据库的基本操作

1、登录数据库

[root@mysql-server ~]#mysql -uroot -p123456     ###直接回车,则进入数据库

[root@mysql-server ~]#mysql -u root -p          ###直接回车
Enter password:                                 ###输入密码

方法一: 

方法二: 

2、查看数据库结构

1.查看数据库信息

mysql> show databases;       ###注意结尾的分号,分号表示结束
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| njzb               |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)


mysql> show databases\G           ###\G来结束命令
*************************** 1. row ***************************
Database: information_schema
*************************** 2. row ***************************
Database: mysql
*************************** 3. row ***************************
Database: njzb
*************************** 4. row ***************************
Database: performance_schema
*************************** 5. row ***************************
Database: sys
5 rows in set (0.00 sec)

用两种方式显示数据库的结构

2.查看数据库中包含的表

mysql>  USE mysql;    ###use后面跟数据库名;

show  tables;

show tables in  mysql;

3.显示数据表的结构(字段)

DESCRIBE  [数据库名.]表名

DESC  [数据库名.]表名   ###  desc可以缩写

Field:字段名称
type:数据类型
Null :是否允许为空
Key :主键
Default :默认值
Extra :扩展属性,例如:标志符列(标识了种子,增量/步长)1 2
id:1 3 5 7

3、常用的数据库类型

int整型    用于定义整数类型的数据
float单精度浮点 4字节32位   准确表示到小数点后六位
double双精度浮点 8字节64位
char固定长度的字符类型
varchar可变长度的字符类型
text文本
image图片
decimal(5,2)5个有效长度数字,小数点后面有2位
key主键是唯一的,但是主键可以由多个字段构成

4、char和varchar的区别

  • ​对char来说,最多能存放字符个数255个,char如果存入数据的实际长度比指定长度要小 会补空格至指定长度。如果存入的数据的实际长度大于指定长度 低版本会被截取,高版本会报错
  • char的长度是不可变的,而varchar的长度是可变的,也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了​

二、MYSQL数据文件

MysQL数据库的数据文件存放在**/usr/local/mysql/data**目录下,每个数据库对应一个子目录,用于存储数据表文件。每个数据表对应为三个文件,扩展名分别为".frm"、“.MYD"和”.MYI”。

1、MYD文件

MYD文件是MyISAM存储引擎专用,存放MyISAM表的数据。每一个MyISAw表都会有一个"“.MYD"文件与之对应,同样存放于所属数据库的文件夹下,和”.frm"文件在一起。

2、MYI文件

“.MYI"文件也是专属于MyISAM存储引擎的,主要存放MyISAM表的索引相关信息。对于MyISAM4存储来说,可以被 cache 的内容主要就是来源于”.MYI"文件中。每一个MyISAM表对应一个".MYI”文件,存放于位置和".frm"以及".MYD”一样。

3、MyISAM存储引擎

  • MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件(frm,myd,myi)。每个表都有且仅有这样三个文件做为MyISAM

  • 存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个.MYI文件中。

  • 另外还有".ibd"和 ibdata文件,这两种文件都是用来存放Innodb数据的,之所以有两种文件来存放Innodb的数据(包括索引),是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储方式使用".ibd"文件来存放数据,且每个表一个".ibd"文件,文件存放在和MyISAM数据相同的位置。如果选用共享存储表空间来存放数据,则会使用ibdata文件来存放,所有表共同使用一个(或者多个,可自行配置)ibdata文件。

三、SQL语句

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

SQL语言分类

DDL数据定义语言,用于创建数据库对象,如库、表、索引等
DML数据操纵语言,用于对表中的数据进行管理
DQL数据查询语言,用于从数据表中查找符合条件的数据记录
DCL数据控制语言,用于设置或者更改数据库用户或角色权限

1、DDL数据定义语言

用于创建数据库对象,如库、表、索引等

create    ##创建
drop      ##删除
alter     ##修改

1.创建新的数据库

mysql> create database school;  ###创建数据库

mysql> show databases;          ###查看

2.创建新的表

CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);

主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。

例:create database school;
use school;
create table CLASS1 (id int not null,name char(10) not null,sex char(1),primary key (id));

3.删除指定的数据表

use 数据库名
DROP TABLE 表名;

DROP TABLE [数据库名].表名;

4.删除指定的数据库

DROP DATABASE 数据库名;

2、DML数据操控语言

数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据。

insert
update
delete

格式:

INSERT INTO 表名(字段1,字段2[,...]) VALUES(字段1的值,字段2的值,...);

1.向数据表中插入新的数据记录

例:
create database school;

show databases;
 
use school;
 
show  table;

create table class (id int not null,name char(10) not null,score decimal(5,2),passwd char(20) default'',primary key(id));

insert into class (id,name,score,passwd) values(1,'zhangsan',59.5,PASSWORD('123456'));

insert into class (id,name,score,passwd) values(2,'lisan',75,PASSWORD('123456'));

insert into class (id,name,score,passwd) values(3,'lisi',82,123456);

insert into class (id,name,score,passwd) values(4,'wangwu',92,PASSWORD('123456'));

insert into class (id,name,score,passwd) values(5,'laoliu',82,123456);
 
#PASSWORD('123456'):查询数据记录时,密码字串以加密形式显示:若不使用PASSWORD(),查询时以明文显示。

2.查询数据记录

SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
 
例:select * from CLASS;
select name,score from CLASS where id=1;

3.修改、更新数据表中的数据记录

UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
 
例:
insert into class (id,name,score,passwd) values (6,'qige',77,123456);

insert into class (id,name,score,passwd) values (7,'bajie',88,123456);


select  * from class;

update class set score='99' where name='laoliu';   ###更改老六的成绩为99

##也可以根据id来修改
update class set score='99' where id='2';

4.在数据表中删除指定的数据记录

DELETE FROM 表名 [WHERE 条件表达式];
 
例:delete from CLASS where id=5;
select * from CLASS;

3、DQL数据查询语言

select * from CLASS;              #查看表中所有信息
select * from CLASS limit 2;      #只显示头2行
select * from CLASS limit 2,3;    #显示第2行后的前3行
select * from class\G             #以列表方式竖向显示

4、DCL数据控制语言

1.修改表名

ALTER TABLE 旧表名 RENAME 新表名;
 
例:alter table class rename class35;
show tables;
select * from class35;

2.扩展表结构(增加字段)

ALTER TABLE 表名 ADD address varchar(50) default '地址不详';
 
​#default ‘地址不详’:表示此字段设置默认值 地址不详;可与 NOT NULL 配合使用
 
例:alter table CLASS3 add address varchar(50) default '地址不详';

3.修改字段(列)名,添加唯一键。

ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];
 
例:alter table CLASS change name student varchar(20) unique key;
select * from CLASS;
 
例:insert into class (id,student,score,passwd) values (5,'laoliu',89,123456);

insert into class (id,student,score,passwd)values(8,'bajie',91,123456);   ###添加失败

每个表中只能由一个主键 ,但是许多内容都需要唯一性,这就是唯一键的作用

4.删除字段

ALTER TABLE 表名 DROP 字段名;
 
例:alter table CLASS drop score;

四、高级操作

1、清空表

1.Delete from tablename

DELETE清空表后,返回的结果内有删除的记录条目

DELETE 工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除
所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。

mysql> select *from class;
+----+----------+-------------------------------------------+--------------+
| id | student  | passwd                                    | address      |
+----+----------+-------------------------------------------+--------------+
|  1 | zhangsan | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 地址不详     |
|  2 | lisan    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 地址不详     |
|  3 | lisi     | 123456                                    | 地址不详     |
|  4 | wangwu   | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 地址不详     |
|  5 | laoliu   | 123456                                    | 地址不详     |
|  6 | qige     | 123456                                    | 地址不详     |
|  7 | bajie    | 123456                                    | 地址不详     |
+----+----------+-------------------------------------------+--------------+
7 rows in set (0.00 sec)

mysql> delete from class;
Query OK, 7 rows affected (0.00 sec)

mysql> select *from class;
Empty set (0.00 sec)

insert into class values(1,'zwg',99,123456);

select *from class;

desc  class;

2.Truncate table tablename

TRUNCATE清空表后,没有返回被删除的条目: TRUNCATE 工作时是将表结构按原样重新建立,
因此在速度上TRUNCATE会比DELETE清空表快;使用TRUNCATE TABLE 清空表内数据后,
ID会从1开始重新记录

mysql> truncate table class;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from class;
Empty set (0.00 sec)

mysql> insert into class values(1,'zwg',99,123456);
Query OK, 1 row affected (0.00 sec)

mysql> select * from class;
+----+------+-------+--------+
| id | name | score | passwd |
+----+------+-------+--------+
|  1 | zwg  | 99.00 | 123456 |
+----+------+-------+--------+
1 row in set (0.00 sec)

3.Drop form tablename

mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| class            |
| kysw             |
+------------------+
2 rows in set (0.00 sec)

mysql> drop table kysw;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| class            |
+------------------+
1 row in set (0.00 sec)

4.对比

区别Drop table tablenameTruncate table tablenameDelete table tablename
所属SQL语句属于DDL属于DDL属于DML
是否可回滚不可回滚(无法恢复)不可回滚(无法恢复)可回滚(可恢复)
是否带Where不可带Where不可带Where可带Where
是否删除表内容和表结构表内容和结构删除表内容删除表结构在,表内容要看where执行情况
删除速度删除速度快删除速度快删除速度慢,需要逐行删除
速度比较最快次之最慢
特别提醒:最好使用Delete

当不再需要一张表的时候使用Drop;想保留部分数据的时候使用Delete,并且带上Where语句;保留表而删除所有数据的时候用Truncate 。

2、临时表

临时建立的表,用于保存一些临时数据,不会长期存在(下次重新进入数据库即不存在)

如果在退出连接之前,也可以可执行增删改查等操作,比如使用DROP TABLE语句手动直接删除临时表。

mysql> show tables;
+-----------------+
| Tables_in_class |
+-----------------+
| class           |
+-----------------+
1 rows in set (0.00 sec


mysql> create temporary table kysw(id int(6) zerofill primary key auto_increment,name varchar(15) not null,cardid int(18) not null unique key,hobby varchar(60));
#创建临时表 数据表名为class3 id 整型为6字节 zerofill数值不满6位时,前面位数用0补充(00001)
#auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次
#unique key:表示此字段唯一键约束,此字段数据不可以重复:一张表中只能有一个主键,但是一张表中可以有多个唯一键
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
#建立的临时表是看不到的                                                           
+-----------------+
| Tables_in_class |
+-----------------+
| class           |
+-----------------+
1 rows in set (0.00 sec)

mysql> select * from kysw;
Empty set (0.00 sec)

mysql> insert into kysw values(1,'cxk',12345678,'ctrl');
Query OK, 1 row affected (0.00 sec)

mysql> select * from kysq;
+--------+------+----------+-------+
| id     | name | cardid   | hobby |
+--------+------+----------+-------+
| 000001 | cxk  | 12345678 | ctrl  |
+--------+------+----------+-------+
1 row in set (0.00 sec)

如果数据库退出在重新登录,那么临时表就不存在了

mysql> select * from kysw;
ERROR 1146 (42S02): Table 'school.kysw' doesn't exist
#临时表找不到了

3、克隆表

1.Like方法

mysql> show tables;
+-----------------+
| Tables_in_class |
+-----------------+
| class           |
+-----------------+
2 rows in set (0.00 sec)
 
mysql> create table class2 like class;
#克隆数据表的结构
Query OK, 0 rows affected (0.01 sec)
 
mysql> show tables;
+-----------------+
| Tables_in_class |
+-----------------+
| class           |
| class2          |
+-----------------+
3 rows in set (0.00 sec)
mysql> select * from class3;
Empty set (0.00 sec)
 
mysql> insert into class2 select * from class;
#克隆数据表class2的数据内容
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0
 
mysql> select * from class3;
+----+------+-------+-------------------------------------------+
| id | name | grate | passwd                                    |
+----+------+-------+-------------------------------------------+
|  1 | cxk  | 88.00 | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |
|  2 | wyb  | 96.00 | *437F1809645E0A92DAB553503D2FE21DB91270FD |
|  3 | xzq  | 95.00 | *437F1809645E0A92DAB553503D2FE21DB91270FD |
|  4 | lyf  | 95.00 | *437F1809645E0A92DAB553503D2FE21DB91270FD |
+----+------+-------+-------------------------------------------+
4 rows in set (0.00 sec)

2.show create table方法

mysql> show tables;
+-----------------+
| Tables_in_class |
+-----------------+
| class           |
| class2          |
| class3          |
+-----------------+
3 rows in set (0.00 sec)
 
mysql> show create table class2\G
*************************** 1. row ***************************
       Table: class2
Create Table: CREATE TABLE "class2" (
  "id" int(11) NOT NULL,
  "name" char(15) NOT NULL,
  "grate" decimal(4,2) DEFAULT NULL,
  "passwd" char(45) DEFAULT '',
  PRIMARY KEY ("id")
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
 
mysql> create table class4(select * from class3);
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0
 
mysql> show tables;
+-----------------+
| Tables_in_class |
+-----------------+
| class           |
| class2          |
| class3          |
| class4          |
+-----------------+
4 rows in set (0.00 sec)
 
mysql> select * from class4;
+----+------+-------+-------------------------------------------+
| id | name | grate | passwd                                    |
+----+------+-------+-------------------------------------------+
|  1 | cxk  | 88.00 | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |
|  2 | wyb  | 96.00 | *437F1809645E0A92DAB553503D2FE21DB91270FD |
|  3 | xzq  | 95.00 | *437F1809645E0A92DAB553503D2FE21DB91270FD |
|  4 | lyf  | 95.00 | *437F1809645E0A92DAB553503D2FE21DB91270FD |
+----+------+-------+-------------------------------------------+
4 rows in set (0.00 sec)
如果想将数据迁移到其他地方使用Like备份方法;

如果想只备份数据的内容可以使用第二种方法。

五、数据库用户管理

总结:

1.查看数据库、数据表和表结构的操作

  • 查看数据库show databases
  • 查看数据表show tables
  • 查看表结构describe tablename或desc tablename

2.创建库和表的操作及删除库和表的操作

  • 创建库create database databasename
  • 创建表create table tablename
  • 删除库drop database databasename
  • 删除表drop table tablename

3.数据表的增、删、改、查等操作

  • 数据表增:Insert into tablename
  • 数据表改:update tablename set 指定内容
  • 数据表删:delete from tablename
  • 数据表查:select(*、where、limit、\G)
  • 数据表结构名称改:alter table tablename rename 新名称
  • 数据表扩展结构增:alter table tablename add 扩展名
  • 数据表字段内容改:alter table tablename change 原结构字段名称 新结构字段名称
  • 数据表字段内容删:alter table tablename drop 指定结构字段

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/473202.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第3关:创建零件表P,并插入数据

任务描述 零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。创建零件表P(PNO,PNAME,COLOR,WEIGHT),并在P表中插入下图数据。 相关知识 1、MySQL创建表的基本语法如下: 其中,table_name 是要创…

docker入门(六)—— docker镜像详细介绍,理解docker分层

docker 镜像详解 镜像本质是什么 镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。 别人给我们生成好的一个环境&…

【黄金手指】windows操作系统环境下使用jar命令行解压和打包Springboot项目jar包

一、背景 项目中利用maven将Springboot项目打包成生产环境jar包。名为 prod_2024_1.jar。 需求是 修改配置文件中的某些参数值,并重新发布。 二、解压 jar -xvf .\prod_2024_1.jar释义: 这段命令是用于解压缩名为"prod_2024_1.jar"的Java归…

期刊如何反击一波可疑图像

出版商正在部署基于人工智能的工具来检测可疑图像,但生成式人工智能威胁着他们的努力。 期刊正在努力检测用于分析蛋白质和DNA的凝胶的操纵图像。图片来源:Shutterstock 似乎每个月都会有一系列针对研究人员的新高调指控,这些研究人员的论文…

软件的安装与卸载(YUM)

YUM:yum 是一个方便的"应用商店",你可以通过它轻松地安装、更新和删除软件包,就像从应用商店中下载和安装应用程序一样。(这个得用root身份,普通用户权限不够) 常用命令: 1.安装软件…

阿里云2核4G服务器支持多少人在线?2C4G多少钱一年?

2核4G服务器支持多少人在线?阿里云服务器网账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,2核4G服务器的在线访问人数取决于多个变量因素。 阿里云2核4G服务器多少钱一年?2核4…

python_django网红基地孵化园场地管理系统flask

作为一个管理孵化园的网络系统,数据流量是非常大的,所以系统的设计必须满足使用方便,操作灵活的要求。所以在设计孵化园管理系统管理系统应达到以下目标: (1)界面要美观友好,检索要快捷简易&…

3.20网络编程

练习: 1> 创建一个工人信息库,包含工号(主键)、姓名、年龄、薪资。 2> 添加三条工人信息(可以完整信息,也可以非完整信息) 3> 修改某一个工人的薪资(确定的一个&#xf…

应用改进SA算法实现MATLAB-HFSS交互仿真与天线优化

应用改进SA算法实现MATLAB-HFSS交互仿真与天线优化 第一章SA算法及其简单应用1.1 SA算法简介1.2 SA算法原理1.2.1 SA算法原理 1.3 Metropolis准则及退火过程中的参数控制1.3.1 Metropolis准则1.3.2退火过程中的参数控制 1.4 SA算法简单应用 第二章 改进SA算法2.1 改进方向2.2 改…

企业如何选择一个开源「好」项目?

开源 三句半 oss-roast 需求明确是关键 风险考量要周全 开源虽好不白捡 别忘合规! 显然,开源已成为一股不可阻挡的洪流,企业拥抱开源,积极参与开源项目不仅是响应技术潮流的必然选择,更是实现自身技术创新、市场拓展等…

新火种AI|国产手机抢滩“AI+折叠屏”赛道,行业洗牌大战就此开启?

作者:小岩 编辑:彩云 从2023年到2024年,随着新一波人工智能浪潮的加速,消费电子产品也迎来了全新的话题——AI。更重要的是,这场战争看似没有硝烟,但各大厂商都已经暗自角力了许久,特别是手机…

PHP全新美化广告横幅在线制作源码

源码简介 可以做网站的引流不需要安装上传就可以使用,在第一版基础上做了二次开发更加好用 注意:主机和服务器均可架设搭建,如果使用宝塔架设点击访问的时候提示找不到文件路径的时候,记得点击网站目录把防跨站攻击先关闭,这样就可以正常访问了,这款是…

华为openEuler系统卸载jdk

华为openEuler系统卸载jdk 1.查看openEuler上已安装的 Java 版本: 在终端中运行以下命令,查看系统中已经安装的 Java 版本。 sudo alternatives --config java这将列出已安装的 Java 版本,你可以看到当前使用的是哪个版本 2.卸载 Java&am…

java static

1、static概念 (1)static 关键字是静态的意思,可以修饰成员方法,成员变量 (2)static 修饰的特点 ① 被类的所有对象共享,这也是我们判断是否使用静态关键字的条件。 ② 可以通过类名调用&…

ActiViz三维场景的基本要素——相机

文章目录 前言一、基本属性和方法二、相机操作三、高级功能四、 示例代码和应用五、总结前言 在ActiViz中,vtkCamera是一个非常重要的类,用于定义观察场景的视角和位置。作为三维可视化的核心组件之一,vtkCamera决定了用户在三维场景中所看到的图像内容和视角,因此它对于呈…

Linux之文件管理与重定向

文件的管理 最开始说到过, 一个进程是可以打开多个文件的并且可以对这些文件做出不同的操作, 也就是说加载到内存中的文件可能存在多个. 操作系统要不要管理这些打开的文件呢? 当我们在程序里面打开多个文件时, 操作系统肯定是得对这些文件进行管理的, 而管理的本质就是对数…

openKylin系统安装ssh服务结合内网穿透实现固定公网地址访问

文章目录 1. 安装SSH服务2. 本地SSH连接测试3. openKylin安装Cpolar4. 配置 SSH公网地址5. 公网远程SSH连接小结 6. 固定SSH公网地址7. SSH固定地址连接 openKylin是中国首个基于Linux 的桌面操作系统开发者平台,通过开放操作系统源代码的方式,打造具有自…

cnetos7将普通用户的权限提升为超级用户

将普通用户的权限提升为超级用户 现象:当我们初次使用sudo命令时,会遇到下面的问题 解决步骤: 显示你当前登录用户的用户名。 whoami将自己的用户切为超级用户,密码为你第一次使用Linux登录时的密码 su -使用vim编辑器打开配…

Dockerfile Docker Compose(实战总结)

Dockerfile & Docker Compose(实战总结) Dockerfile Dockerfile 是用来构建Docker镜像文件,是由一条条构建镜像所需的指令构成的脚步。 步骤: 编写Dockerfile 文件docker build 构建镜像docker run 运行镜像docker push 发…

Hive SQL必刷练习题:日期交叉问题(两种思路)

思路一: ​ 首先想到的是借助炸裂函数,一行变成多行,就可以进行去重操作,然后再统计日期。 用到炸裂函数,就首先需要可以拿到起始和终止日期差大小的数组,然后再炸裂​ 那这个指定长度数组怎么获取呢&…