MySQL --- MySQL库和表的操作

MySQL库和表的操作

一、库的操作

1.1创建数据库

复制代码
create database [if not exists] db_name [charset / character set=XXX collate=xxx];

在所有sql语法中凡是带有[ ]的都是选择性的去写,可以不用写的。

(1)if not exists 是 MySQL 中一个防止报错的从句,意思是:"如果这个东西不存在,才执行操作;如果已经存在,就什么也不做(也不会报错)"。

(2)charset / character=XXX 是 设置指定的MySQL的编码集,所谓编码集通俗来讲就是把数据按特定的格式进行存储( / 代表或者)。

(3)collate=XXX 是 设置指定的MySQL的校验集,所谓校验集通俗来讲就是比对这些数据时按什么规则排顺序、是否区分大小写等。

当我们不写设置编码集,校验集时,系统默认会采用就近原则,使用my.cnf配置文件里所配置的编码集,校验集;若配置文件里面没有进行配置,则系统会自动将编码集设置为utf8(老版本) / utf8mb3(新版本),校验集设置为utf8_general_ci(老版本) / utf8_general_ci(新版本)。

在/var/lib/mysql目录下可以查看到刚刚创建的db_test1数据库。

在MySQL5.7版本及其更老的版本这个数据库文件里面默认只有一个db.opt文件,文件的内容就是你创建的数据库所设置的编码集和校验集。

在MySQL8.0版本及以上的版本,这个db.opt文件被取消了,数据库的编码和校验信息被统一放到了系统表空间的数据字典里管理(了解即可),新版本可以直接使用sql语句来查看数据库的编码和校验信息:

复制代码
use db_name;
seletc @@character_set_database, @@collation_database;

1.2查询数据库

1.2.1查询所有的数据库

复制代码
show databases;

1.2.2查询一个数据库的具体创建信息

复制代码
show create database db_name; 

\G代表格式化输出,去除了一些无关紧要的内容。

1.2.3查看你在当前哪个数据库

复制代码
select database();

1.3修改数据库

首先修改数据库是不能修改数据库名称的,这是不支持的,可供修改的仅有数据库编码集,校验集这些内容。(这个就不演示了)

复制代码
alter database db_name charset=XXX / character set=XXX collat=XXX;

1.4删除数据库

复制代码
drop database db_name;

1.5备份数据库

下面操作会结合对表的操作:创建了一个db_test2的数据库,往库中创建了一个student表,表中有id、name、age、birthday 4个字段(什么叫字段后面会讲),并往表中插入了一些数据。

1.5.1备份一个数据库

此些操作需要在mysql外部使用:

复制代码
mysqldump -P端口号 -u登录用户 -p -B 数据库名 > 备份文件的绝对路径

-B参数是数据库的名称,若没有带这个参数,则你在恢复这个数据库的时候需要先创建这个数据库,在use进入,再恢复数据。

vim打开test.sql文件:

可以观察到备份的是对此库的历史所有操作都备份了。

1.5.2备份多个数据库

复制代码
mysqldump -P端口号 -u登录用户 -p -B 数据库名1 数据库名2 > 备份文件的绝对路径

1.5.3备份一个/多个表

复制代码
mysqldump -P端口号 -u登录用户 -p -B 数据库名 表名1[表名n] > 备份文件的绝对路径

1.6恢复数据库

此语句需要在mysql内部使用。

复制代码
source 备份文件的绝对路径;

二、表的操作

2.1创建表

复制代码
create table student(
	属性列1 数据类型及大小 描述 依赖等,
	属性列2 数据类型及大小 描述 依赖等,
	.......
	属性列n 数据类型及大小 描述 依赖等,
);

)和;之间也可以像创建数据库一样设置编码集和校验集,以及存储引擎engine,这个与索引,存储文件的后缀,数量有关,这里也不重点介绍。

本篇博客仅介绍如何创建表,重点不是内部的字段这些,这些后续博客会介绍。

2.2查询表

2.2.1查询一个库中所有的表

复制代码
show tables;

2.2.2查询一个表的详细信息

复制代码
desc table_name;

2.2.3查询一个表创建时的详细信息

复制代码
show create table table_name;

2.3修改表

2.3.1新增列

复制代码
alter table table_name add new属性列 数据类型及大小 描述 依赖等 after 指定属性列的列名;

after 指定属性列的列名 --- 表示新增到指定属性列的后面。

查询student表详细结构信息:

可以看到在name字段后面新增了一个sex性别的属性列。

2.3.2修改列

复制代码
alter table table_name modify 属性列 new数据类型/长度 描述 依赖等;

观察到name属性列的大小从32修改为了60。

2.3.3重命名 - - - 也属于修改

2.3.3.1重命名表名
复制代码
alter table table_name rename [to] newtable_name;

观察到表名由原来的student重命名成了xueshengbiao。

2.3.3.2重命名列名
复制代码
alter table table_name change old属性列名 new属性列名 new数据类型及大小 描述 依赖等;

观察到原来属性列为name的重命名成了xingming,并且数据类型大小重新修改成了32。

2.3.4删除列

复制代码
alter table table_name drop 属性列;

2.4删除表

复制代码
drop table table_name;

三、其他操作

3.1查询连接情况

复制代码
show processlist;

此语句可以查看谁在连接,在干什么的信息。

3.2插入表数据

insert语句不是DDL(数据定义语言),而是DML(数据操纵语言),本次只认识一下,不会深讲。

复制代码
insert into table_name (属性列1, 属性列2, ......, 属性列n) values (值1, 值2, ......, 值n);

3.3查询表内容

select语句属于DML中的DQL(数据查询语言)。

复制代码
select * from table_name;

四、注意事项

上面介绍了有关数据库和表的增删查改的操作,其中一定不要轻易的去执行删除和修改相关的sql语句,这会特别麻烦的!!!

相关推荐
phltxy1 小时前
Redis:从入门到精通的第一步
数据库·redis·缓存
User_芊芊君子1 小时前
数据库V9R4C19安全加固:最小权限部署与不可逆哈希存储实战
数据库·安全·哈希算法
兄弟加油,别颓废了。2 小时前
[特殊字符] SDN 可视化管理平台完整搭建教程(Vue + Flask + MySQL)
vue.js·mysql·flask
消失的旧时光-19434 小时前
SQL 第五篇:SQL 如何真正接入 Spring Boot 项目(企业 Mapper 分层实战)
数据库·spring boot·sql
dfdfadffa10 小时前
如何用模块化方案组织一个可扩展的前端组件库项目
jvm·数据库·python
2301_8125396710 小时前
SQL中如何高效实现分组数据的批量更新_利用窗口函数与JOIN
jvm·数据库·python
2501_9012005310 小时前
如何实现SQL存储过程存储过程参数标准化_统一命名规范
jvm·数据库·python
运气好好的11 小时前
Golang怎么用embed嵌入SQL文件_Golang如何将SQL迁移文件嵌入Go程序统一管理【技巧】
jvm·数据库·python
念何架构之路11 小时前
MySql常见ORM
数据库·mysql
平凡码工人12 小时前
navicat 17 lite 安装教程
mysql