MySQL之库和表操作

目录

一:对库的操作

1.创建数据库

2.查看数据库列表

3.显示创建数据库的语句

4.删除数据库

5.字符集与校验集

6.确认当前所处的数据库

7.修改数据库

8.备份和恢复

9.查看连接情况

二:对表的操作

1.创建表

2.查看表

3.删除表

4.修改表

接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧

一:对库的操作

1.创建数据库

语法:create database (if not exists) 库名 (charset=编码集) (collate 校验集);

注:(1).此处及后续()中的内容可写可不写

(2).编码集和校验集后续介绍

(3).当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,

校验规则是:utf8_general_ ci

sql 复制代码
mysql> create database d1;
sql 复制代码
mysql> create database if not exists d2;
Query OK, 1 row affected (0.00 sec)

当对应数据库存在时,则不再创建一个新的;不存在时,则新创建一个

本质是在 /var/lib/mysql下创建一个目录

2.查看数据库列表

sql 复制代码
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| d1                 |
| hello              |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
7 rows in set (0.00 sec)

3.显示创建数据库的语句

语法: show create database 库名;

sql 复制代码
mysql> show create database d1;
+----------+-------------------------------------------------------------+
| Database | Create Database                                             |
+----------+-------------------------------------------------------------+
| d1       | CREATE DATABASE `d1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-------------------------------------------------------------+
1 row in set (0.00 sec)

说明:

(1).数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字

(2)./*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话

4.删除数据库

语法:drop database 库名;

sql 复制代码
mysql> drop database d1;
Query OK, 0 rows affected (0.03 sec)

执行删除之后的结果:

数据库内部看不到对应的数据库

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

因此不要随意删除数据库

5.字符集与校验集

在创建数据库时,有两个编码集:数据库字符集和数据库校验集

字符集:数据库未来存储数据采用的编码格式

校验集:支持数据库进行字段比较而使用的编码,本质是一种读取数据库中数据的采用的编码格式

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

general_ ci

数据库无论对数据做任何操作,必须保证操作和编码时的编码是一致的

(1)查看系统默认字符集以及校验规则

sql 复制代码
mysql> show variables like 'character_set_database';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| character_set_database | utf8  |
+------------------------+-------+
1 row in set (0.00 sec)

mysql> show variables like 'collation_database';
+--------------------+-----------------+
| Variable_name      | Value           |
+--------------------+-----------------+
| collation_database | utf8_general_ci |
+--------------------+-----------------+
1 row in set (0.00 sec)

(2)查看数据库支持的字符集

sql 复制代码
mysql> show charset;

(3) 查看数据库支持的字符集校验规则

sql 复制代码
mysql> show collation;

(4) 查看每个默认内部的校验规则

sql 复制代码
mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+

(5) 使用指定编码创建数据库

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

sql 复制代码
create database db2 charset=utf8;

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

sql 复制代码
create database db3 charset=utf8 collate utf8_general_ci;

(6) 校验规则对数据库的影响

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

sql 复制代码
mysql> create database test1 collate utf8_general_ci;

mysql> use test1;

mysql> create table person(name varchar(20));

mysql> insert into person values('a');

mysql> insert into person values('A');

mysql> insert into person values('b');

mysql> insert into person values('B');

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

sql 复制代码
mysql> create database test2 collate utf8_bin;

mysql> use test2;

mysql> create table person(name varchar(20));

mysql> insert into person values('a');

mysql> insert into person values('A');

mysql> insert into person values('b');

mysql> insert into person values('B');

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

sql 复制代码
mysql> use test1;

mysql> select * from person where name='a';
+------+
| name |
+------+
| a    |
| A    |
+------+

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

sql 复制代码
mysql> use test2;

mysql> select * from person where name='a';
+------+
| name |
+------+
| a    |
+------+

可以看出校验集是会影响比较结果的

6.确认当前所处的数据库

sql 复制代码
mysql> select database();
+------------+
| database() |
+------------+
| test2      |
+------------+

7.修改数据库

语法:alter database 库名 (charset=字符集) (collate 对应的校验集)

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

sql 复制代码
mysql> alter database test2 charset=gbk collate gbk_chinese_ci;
Query OK, 1 row affected (0.00 sec)

8.备份和恢复

备份:

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

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

sql 复制代码
# mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql

备份数据库中的表

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

同时备份多个数据库

sql 复制代码
# mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径

还原:

sql 复制代码
mysql> source D:/mysql-5.7.22/mytest.sql; 

9.查看连接情况

show processlist; 可以告诉我们当前有哪些用户连接到我们的MySQL

二:对表的操作

1.创建表

(1)语法:

create table(if not exists) table_name (

field1 datatype,

field2 datatype,

field3 datatype

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

说明:field 表示列名

datatype 表示列的类型

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

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

(2)实例

sql 复制代码
mysql> create table if not exists t1(
    -> id int,
    -> name varchar(20) comment'用户名',
    -> password char(32) comment'密码',
    -> birthday date comment'生日'
    -> )character set utf8 collate utf8_general_ci engine MyIsam;
Query OK, 0 rows affected (0.01 sec)

说明:不同的存储引擎,创建表的文件不一样。

users 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:

users.frm:表结构

users.MYD:表数据

users.MYI:表索引

默认存储引擎是innodb

2.查看表

(1) 显示当前所在数据库有几张表

sql 复制代码
mysql> show tables;
+-----------------+
| Tables_in_test2 |
+-----------------+
| person          |
| t1              |
+-----------------+

(2) 查看具体一个表的详细信息/表结构信息

语法: desc 表名

sql 复制代码
mysql> desc t1;
+----------+-------------+------+-----+---------+-------+
| 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    |       |
+----------+-------------+------+-----+---------+-------+

(3)显示创建表时的详细信息

语法:show create table 表名 \G;

sql 复制代码
mysql> show create table t1 \G;
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL COMMENT '用户名',
  `password` char(32) DEFAULT NULL COMMENT '密码',
  `birthday` date DEFAULT NULL COMMENT '生日'
) ENGINE=MyISAM DEFAULT CHARSET=utf8

3.删除表

语法格式:drop table 表名;

sql 复制代码
mysql> drop table person;
Query OK, 0 rows affected (0.02 sec)

4.修改表

(1)修改表名为employee

语法: alter table 原表名 rename to 新表名;

sql 复制代码
mysql> alter table t1 rename to employee;
Query OK, 0 rows affected (0.00 sec)

(2)在指定列后新增一列

语法:alter table 表名 add 新列名 列类型 其它 after 原有列名;

sql 复制代码
mysql> alter table employee add imagepath varchar(128) comment'图片路径' after birthday;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+-----------+--------------+------+-----+---------+-------+
| 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    |       |
| imagepath | varchar(128) | YES  |     | NULL    |       |
+-----------+--------------+------+-----+---------+-------+

(3)指定列属性做修改

语法: alter table 表名 modify 列名 新的列属性;

sql 复制代码
mysql> alter table employee modify name varchar(60);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| id        | int(11)      | YES  |     | NULL    |       |
| name      | varchar(60)  | YES  |     | NULL    |       |
| password  | char(32)     | YES  |     | NULL    |       |
| birthday  | date         | YES  |     | NULL    |       |
| imagepath | varchar(128) | YES  |     | NULL    |       |
+-----------+--------------+------+-----+---------+-------+

(4) 删除一列

语法:alter table 表名 drop 列名;

sql 复制代码
mysql> alter table employee drop imagepath;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| name     | varchar(60) | YES  |     | NULL    |       |
| password | char(32)    | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

(5) 修改列名称

语法:alter table 表名 change name 新列名以及相关属性;

sql 复制代码
mysql> alter table employee change name xingming varchar(60);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| xingming | varchar(60) | YES  |     | NULL    |       |
| password | char(32)    | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
相关推荐
猿月亮几秒前
MySQL5.7安装图文详细步骤(保姆级教程)-mysql5.7下载安装
mysql·adb
huan1991104 分钟前
nacos2.3.0 接入pgsql或其他数据库
数据库
changhong198625 分钟前
mybatisPlus打印sql配置
数据库·sql
l1t27 分钟前
用官方安装脚本安装duckdb 1.5并测试加载各种插件
数据库·docker·postgresql·kylin
jinanmichael28 分钟前
Mybatis控制台打印SQL执行信息(执行方法、执行SQL、执行时间)
数据库·sql·mybatis
J2虾虾42 分钟前
给Redis增加密码
数据库·redis·缓存
Mr数据杨43 分钟前
【Dv3Admin】Django通用自定义工作台卡片
数据库·django·sqlite
山峰哥1 小时前
SQL优化全攻略:从索引策略到Explain实战解析
大数据·数据库·sql·oracle·性能优化·编辑器
JuneXcy1 小时前
第9章 关系模式的规范化设计理论
数据库·mysql
larance2 小时前
NebulaGraph 数据库部署与运维指令清单
linux·服务器·数据库