MYSQL的操作

news2024/9/23 4:21:35

1.库的操作

1.1创建数据库

语法:

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

说明:

#  大写的表示关键字
#  [] 是可选项
#  CHARACTER SET: 指定数据库采用的字符集
#  COLLATE: 指定数据库字符集的校验规则

 

1.2创建数据库案例

创建名为 db1 的数据库
create database db1;

说明:

说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集: utf8 ,校验规则是:utf8_ general_ ci  

创建一个使用utf8字符集的 db2 数据库

create database db2 charset=utf8;  

创建一个使用utf字符集,并带校对规则的 db3 数据库

create database db3 charset=utf8 collate utf8_general_ci;  

1.3字符集和校验规则

1.3.1查看系统默认字符集及校验规则

show variables like 'character_set_database' ;
show variables like 'collation_database' ;

1.3.2查看数据库支持的字符集

show charset;

字符集主要是控制用什么语言。比如utf8就可以使用中文。

1.3.3查看数据库支持的字符集校验规则

show collation;  

1.3.4校验规则对数据库的影响

不区分大小写

创建一个数据库,校验规则使用 utf8_ general_ ci[ 不区分大小写 ]
create database test1 collate utf8_general_ci;

use test1;  

create table person(name varchar(20));  

insert into person values ( 'a' );
insert into person values ( 'A' );
insert into person values ( 'b' );
insert into person values ( 'B' );

区分大小写

创建一个数据库,校验规则使用utf8_ bin[区分大小写]

create database test2 collate utf8_bin; 

use test2; 

create table person(name varchar(20)); 

insert into person values ( 'a' );
insert into person values ( 'A' );
insert into person values ( 'b' );
insert into person values ( 'B' );

进行查询

不区分大小写的查询以及结果

mysql> use test1;
mysql> select * from person where name= 'a' ;
+------+
| name |
+------+
| a         |
| A         |
+------+
2 rows in set ( 0.01 sec)

区分大小写的查询以及结果

mysql> use test2;
mysql> select * from person where name= 'a' ;
+------+
| name |
+------+
| a         |
+------+
2 rows in set ( 0.01 sec)
结果排序
不区分大小写排序以及结果:
mysql> use test1;
mysql> select * from person order by name;
+------+
| name |
+------+
| a         |
| A         |
| b         |
| B         |
+------+

区分大小写排序以及结果:

mysql> use test2;
mysql> select * from person order by name;
+------+
| name |
+------+
| A         |
| B         |
| a         |
| b         |
+------+

1.4操纵数据库

1.4.1查看数据库

show databases;  

1.4.2显示创建语句

show create database 数据库名;  

示例:

mysql> show create database mytest;
+----------+----------------------------------------------------------------+
| Database | Create Database                                                 |
+----------+----------------------------------------------------------------+
| mysql | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+

说明:

1.MySQL 建议我们关键字使用大写,但是不是必须的。
2.数据库名字的反引号``, 是为了防止使用的数据库名刚好是关键字
3./*!40100 default.... */ 这个不是注释,表示当前 mysql 版本大于 4.01 版本,就执行这句话

 1.4.3修改数据库

语法:

ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

说明:对数据库的修改主要指的是修改数据库的字符集,校验规则

实例: 将 mytest 数据库字符集改成 gbk
mysql> alter database mytest charset=gbk;
Query OK, 1 row affected ( 0.00 sec)
mysql> show create database mytest;
+----------+----------------------------------------------------------------+
| Database | Create Database                                                 |
+----------+----------------------------------------------------------------+
| mytest | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+----------------------------------------------------------------+

1.4.4数据库删除

DROP DATABASE [IF EXISTS] db_ name;  

执行删除之后的结果 :
        数据库内部看不到对应的数据库
        对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
注意:不要随意删除数据库  

 1.4.5备份和恢复

1.4.5.1备份

语法:

# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

示例:将mytest库备份到文件(退出连接)

# mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql  

这时,可以打开看看 mytest.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。
 1.4.5.2恢复
mysql> source D:/mysql- 5.7 . 22 /mytest .sql ;
1.4.5.3注意事项

如果备份的不是整个数据库,而是其中的一张表,怎么做?

# mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql  

同时备份多个数据库

# mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径  

如果备份一个数据库时,没有带上 -B 参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source 来还原。

 1.4.6查看连接情况

语法:

show processlist;

示例:

mysql> show processlist;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+-------+------------------+
| 2 | root | localhost | test | Sleep | 1386 |         | NULL |
| 3 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+
可以告诉我们当前有哪些用户连接到我们的 MySQL ,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

2.表的操作

2.1创建表

语法:

CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎 ;

说明:

field 表示列名
datatype 表示列的类型
character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

2.2创建表的案例

create table users (
id int ,
name varchar ( 20 ) comment ' 用户名 ' ,
password char ( 32 ) comment ' 密码是 32 位的 md5 ' ,
birthday date comment ' 生日 '
) character set utf8 engine MyISAM;

说明:

不同的存储引擎,创建表的文件不一样。
users 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:
users.frm :表结构
users.MYD :表数据
users.MYI :表索引

 

备注:创建一个engineinnodb的数据库,观察存储目录

2.3查看表结构

desc 表名;  

 

2.4修改表

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename DROP (column);

案例:

users表添加二条记录

mysql> insert into users values ( 1 , 'a' , 'b' , '1982-01-04' ),( 2 , 'b' , 'c' , '1984-01-
04' );

users表添加一个字段,用于保存图片路径

l> alter table users add assets varchar ( 100 ) comment ' 图片路径 ' after
birthday;

 

 插入新字段后,对原来表中的数据没有影响:

mysql> select * from users;
+------+------+----------+------------+-------+
| id | name | password | birthday | assets |
+------+------+----------+------------+-------+
| 1    | a |   b     | 1982-01-04    | NULL |<= 原来的数据仍然存在
| 2    | b |   c     | 1984-01-04    | NULL |
+------+------+----------+------------+-------+

 修改name,将其长度改成60

mysql> alter table users modify name varchar ( 60 );
mysql> desc users;
+----------+--------------+------+-----+---------+-------+
| Field         | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id         | int ( 11 )         | YES |         | NULL | |
| name | varchar ( 60 ) | YES |          | NULL | |<= 长度变成 60
| password | char ( 32 ) | YES |         | NULL | |
| birthday | date         | YES |         | NULL | |
| assets | varchar ( 100 ) | YES |       | NULL | |
+----------+--------------+------+-----+---------+-------+

 

 

删除 password
注意:删除字段一定要小心,删除字段及其对应的列数据都没了
mysql> alter table users drop password;
mysql> desc users;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id         | int ( 11 )         | YES |         | NULL |      |
| name   | varchar ( 60 ) | YES |         | NULL |     |
| birthday | date          | YES |         | NULL |       |
| assets | varchar ( 100 ) | YES |         | NULL |    |
+----------+--------------+------+-----+---------+-------+

修改表名为employee

mysql> alter table users rename to employee;  

 

to :可以省掉  
name 列修改为 xingming

 

mysql> alter table employee change name xingming varchar ( 60 ); -- 新字段需要完整
定义
mysql> desc employee;
+----------+--------------+------+-----+---------+-------+
| Field         | Type    | Null    | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id         | int ( 11 )            | YES |          | NULL | |
| xingming | varchar ( 60 ) | YES |         | NULL | |
| birthday | date               | YES |         | NULL | |
| assets | varchar ( 100 )   | YES |         | NULL | |
+----------+--------------+------+-----+---------+-------+

2.5删除表

 语法格式

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

示例:

drop table t1; 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GitHub项目推荐-incubator

项目地址 Github地址&#xff1a;GitHub - apache/incubator-anser 官网&#xff1a;Apache Answer | Free Open-source Q&A Platform 项目简述 这是Apache的一个开源在线论坛&#xff0c;也可以部署成为一个自有的QA知识库。项目主要使用了Go和Typescript来开发&#…

Feature Fusion for Online Mutual KD

paper&#xff1a;Feature Fusion for Online Mutual Knowledge Distillation official implementation&#xff1a;https://github.com/Jangho-Kim/FFL-pytorch 本文的创新点 本文提出了一个名为特征融合学习&#xff08;Feature Fusion Learning, FFL&#xff09;的框架&…

设计模式—— 单例设计模式

单例设计模式 什么是单例模式 单例模式是一种对象创建型模式&#xff0c;使用单例模式&#xff0c;可以保证为一个类只生成唯一的实例对象。也就是说&#xff0c;在整个程序空间中&#xff0c;该类只存在一个实例对象。 为什么使用单例模式 在应用系统开发中&#xff0c;我…

Python测试开发,掌握技巧更上一层楼!

学员学习分享&#xff1a; 自动化测试工作稳定之后&#xff0c;一向对技术着迷的我&#xff0c;迫不及待地要进入测开的世界&#xff0c;在java和Python的方向上&#xff0c;我选择了Python。 原因很简单&#xff0c;比较好上手&#xff0c;而且市场上也比较主流。 在跟着课…

【操作系统】在阅读论文:OrcFS: Orchestrated file system for flash storage是需要补充的基础知

在阅读论文&#xff1a;OrcFS: Orchestrated file system for flash storage是需要补充的基础知识 这篇论文是为了解决软件层次之间的信息冗余问题 To minimize the disk traffic, the file system buffers the updates and then flushes them to the disk as a single unit, …

二极管限幅电路理论分析,工作原理+作用

一、限幅是什么意思&#xff1f; 限幅也就是&#xff0c;将电压限制在某个范围内&#xff0c;去除交流信号的一部分但不会对波形的剩余部分造成影响。通常来说&#xff0c;限幅电路主要是由二极管构成&#xff0c;波形的形状取决于电路的配置和设计。二、限幅电路工作原…

流量预测中文文献阅读(郭郭专用)

目录 基于流量预测的超密集网络资源分配策略研究_2023_高雪亮_内蒙古大学&#xff08;1&#xff09;内容总结&#xff08;2&#xff09;流量预测部分1、数据集2、结果对其中的一个网格的CDR进行预测RMSE和R2近邻数据和周期数据对RMSE的影响 &#xff08;3&#xff09;基于流量预…

C语言实现简易n子棋小游戏(代码含注解)

利用C语言简单实现一个n子棋小游戏&#xff0c;棋盘大小由自己定义 将源文件分为 执行游戏的测试文件(test.c)和保存游戏运行逻辑的相关函数的文件(game.c) 头文件中声明符号和函数的定义(game.h) 游戏执行主要依靠二维数组实现&#xff0c;电脑走棋采用随机值的方法简易地…

【NI-DAQmx入门】LabVIEW中DAQmx同步

1.同步解释 1.1 同步基础概念 触发器&#xff1a;触发器是控制采集的命令。您可以使用触发器来启动、停止或暂停采集。触发信号可以源自软件或硬件源。 时钟&#xff1a;时钟是用于对数据采集计时的周期性数字信号。根据具体情况&#xff0c;您可以使用时钟信号直接控制数据采…

ElasticSearch概述+SpringBoot 集成 ES

ES概述 开源的、高扩展的、分布式全文检索引擎【站内搜索】 解决问题 1.搜索词是一个整体时&#xff0c;不能拆分&#xff08;mysql整体连续&#xff09; 2.效率会低&#xff0c;不会用到索引&#xff08;mysql索引失效&#xff09; 解决方式 进行数据的存储&#xff08;只存储…

ssm基于Javaweb的物流信息管理系统的设计与实现论文

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统物流信息管理难度大&#xff0c;容错率低&#xff0c;管理…

基于OpenCV的谷物颗粒识别

基于OpenCV的谷物颗粒识别 一、程序整体功能介绍1.1 导入库与函数定义1.2 颜色分割与灰度处理1.3 二值化与轮廓检测1.4 绘制与计数1.5 主程序与结果展示 二、算法原理与实现流程2.1算法原理&#xff08;1&#xff09;颜色分割&#xff08;2&#xff09;灰度处理与二值化&#x…

mysql进阶 - 存储过程

目录 1. 用途&#xff1a; 2. 相关语法 2.1 创建 2.1.1 语法 2.1.2 示例 2.2 查看存储过程 2.3 调用 2.4 修改存储过程 2.5 删除存储过程 1. 用途&#xff1a; 存储过程广泛存在于一些遗留系统&#xff0c;可以减少代码的编写。而近些年&#xff0c;存储过程很少再用…

【期末不挂科-C++考前速过系列P4】大二C++实验作业-继承和派生(3道代码题)【解析,注释】

前言 大家好吖&#xff0c;欢迎来到 YY 滴C考前速过系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《…

试用统信服务器操作系统UOS 20

作者&#xff1a;田逸&#xff08;formyz&#xff09; 试用统信Linux操作系统UOS&#xff0c;想了解一下用已有的Linux经验能否轻松驾驭它。以便在某些场景下&#xff0c;可以多一种选择。本次试验在Proxmox VE 8&#xff08;以下简称PVE 8&#xff09;平台下进行&#xff0c;采…

杨中科 .NETCORE ENTITY FRAMEWORK CORE-1 EFCORE 第一部分

一 、什么是EF Core 什么是ORM 1、说明: 本课程需要你有数据库、SOL等基础知识。 2、ORM: ObjectRelational Mapping。让开发者用对象操作的形式操作关系数据库 比如插入: User user new User(Name"admin"Password"123”; orm.Save(user);比如查询: Book b…

串行Nor Flash的结构和参数特性

文章目录 引言1、Nor Flash的结构2、Nor Flash的类别3.标准Serial Nor Flash的特征属性1.Wide Range VCC Flash2.Permanent Lock3.Default Lock Protection4.Standard Serial Interface5.Multi-I/O6.Multi-I/O Duplex (DTR)7.XIP&#xff08;片上执行&#xff09; 4.标准Serial…

【LabVIEW FPGA入门】LabVIEW FPGA 实现SPI通信协议

该实现由两个组件组成&#xff1a;在 LabVIEW FPGA 中实现的 SPI 协议以及用于从主机 PC 或实时控制器与 FPGA 进行通信的 LabVIEW 主机接口。该架构允许从单个主机程序控制多个 SPI 端口&#xff0c;同时仍然允许定制 FPGA VI 以进行其他数据采集和处理。该实现不使用任何DMA&…

运算电路(1)——加法器

一、引言 微处理器是由一片或少数几片大规模集成电路组成的中央处理器。这些电路执行控制部件和算术逻辑部件的功能。微处理器能完成取指令、执行指令&#xff0c;以及与外界存储器和逻辑部件交换信息等操作&#xff0c;是微型计算机的运算控制部分。它可与存储器和外围电路芯片…

FasterNet(CVPR 2023)论文解读

paper&#xff1a;Run, Dont Walk: Chasing Higher FLOPS for Faster Neural Networks official implementation&#xff1a;https://github.com/jierunchen/fasternet 存在的问题 为了设计轻量、速度快的网络&#xff0c;许多工作都专注于减少floating-point operations (F…