首页 > 数据库 >MSQL操作案例

MSQL操作案例

时间:2024-12-05 18:30:09浏览次数:9  
标签:name database 数据库 MSQL 案例 mysql 操作 NULL create

1.数据库

创建数据库

1.1.1默认创建数据库

create database 数据库名

 解释:使用create命令创建一个数据库,database关键字后面接自定义数据库名字,默认UTF-8编码(utf8_ general_ ci)

create database helloworld;

 1.1.2指定字符集编码建数据库

create database 数据库名 charset = 字符编码 ;

 解释:使用create命令创建一个数据库,database关键字后面接自定义数据库名字,用charset关键字指定字符编码

create database helloword charset=utf8;

 1.1.3指定字符集编码并附带校验规则

 create database 数据库名 charset = 字符集 collate 校验编码;

 解释:使用create命令创建一个数据库,database关键字后面接自定义数据库名字,用charset关键字指定字符编码然后collate关键字指定校验规则

create database db3 charset=utf8 collate utf8_general_ci;

1.2字符集和校验规则

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

校验规则主要是控制数据在读取的时候采用什么规则,比如区不区分大小写。

1.2.1查询系统默认字符集以及校验规则

show variables like ‘ 编码’

 解释:使用show关键字展示变量

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

 1.2.2查询数据库支持的字符集

 解释:展示所有字符集

show charset;

 1.2.3查询数据库支持的校验规则

show collation;

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

create database 数据库名 collate 校验编码;

 解释:在建数据库时指使用collate指定校验编码

  • 创建一个数据库,校验规则使用utf8_ general_ ci(不区分大小写) 
create database test1 collate utf8_general_ci;
  • 创建一个数据库,校验规则使用utf8_ bin(区分大小写)
create database test2 collate utf8_bin;
  •  查询
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');
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   |
+------+

 2.操纵数据库

2.1查看数据库

show databases;

 解释:使用show关键字,展示所有数据库

2.2使用数据库

use 数据库名

解释:使用use命令进入到指定数据库内操作该数据库

use helloworld;

 show create database 数据库名;

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

说明

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

 2.3修改数据库

数据库一般改的就是编码格式字符集和校验规则

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

 解释:使用alter指令将数据库的属性更改

 将 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 */ |
+----------+----------------------------------------------------------------+

2.4删除数据库

drop database [if exists] 数据库名;

 解释:使用drop指令将指定数据库名的数据库删除(if exists 如果存在该指定的数据库,就执行该行代码)

执行完后的结果:

  • 数据库内部看不到对应的数据库
  • 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删

 注意:不要随意删除数据库

 2.4备份与恢复

2.4.1备份

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

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

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

这时,可以打开看看 mytest.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。

2.4.2还原

mysql> source D:/mysql-5.7.22/mytest.sql;

 2.4.3注意事项

  • 如果备份的不是整个数据库,而是其中的一张表,怎么做?
# mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
  • 同时备份多个数据库
# mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
  •  如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。

2.4.4查看连接情况

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,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

3.数据库表

创建数据库表

create table 表名 (
列名1 数据类型1,

列名2 数据类型2,

列名3 数据类型3,

...
) character set 字符集 collate 校验规则 engine 存储引擎;

  •  character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
  • collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

解释:使用create建一个表,table关键字后面跟要建的新表名字,括号内就是指定的表内各数据的数据段,结尾可以设置相关附加条件

create table student(
  id int,
  name varchar(32),
  gender varchar(2)
);

 3.1建表案例

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:表索引

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

3.2查询表结构

desc 表名;

解释:使用desc命令才查询指定表的结构

实例:

3.3修改表

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。

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);

alter table 表名 add (新增列名1 数据类型1,新增列名2 数据类型2....);

解释:新增一列在表的最后面

alter table 表名 MODIfy (更改列名1 修正数据类型1,更改列名2 修正类型2....);

解释:更改某一列或几列的数据

alter table 表名 DROP (列名);

解释:删除某一列

 alter table 原表名 rename to 新表名;   -----to:可以省掉

 解释:将表名字更改

 alter table 表名 change 列名 新列名 数据类型; --新字段需要完整定义

 解释:将表中某一列更改名字

案例:

  • 在users表添加二条记录
mysql> insert into users values(1,'a','b','1982-01-04'),(2,'b','c','1984-01-
04');
  •  在users表添加一个字段,用于保存图片路径
mysql> alter table users add assets varchar(100) comment '图片路径' after
birthday;
mysql> desc users;
+----------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int(11)     | YES |     | NULL   |       |
| name     | varchar(20) | YES |     | NULL   |       |
| password | char(32)     | YES |     | NULL   |       |
| birthday | date         | YES |     | NULL   |       |
| assets   | varchar(100) | YES |     | NULL   |       |
+----------+--------------+------+-----+---------+-------+

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

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;
mysql> select * from employee;
+------+------+------------+-------+
| id   | name | birthday   | assets |
+------+------+------------+-------+
|    1 | a   | 1982-01-04 | NULL |
|    2 | b   | 1984-01-04 | NULL |
+------+------+------------+-------+
  • 将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   |       |
+----------+--------------+------+-----+---------+-------+

3.4表中插入数据

insert into 表名(...指定列)  values (...对应值)

 解释:使用insert指令into关键字(插入)在指定表的指定列中对应的values值

全列插入

insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');
insert into student  values (4, '赵六', '男');

部分插入

insert into student (id) values (3);
insert into student (id,  gender) values (2,  '女');
insert into student ( name, gender) values ( '张三', '男');

查询表中数据

select * from 表名;

解释:使用select指令 查询在该表中的所有数据 (*是一个通配符,表示所有)

select * from student;

3.5 删除表

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

 drop table 表名1,表名2...

实例:

drop table t1;

标签:name,database,数据库,MSQL,案例,mysql,操作,NULL,create
From: https://blog.csdn.net/2302_81171591/article/details/144268828

相关文章

  • git 中 rebase 是什么样的操作,应该从哪个分支rebase到哪个分支
    使branch_1rebase(变基)到branch_2branch_1是当前活动分支,使用rebasebranch_2,把branch_2分支的提交放在branch_1提交的前面,这样使branch_1合并了branch1且使branch_1和branch_2的提交是线性的一般来说,个人理解应该这么用:在dev分支中有新提交,且master也有了......
  • 【ubuntu】使用redis-cli操作redis查询
    一、场景命令行操作redis,万一没有界面化软件可用   二、文档https://redis.io/docs/latest/develop/tools/cli/  三、安装sudoapt-getupdatesudoapt-getinstallredis-tools  四、命令介绍$redis-cli--helpredis-cli7.0.15Usage:redis-cli[O......
  • 12-操作符
    12-操作符一、算术操作符+(加)-(减)*(乘)/(除,即商)%(取模,即余数)#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intmain(){ inta; a=9/2; printf("a=%d\n\n",a); floatb; b=9/2; printf("b=%f\n\n",b); intc;......
  • 基于国产化鸿道Intewell操作系统的高性能实时运动控制解决方案
    工业自动化控制,需要严苛的实时性、稳定性和安全性。随着全球工业自动化技术的不断进步,高性能实时运动控制已成为智能制造的核心,而现在全球竞争紧张的局势下,国产化技术的应用尤为重要,特别是在关键领域和核心产业中。目前国产化高实时运动控制达到了什么样的控制水平呢?软件+......
  • GZY.EFCore.BulkExtensions 支持达梦数据库的EF Core批量操作库详解
    前言EFCore.BulkExtensions是一个常用的EFcore批量处理数据的库.但是支持的数据库相对较少.特别是.NET5.0版本连MySQL都无法支持这个库就是改造的最新EFCore.BulkExtensions的代码让它能在.NET5.0中支持Mysql和达梦数据库由于5.0在升到最新9.0的过程中有比较重大的改变,所......
  • linux - FTP(包含匿名、本地以及虚拟用户登录)详细操作⭐
    目录一、FTP服务的定义二、FTP服务的工作原理控制连接:数据连接:三、FTP服务搭建过程匿名用户登录:本地用户登录:虚拟用户登录一、FTP服务的定义FTP(FileTransferProtocol)即文件传输协议,是用于在网络上进行文件传输的标准协议。它运行在TCP/IP协议栈之上,采用客......
  • c# - java公私钥 转 c# net 公私钥做 RSA 加解密操作
    1.背景java和c#语言的公私钥格式是不同的,需要专门转换后才可以使用2.c#工具类usingSystem;usingSystem.Security.Cryptography;usingSystem.Text;usingOrg.BouncyCastle.Crypto.Parameters;usingOrg.BouncyCastle.Security;namespaceHypj.Logic.NCAPI{pu......
  • 用电脑同时操作30台苹果手机,iOS免越狱群控管理 解析 操作
    在企业运营中,管理多台设备是一项挑战性的任务。为了提高工作效率,减少人力资源成本,越来越多的企业开始使用各种技术解决方案来管理他们的设备。其中,苹果免越狱中控技术是一种备受关注的解决方案。苹果免越狱中控技术是一种无需越狱即可快捷高效管理多台iOS设备的技术。通过电脑......
  • 苹果手机可实现无需越狱,随意抹除、刷机的iOS群控操作方法
    每日讲述一个苹果iOS系统实现无需越狱的群控操作方法,通过电脑键盘和鼠标即可实现控制。该方法具有实用性和原生态,能够支持所有型号的苹果手机及iOS11至iOS16系统版本。操作环境纯净,不受环境监测影响,即使手机进行抹除或刷机,也能支持电脑开机后自动连接。群控效果展示免越......
  • 【资金流入强度】资金多空操作方向判断以及强弱多线操作信号,通达信炒股软件指标
    如上图,副图指标【资金流入强度】,一条红绿变色资金强弱线,红色时多头主导,绿色时空头资金主导。蓝色柱线短线参考做多信号以及短线能量强弱信号。如上图,指标中有两个关键位置,零轴多空分界线,紫色虚线15参考资金流入强势分档线。在资金强弱线从下往上突破零轴,进入资金做多阶段,在......