文章目录
- 1.0 MySQL基本使用
- 1.1 理解数据库操作
- 2.0 MySQL数据库操作详解
- 2.1创建数据库
- 2.2 字符集和校验规则
- 2.2修改数据库
- 2.3删除数据库
- 2.4查看数据库链接
1.0 MySQL基本使用
1.1 理解数据库操作
查看数据库配置文件
指令: vim /etc/my.cnf
登录数据库
指令: mysql -h +ip + -p + port + -uroot -p
[clx@VM-20-6-centos mysql]$ mysql -uroot -p //登录本机mysql可以简化
[clx@VM-20-6-centos mysql]$ mysql -h 127.0.0.1 -P 3306 -u root -p
查看MySQL中的库
指令: show databases
可以看到数据库中中的库与datadir目录下的各个目录一一对应
添加MySQL中的库
指令: create database + database_name ;
MariaDB [(none)]> create database clx_database; //添加库
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> show databases; //查看库
+--------------------+
| Database |
+--------------------+
| information_schema |
| clx_database |
| demo_db |
| mysql |
| performance_schema |
| test |
+--------------------+
6 rows in set (0.00 sec)
可以看到我们在MySQL中创建了一个名为clx_database库,在配置文件中的datadir 目录下就创建了一个clx_database目录.所以在MySQL中建立一个库的本质,就是在datadir 目录下创建一个目录
选择数据库
指令: use + clx_database(数据库名称);
在MySQL库中创建表
MariaDB [(none)]> use clx_database
Database changed
MariaDB [clx_database]> create table if not exists `hello` ( //若hello表不存在则进行创建
-> name varchar(16) not null, //第一个参数 名字:name 类型:varchar(16)
-> age int not null //第二个参数 名字:age 类型:int
-> );
Query OK, 0 rows affected (0.01 sec) //表示创建成功
查看MySQL库中的表
指令: show tables;
所谓的创建数据库表,本质就是在特定的目录下创建特定的文件!(一张表可能对应多个文件,和存储引擎有关)
服务器找到对应的库和表本质就是,找到对应的目录以及文件
查看表结构
指令:desc + 表名称;
向表中插入数据
指令:insert hello(name age) values (‘clx’, 19);
将表中数据全部打印
指令: select * from + 表名称;
删除MySQL的库
指令: drop database + 数据库名;
2.0 MySQL数据库操作详解
2.1创建数据库
1.创建名为 clx_database 的数据库
create database clx_database
说明:当我们创建数据库没有指定字符集和校验规则时,我们希望系统使用默认字符集:utf8,校验规则是:utf8_general_ ci(可以支持中文存储), 当然我们也可以去系统的配置文件中修改默认字符集和校验规则
2.创建一个使用utf8字符集,utf8_general_ci为校验规则的 clx_database 数据库
create database clx_database charset=utf8 collate utf8_general_ci;
2.2 字符集和校验规则
字符集:每种字符集代表一种将字符转换成二进制序列方式
校对规则:每种校对规则代表一种将二进制序列转化成字符的方式
字符集和校对规则一一对应,应该成对使用,若使用不匹配的字符集和校对规则可能会出现乱码,数据错乱等现象
2.2.1 查看系统默认字符集以及校验操作
show variables like 'character_set_database';
show variables like 'collation_database';
我已经将我的MySQL默认设置调整好了,若不清楚如何改默认设置可以看一下 FatePuffer大佬的这篇博客 配置MySQL数据库
2.2.2 查看MySQL支持的字符集和校验规则
show charset //查看支持的字符集
show collation //查看支持的校验规则
2.2.3 字符集和校验规则不匹配对数据库的影响
创建两个数据库,两者的字符集均为utf8, 前者的校验规则使用 utf8_general_ci【不区分大小写】,后者的校验规则使用utf8_bin【区分大小写】
MariaDB [(none)]> create database test1 charset=utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create database test2 charset=utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> show create database test1;
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| test1 | CREATE DATABASE `test1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> show create database test2;
+----------+---------------------------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------------------------+
| test2 | CREATE DATABASE `test2` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ |
+----------+---------------------------------------------------------------------------------+
1 row in set (0.00 sec)
注意:当字符集和校准规则是匹配的时候,使用show create database database_name; 查看库信息时,校准规则会被省略,若不匹配则会打印出来
MariaDB [test1]> create table person(name varchar(20)); //在test1数据库中创建person表
Query OK, 0 rows affected (0.01 sec)
MariaDB [test1]> insert into person values('a');
Query OK, 1 row affected (0.01 sec)
MariaDB [test1]> insert into person values('b');
Query OK, 1 row affected (0.01 sec)
MariaDB [test1]> insert into person values('A');
Query OK, 1 row affected (0.00 sec)
MariaDB [test1]> insert into person values('B');
Query OK, 1 row affected (0.00 sec)
MariaDB [test1]> select * from person ;
+------+
| name |
+------+
| a |
| b |
| A |
| B |
+------+
4 rows in set (0.00 sec)
MariaDB [test1]> select * from person where name='a'; //可以发现并没有区分大小写
+------+
| name |
+------+
| a |
| A |
+------+
2 rows in set (0.00 sec)
MariaDB [test1]> use test2
Database changed
MariaDB [test2]> create table person(name varchar(20));//在test2目录中创建person表
Query OK, 0 rows affected (0.01 sec)
MariaDB [test2]> insert into person values('a');
Query OK, 1 row affected (0.00 sec)
MariaDB [test2]> insert into person values('b');
Query OK, 1 row affected (0.00 sec)
MariaDB [test2]> insert into person values('A');
Query OK, 1 row affected (0.01 sec)
MariaDB [test2]> insert into person values('B');
Query OK, 1 row affected (0.00 sec)
MariaDB [test2]> select * from person
-> ;
+------+
| name |
+------+
| a |
| b |
| A |
| B |
+------+
4 rows in set (0.01 sec)
MariaDB [test2]> select * from person where name='a';//发现区分大小写,只打印了一个数据
+------+
| name |
+------+
| a |
+------+
1 row in set (0.00 sec)
MariaDB [test2]>
通过上述实验我们可以发现使用相同的字符集但是若校验规则不同会影响数据库的运行结果
2.2修改数据库
指令:alter database database_name charset=gbk
将指定数据库的字符集改成gbk
MariaDB [(none)]> show create database test1;
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| test1 | CREATE DATABASE `test1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec)
MariaDB [test1]> alter database test1 charset=gbk;
Query OK, 1 row affected (0.00 sec)
MariaDB [test1]> show create database test1;
+----------+---------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------+
| test1 | CREATE DATABASE `test1` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+---------------------------------------------------------------+
1 row in set (0.00 sec)
2.3删除数据库
指令:drop database database_name;
MariaDB [test1]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| demo_db |
| mysql |
| performance_schema |
| test1 |
| test2 |
+--------------------+
6 rows in set (0.00 sec)
MariaDB [test1]> drop database test1; drop database test2;
Query OK, 1 row affected (0.01 sec)
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| demo_db |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)
2.4查看数据库链接
指令:show processlist;