【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 表名;

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

相关推荐
java1234_小锋7 小时前
Redis的热Key问题如何解决?
数据库·redis·缓存
wang6021252187 小时前
FastAPI框架为什么在启动时建表
数据库
男孩李7 小时前
linux下如何执行postgres数据库的sql文件
数据库·sql·postgresql
zwjapple7 小时前
MySQL SQL 面试核心考点与注意事项总结
数据库·sql·mysql
乐韵天城8 小时前
SpringBoot中如何手动开启数据库事务
数据库·spring boot
05大叔8 小时前
Spring Day02
数据库·sql·spring
默默前行的虫虫8 小时前
nicegui中多次调用数据库操作总结
数据库·python
鸽鸽程序猿8 小时前
【Redis】事务
数据库·redis·缓存
Knight_AL8 小时前
MySQL 分区表应用案例:优化数据管理与性能
数据库·mysql
luoluoal9 小时前
基于python的爬虫的贵州菜价可视化系统(源码+文档)
python·mysql·django·毕业设计·源码