【MySql】数据库和表的增删查改

数据库和表的增删查改

一、数据库

1.创建数据库

方法一:

sql 复制代码
create database 数据库名(db_name);

方法二:

if not exists: 表示不存在,如果该数据库不存在就删除

sql 复制代码
create database if not exists 数据库名(db_name);

补充: 创建数据库本质就是在 /var/lib/mysql 创建一个目录

为什么呢?

原因:配置文件中默认的创建路径就是 /var/lib/mysql

数据库字符集和校验集

在创建数据库时,每个数据库都有一个对应的字符集和校验集

  • 字符集的作用: 在向数据库写入内容时,按什么编码写入

  • 校验集的作用: 在查找数据库中的内容时,按什么校验规则查找

查看mysql支持的字符集

sql 复制代码
show charset;

查看mysql支持的校验集

sql 复制代码
show collation;

按指定字符集和校验集创建数据库

sql 复制代码
create database 数据库名 charset=utf8 collate utf8_general_ci;

字符集:gbk 校验集: gbk_chinese_ci;

sql 复制代码
create database 数据库名 charset=gbk collate gbk_chinese_ci;
校验规则对数据库的影响

不区分大小写

创建一个数据库,校验规则使用 utf8_general_ci (不区分大小写)

sql 复制代码
create database test1 collate utf8_general_ci;

进入test1数据库内部

sql 复制代码
use test1

创建表

sql 复制代码
create table person(name varchar(20));

向表中插入数据

sql 复制代码
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

在表中查找一个数据,结果:

区分大小写

创建一个数据库,校验规则使用 utf8_bin (区分大小写)

sql 复制代码
create database test2 collate utf8_bin;

进入test2数据库内部

sql 复制代码
use test2

创建表

sql 复制代码
create table person(name varchar(20));

向表中插入数据

sql 复制代码
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

在表中查找一个数据,结果:

可以发现它们得出的结果是不同的,不区分大小写得出了两个答案,区分大小写以后得出了一个答案。再根据排序看看结果如何:

sql 复制代码
select * from 表名 order by name 

不区分大小写:

区分大小写:

2.删除数据库

方法一:

sql 复制代码
drop database 数据库名(db_name);

方法二:

if exists : 表示存在的意思,就是说如果该数据库存在就删除

sql 复制代码
drop database if exists 数据库名(db_name);

3.查看数据库

sql 复制代码
show databases 数据库名(db_name)

4.显示创建语句

sql 复制代码
show create database 数据库名

5.查看当前所在的数据库

sql 复制代码
select database();

6.修改数据库的字符集和校验集

sql 复制代码
alter database 数据库名 charset=字符集名 collate 校验集名

7.数据库的备份和恢复

数据库的备份

  1. 备份单个数据库
  • 3306:表示端口号
  • test.sql :表示文件名,后缀为sql,文件名可更改
sql 复制代码
mysqldump -u root -P 3306 -p 密码 -B 数据库名 > test.sql(数据库存放路径);
  1. 备份多个数据库
sql 复制代码
mysqldump -u root -p -B 数据库名1 数据库名2 > 数据库存放路径;
  1. 备份数据库中的某些表
sql 复制代码
mysqldump -u root -p 数据库名 表名1 表名2 > test.sql;

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

数据库的还原

在mysql服务器中,调用下面指令

sql 复制代码
source 要还原文件的路径;

8.查看连接情况

sql 复制代码
show processlist

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况

二、表

1.创建表

sql 复制代码
create table 表名 (
field1 datatype,
field1 datatype,
field1 datatype
)character set 字符集 collate 校验规则 engine 存储引擎;

说明:

  • field:列名

  • datatype:列的类型

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

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

示例:

sql 复制代码
create table if not exists usr1(
name varchar(20) comment '用户名',
password char(32) comment '用户名',
birthday date comment '用户的生日'
)character set utf8 collate utf8_general_ci engine MyIsam;

说明:存储引擎不同,创建的表结构不同。

2.查看表结构

查看表结构

sql 复制代码
desc 表名;

查看创建表时的语句

sql 复制代码
show create table 表名;

3.修改表

修改表名

sql 复制代码
alter table 原表名 rename to 需要的表名

向表中插入数据

sql 复制代码
insert into 表名 values(数据1,数据2,数据3,....);

在表中新增一列

sql 复制代码
alter table 表名 add 列名 varchar(128) comment '描述' after birthday;

说明:

  • varchar(128) : 表示类型大小,根据情况自己定义
  • comment '描述' : 这个描述可自行确定。
  • after birthday :表示在birthday这列的后面插入一列

修改表中某列的属性

sql 复制代码
alter table 表名 modify 列名 属性;

改的属性会将原属性覆盖

删除表中某一列

sql 复制代码
alter table 表名 drop 列名;

删除以后那么这一列就没了,想找也找不到了,所以删除要慎重考虑

更改某一列的名称

sql 复制代码
alter table 表名 change 原列名 需要的列名 新的属性;

说明:使用change 时,该列的属性全都会被改,所以如果我们需要保持原属性不变,就输入原属性的值即可

4.表的删除

语法格式:

sql 复制代码
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

示例:

sql 复制代码
drop table 表名;

注意:表删除以后就没了,慎重考虑

相关推荐
Gauss松鼠会4 分钟前
GaussDB回调机制深度实践:从事件驱动到系统集成
开发语言·javascript·数据库·sql·gaussdb
254054652025 分钟前
629SJBH图书管理系统设计与实现
数据库·毕业设计·毕业论文
PingCAP1 小时前
从 DB-Engines 排名攀升看 TiDB 全球突破之路
数据库·人工智能·tidb
消失在人海中2 小时前
oracle 游标的管理
数据库·oracle
盖世英雄酱581362 小时前
小小的改动,竟然效率提高了1000倍
数据库·后端
八股文领域大手子2 小时前
从接口400ms到20ms,记录一次JVM、MySQL、Redis的混合双打
jvm·数据库·redis·mysql·jar
提高记忆力3 小时前
truncate,drop,delete分析
数据库
江节胜-胜行全栈AI3 小时前
PostgreSQL-中文字段排序-修改字段的排序规则
数据库·postgresql
就是蠢啊3 小时前
SpringBoot 基础知识,HTTP 概述
数据库·mysql·spring
darkchink4 小时前
[LevelDB]Block系统内幕解析-元数据块(Meta Block)&元数据索引块(MetaIndex Block)&索引块(Index Block)
android·java·服务器·c语言·数据库·c++·分布式