[MySQL初阶]MySQL(1)MySQL的理解、库的操纵、表的操纵
标题:MySQL(1)MySQL的理解、库的操纵、表的操纵@水墨不写bug
https://i-blog.csdnimg.cn/direct/a56554ccf57d41d3a74299e0eff7b0db.png#pic_center
一、mysql登录的基本介绍
在确保MySQL处于运行状态下,在linux命令行输入指令:
mysql -h 127.0.0.1 -P 3306 -u root -p
解释:
-h:指明登录部署了MySQL的主机
-P(大写):指明我们要访问的端口号
-u:指明登录用户
-p(小写):指明需要通过输入密码登录
二、MySQL的基本理解
1.为什么可以在本地查询到mysqld?
我们可以通过ps axj | grep mysql 指令可以查看到运行的mysql,以及mysqld:
https://i-blog.csdnimg.cn/direct/0c39ed77920b42b389ae7695ded4e0d8.png
其中:mysql是数据库服务的客户端;mysqld是数据库服务的服务端。
根据现有的理解,MySQL不是一个网络服务吗,为什么可以在本地查询到mysql的服务端mysqld?
mysqld确实是MySQL的服务端,并且可以在本地历程列表中查询到mysqld,这是因为mysqld作为MySQL的服务器后台步伐,它在后台运行并监听特定的端口(通常是3306端口),以便客户端步伐可以毗连并访问数据库。
[*] mysqld的作用
:
[*]mysqld是MySQL的服务器步伐,它负责处置处罚客户端的毗连哀求、执行SQL语句、管理数据库文件等。
[*]当客户端(如mysql命令行工具、图形化管理工具等)尝试毗连到MySQL数据库时,实际上是毗连到mysqld历程。
2.MySQL数据库、表结构 和 linux目录、文件 结构的对应关系?
当我们登录MySQL,可以先运行最简单的一条指令:创建一个数据库
create database db_1;
https://i-blog.csdnimg.cn/direct/5ff710d3098944e19dd52b51b2c5ab49.png
这样我们就成功创建了第一个MySQL数据库,可以通过show databases 查看:
show databases;
https://i-blog.csdnimg.cn/direct/ca2d5c6b93f04ee6bc11d6848962e5f1.png
大概你会发现出现了就像上图一样的很多数据库,这些数据库大概是体系默认就有的,不必担心。
小结:
1.创建MySQL数据库:create database +数据库名称;
2.查看现有的数据库:show databases;
3.运行mysql指令,在末尾需要加上分号“;”,与C++类似。
但是这些数据库和linux的目录树有什么关系?
当我们进入 /var/lib/mysql 这个目录,会发现这个目录下就有我们刚刚创建的db_1!
https://i-blog.csdnimg.cn/direct/3dd9a82e90114de7ae7c77163056bd68.png
这就验证了上一篇安装后顺便讲述的结论:(如何在Ubuntu快速安装MySQL,开启高效管理海量数据的新天下大门?)
[*]创建数据库,本质就是在linux的一个特定目录下创建一个目录;
[*]在数据库内建表,本质就是在linux下的一个目录中创建文件;
[*]数据库的本质其实也是文件,只不外这个文件不直接由我们直接操纵,而是由数据库伴我们进行操纵。
三、.快速上手使用数据库
在这里,我们扬弃刻板的说教,直接先用一用mysql:
创建数据库
create database db_1;
选择要用的数据库
use db_1;
创建数据库表
create table if not exists students(
id int,
name varchar(13),
sex varchar(3)
);
表中插入数据
insert into students (id, name, sex) values (1, '张三', '男');
insert into students (id, name, sex) values (2, '李四', '女');
insert into students (id, name, sex) values (3, '王五', '男');
查询表中的数据
select * from students;
查询到的数据会是如下:
https://i-blog.csdnimg.cn/direct/9270324215fc4a8589ca0c31aa244451.png#pic_center
这样就说明我们开端成功使用了mysql!!
这个时候,我们在linux中进入db_1,会发现目录内部已经创建了一些文件了,这些文件就是students表对应linux目录树的文件。
https://i-blog.csdnimg.cn/direct/2ad9e61bd2b5429d855ffaeaf6292407.png#pic_center
四、理解MySQL数据库
1.库的操纵
1.1创建数据库语法
CREATE DATABASE db_name
[create_specification
[,create_specification] ...]
create_specification:
CHARACTER SET charset_name
COLLATE collation_name
[*]大写的表示关键字
[*][] 是可选项
[*]CHARACTER SET: 指定数据库采用的字符集
[*]COLLATE: 指定数据库字符集的校验规则
1.2数据库的编码集
在创建数据库的时候,会发现我们可以指定数据库的编码集和校验集:
字符集——数据库未来存入数据使用的编码格式;
校验集——支持数据库进行字段比力的编码,是从数据库读取数据采用的编码格式;
示例:创建一个一个数据库,用来记录同学们的各科结果,字符集和校验集都采用utf-8编码:
https://i-blog.csdnimg.cn/direct/0a494734b46f4733b7ac22abe2311e83.png
查看体系默认字符集以及校验规则
运行如下指令,可以查看
show variables like 'character_set_database';
https://i-blog.csdnimg.cn/direct/7345ca5d0ac34c688ca09e71f9004c39.png
show variables like 'collation_database';
https://i-blog.csdnimg.cn/direct/fdea723dcb5b4cc28b249b07b8fd4bec.png
查看数据库支持的全部的字符集
https://i-blog.csdnimg.cn/direct/ce3139a22c744bb8832df4b1ddd39990.png
查看数据库支持的全部的校验规则
https://i-blog.csdnimg.cn/direct/bffb7b6112b74c75b74898740b3b906b.png
校验规则对数据库的影响,为什么要指定数据库的编码规则?
1.数据库中表的编码规则继续自数据库;
2.使用不同的校验规则,即使对雷同的数据,查询的结果也会不同。
示例一:使用校验规则分别为utf8_general_ci(不区分大小写)、utf8_bin(区分大小写)查询雷同的表结构:
name:a A b B c C d D
执行如下的查询语句:
select * from tem where ch = 'a';
utf8_general_ci(不区分大小写):
https://i-blog.csdnimg.cn/direct/4175d48eec3842aea73423ec31140ce8.png
utf8_bin(区分大小写):
https://i-blog.csdnimg.cn/direct/a9e6e3b4f0af48419e2645ec672fe493.png
示例二、区分与不区分大小写的排序结果
不区分大小写的排序
https://i-blog.csdnimg.cn/direct/e3aaa9602c7e451b9e1f322e2b95ced4.png
区分大小写的排序
https://i-blog.csdnimg.cn/direct/bfe1f4197c3e40aca2fb91d7b6396594.png
1.3 查看创建数据库的语句
我们想要知道一个数据库当初是如何创建出来的,可以使用如下的指令来查看创建这个数据库的语句:
show create database +数据库名称;
示例:查看上面演示的时候创建的db_1的数据库语句:
https://i-blog.csdnimg.cn/direct/830592479ca54a41b0e262111a3aba11.png
在指令的结尾处加上“\G”,可以让输出更加便于阅读。
1.4修改数据库
修改数据库的语法
ALTER DATABASE db_name
...]
alter_spacification:
CHARACTER SET charset_name
COLLATE collation_name
对数据库的修改主要是对数据库的字符集和校验集进行修改。
示例:把上面演示的时候创建的db_1结果数据库的字符集修改为gbk:
alter database db_1 charset=gbk;
https://i-blog.csdnimg.cn/direct/c6c1d3a0f82e49a5ad68982f8566e6de.png
1.5删除数据库
DROP DATABASE db_ name;
删除之后:
mysql内部看不到对应的数据库
linux对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
删除数据库要慎重!
1.6查询数据库
在使用某一个数据库之前,需要先选择这个数据库:
use +数据库名称
;
如果想要查询我们当前处于的数据库,如下指令可以显示我们当前所处的数据库名称。
select database();
1.7数据库的备份和规复
1.7.1数据库备份:
数据库的备份方式有多种,既可以在linux目录树中直接把文件拷贝一份,备份起来,也可以把创建数据库的语句生存起来。
前者 通常数据量庞大,不推荐;
后者 则是MySQL备份数据的方式:
在linux命令行中运行如下指令,注意是linux中,而不是mysql中!!
mysqldump -u root -P3306 -p -B 数据库名 > 数据库备份存储的文件路径+保存的文件名(.sql后缀)
https://i-blog.csdnimg.cn/direct/248d1c439bbd4986bc29de8eaf71901f.png
此时,若打开.sal文件,会发现备份数据库的内容其实就是把整个创建数据库,建表,导入数据的语句都装到了这个文件中。
1.7.2数据库还原
在mysql中运行如下指令:
source +备份的数据库的路径和文件名(.sql后缀)
还原的sql语句,本质是把建库,建表,导入数据的历史有效命令全都执行了一遍。
1.7.3注意事项
[*]如果备份的不是整个库,而是库中的几个表该如何操纵?
运行如下指令即可:
mysqldump -u root -p 数据库名称 表名1 表名2 ... > 路径(具体到每一个.sql文件)
[*]如果同时备份多个数据库
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
[*]如果在备份一个数据库时,没有带上-B参数?
在规复数据库时,需要先创建一个空数据库,然后:
use +数据库名称
然后再用source还原即可。
1.8查看数据库的链接情况
语法:
show processlist;
https://i-blog.csdnimg.cn/direct/c7e35f71b640481fb37cbc06e998923c.png
这个命令对应的输出可以告诉我们那些用户链接到了我们的MySQL,可以排查数据库被黑入的情况。
对我们一样平常而言的用途是当我们发现数据库比力卡的时候,可以看看数据库的链接情况。
2.表的操纵
2.1创建表
语法:
CREATE TABLE tb_name (
col1 datatype,
col2 datatype,
col3 datatype
) charset=字符集 collate=校验规则 engine=存储引擎
;(这是我比较喜欢的写法)
charset=字符集 collate=校验规则 engine=存储引擎
如果不写上述部分设置,则mysql会使用默认的字符集,校验集,存储引擎。
**说明:
coln:表示列名称
datatype:表示数据类型
charset:表示字符集;若不指定,则继续数据库的字符集
collate:校验规则;若不指定,则继续数据库的校验规则
2.2删除表
语法:
DROP TABLE tbl_name [, tbl_name] ...
示例:删除上述创建的users表;
drop table users;
2.3查看表
语法:
desc + 表名称;
示例:创建一个表,并查看这个表。
create table if not exists users(
id int,
name varchar(13),
passwd char(32),
birthday date
);
desc users;
输出结果:
https://i-blog.csdnimg.cn/direct/68f60b3db90c4399858524368ed302ee.png
2.4修改表
在实际开辟中,修改表一样平常是不推荐的;
在项目开辟初期,就要决定并敲定表的结构筹划,特殊是开辟职员和项目经理之间的协调。
否则,在项目开辟中后期,上层的代码逻辑和数据库之间的关系在修改表之后,往往会出现各种问题。
如果不得已需要修改表,好比字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎;以及增长字段,删除字段等,就需要如下的语法:
ALTER TABLE tablename ADD (column datatype [,column
datatype]...);
ALTER TABLE tablename MODIfy (column datatype [,column
datatype]...);
ALTER TABLE tablename DROP (column);
2.4.1查看comment
在修改表之前,需要先理解清晰表中的每一个字段代表的意义,这就需要查看comment字段:
show create table + 表名 \G;
对,这就是上面的查看创建表语句的sql语句,在输出中也可查看到comment 内容。(comment是类似于解释的东西,在建表的时候放在每列的类型反面)
总结:
[*]修改表名:
alter table 现在表名 rename to 新表名;
[*]增长某一列:
alter table 表名 add 新列名 datatype comment after 现有列名;
示例:在users表中新增一个语文结果:
https://i-blog.csdnimg.cn/direct/3f9691bfb59741fa9d577a1a194ca5ab.png
[*]删除某一列:
alter table users drop password;
运行前后比力:https://i-blog.csdnimg.cn/direct/e264871d348c458e85b90fc69af11252.png
[*]修改某一列:
alter table 表名 modify 列名 新datatype;(会覆盖原有的数据类型)
示例:把users内的name列的长度扩大为100:
alter table users modify name varchar(100);
https://i-blog.csdnimg.cn/direct/366a8c09ba7244209d21baf34cc9b8ce.png
五、总结
能看到这里,你很厉害。
通过本篇文章,你应该知道:
[*] 1.mysql数据库如何登录;
[*] 2.mysql数据库的内容和linux目录树之间的对应关系;
[*] 3.本地可以查询到的mysqld是实际执行sql语句的;
[*] 4.mysql数据库的增删查改,以及相干sql语句如何使用;
[*] 5.mysql数据库内的表的增删查改,以及相干语句如何使用。
当然知道了这些语法并不代表什么,希望你继续学习更加深入的知识。
此外这篇文章,我认为起到了不错的引导作用!
~完
转载请注明出处
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]