目录
1.数据库介绍
🌈1.1数据库的分类
🌈1.2存储引擎
2.数据库的操作
🌈2.1创建数据库
编辑👿 1.查show databases;
👿2删除 drop database+库名
👿3.创建 create
查看创建数据库的详细信息
🌈2.2数据库的字符集和校验规则
🌈2.3数据库的创建
🌈2.4校验规则对数据库的影响
👿1编码集,校验规则本质会影响谁?
编辑
编辑
编辑
编辑
👿知识点补充:
👿编码集和校验规则的作用
🌈2.5修改数据库
🌈 2.6数据的备份
👿查看链接状况
3.表的操作
🌈3.1创建表
🌈3.2查找表
编辑
🌈3.3表的修改
👿3.31插入
👿 3.32修改
👿3.33删除
👿3.34表和列的改名
🌈 3.4慎重删除
这里我们是在xshell环境下进行mysql的代码编写的。
1.数据库介绍
🌈1.1数据库的分类
按照用途分类:
- 数据定义语言(DDL):用于定义数据库对象,如创建表、修改表结构等。
- CREATE:创建数据库、表、视图、索引等。
- ALTER:修改数据库、表、列、约束等。
- DROP:删除数据库、表、视图、索引等。
- 数据操作语言(DML):用于对数据库中的数据进行操作,如插入、更新、删除数据等。
- INSERT:插入数据。
- UPDATE:更新数据。
- DELETE:删除数据。
- 数据查询语言(DQL):用于查询数据库中的数据,如SELECT语句等。
- SELECT:查询数据。
- FROM:指定查询的数据表。
- WHERE:指定查询条件。
- GROUP BY:按照指定的列进行分组。
- HAVING:对分组后的数据进行筛选。
- ORDER BY:按照指定的列进行排序。
- 数据控制语言(DCL):用于控制数据库用户的访问权限,如GRANT、REVOKE语句等。
- GRANT:授权。
- REVOKE:撤销授权。
🌈1.2存储引擎
MySQL引擎存储是指MySQL数据库中使用的不同的存储引擎。存储引擎是MySQL提供的一种底层存储数据的机制,它负责处理数据的存储、管理、读取和查询等操作。在MySQL中,可以使用不同的存储引擎来存储数据,每种存储引擎都有自己的特点和适用场景。
- 查看存储引擎的命令:
show engines; //别忘分号
输入quit退出数据库,输入命令:
vim /etc/my.cnf
就可以查看我们配置的搜索引擎。
2.数据库的操作
🌈2.1创建数据库
CREATE DATABASE db_name; //database不带s,而且是data不是date
这是一般的格式,有时候我们还会加上一下限定词[if not exist](如果不存在,再创建数据库),注意大小写问题,数据库名是啥就是啥,不能大小写不分,但是其他操作名大小写可以通用。
我们先创建一个数据库,为了好演示,我们创建一个分屏。
先退出普通用户,然后输入命令:
1.
2. ll
👿 1.查show databases;
f凡是刚才uroot目录下的数据库在root目录下都能找到 ,注意当前目录是超级账户
那是不是就意味着我在右边的目录下创建一个文件就代表创建一个数据库?
但是绝对不建议这么做,这就是狸猫换太子了。
👿2删除 drop database+库名
比如删除stet1这个数据库。
👿3.创建 create
查看创建数据库的详细信息
show create database +库名;
seeyou库中和我们写的有点不太一样,这是数据库对数的优化。
🌈2.2数据库的字符集和校验规则
数据库必须要有一整套的字符集保证数据的存储,校验集保证数据的取。
- 字符集(character set)指的是一组字符的编码集合,用于将字符映射为计算机能够理解的数字编码,以便在计算机上进行存储和处理。不同的字符集支持不同的字符范围和编码方式,例如ASCII字符集支持128个字符,UTF-8字符集支持全球范围内的Unicode字符集。
- 校验集(collation)则是指对于特定字符集中的字符,定义了排序和比较规则。校验集会对字符集中的字符进行排序和比较,以便进行各种类型的操作,例如搜索、排序和匹配等。不同的校验集支持不同的字符排序和比较方式,例如utf8_general_ci校验集使用一般的Unicode排序规则,而utf8_bin校验集则按照二进制比较方式进行排序。
- 查看服务器字符集
SHOW VARIABLES LIKE 'character_set_server';
- 查看数据库字符集
SHOW CREATE DATABASE database_name;
- 查看表字符集
SHOW CREATE TABLE table_name;
- 查看列字符集
SHOW FULL COLUMNS FROM table_name;
如果说把后面的命令改成 character_set_% ,这里的%是模糊匹配也就是说查找所有character的编码集编码
SHOW VARIABLES LIKE 'character_set_%';
改成%叫模糊匹配,凡是character的全部显示出来。
一般字符集和校验规则是是匹配的。
- 查看校验规则的命令
show variables like 'collation_database'
上面查看编码集的也可以写成小写。
show variables like 'collation_%';
- 查看系统当中所支持的所以字符集:
show charset;
注意第三行default collation是编码集对应的校验集,如果匹配错了后面可能出错。
- 查看所以的校验集:
show collation;
一般我们使用最多的是utf-8,所以如果我们想把编码集改成默认utf-8可以执行以下操作:
切换到超级用户root然后输入命令:
vim /etc/my.cnf
然后重启mysql:
systemctl restart mysqld
这些编码集是给数据库和数据库中的表来用的,根本上就是给表来用的。就是我们在创建数据库时指定编码集和校验规则。(编码集合字符集一样)。
🌈2.3数据库的创建
1.默认编码集和校验规则。
cat 库名/db.opy //查看默认的编码集和校验规则
2.指明编码集gbk;
1.create database character set 编码集名称;
2.create database charset=编码集名称; //这里要加上=
这里他给我们自动匹配默认的校验规则。
3.指明校验规则
这里的校验规则直接写在编码集后面就行。如果没指明编码集,直接写校验规则就行。
1.collate 校验集名称
2.collate=校验集名称
未来我们创建数据库时不指明字符集和校验规则。默认的就行。
🌈2.4校验规则对数据库的影响
数据库使用的这些数据集和校验规则到底对数据库有啥影响?
👿1编码集,校验规则本质会影响谁?
其实影响的是数据库中创建的表的编码集和校验规则。
先创建两个数据库:
然后在gc_db库中创建一张表person,使用数据库命令:
use 数据库名;
查看表的属性:
desc 表名 //desc表上查一个表的属性列
往表中插入字符:
然后查看表中的所有列数据:
SELECT * FROM table_name; //返回表中的所有列的数据。
然后查看表中的字符。
select * from person where name='a';
可以发现他是不区分大小写的。
同理我们在bin_db数据库进行一模一样的操作:
这个是区分大小写的。
同样的编码集不同的校验规则,他俩的区别就表现出来了。
如果你忘记当前在那个数据库:
select database();
我们根据表中的name进行排列:未指定就是升序
select* from person order by name;
根据ascll码值进行的升序排列。
我们在切换到gc_db数据库,虽然不区分大小写,但是a一定在b前,b一定在c前,同理A也是
这里大小写的顺序可能会变化(根原始表的结构有关,原始表大写在前,那就大写在前面),但是单词的顺序不变。
查看创建的数据库的详细信息:
show create database 表名:
👿知识点补充:
为啥有时会在表明或者库名上加``(这个叫反引号,esc下面那个键)?
- 数据库名和表名使用反引号(`)进行包裹的主要原因是为了避免与MySQL保留关键字或语句产生冲突。如果你在数据库或表的名称中使用了MySQL的保留关键字或语句,MySQL可能会在执行查询时遇到问题。
- 用``(反引号)括起来的标识符是被认为是保留字、关键字或特殊字符的标识符。例如,如果您在表名中使用了MySQL关键字,MySQL就不会将其解释为关键字,而是将其解释为表名。
- 此外,使用``括起来的标识符还允许您在标识符中使用特殊字符,如空格、连字符和其他非字母数字字符。这可以让您在表名和列名中使用更具描述性的名称,以提高代码的可读性。
👿编码集和校验规则的作用
编码集和校验规则在数据库中的作用非常重要。编码集用于表示字符集,即定义了一组字符及其对应的编码方式,例如 ASCII、UTF-8、GBK 等,以便存储和处理数据时正确地解析字符。校验规则用于检验数据的正确性和完整性,以便防止出现数据错误或损坏。以下是它们的一些具体作用:
保证数据正确性:正确的编码集和校验规则能够确保数据的正确性,防止数据在存储和处理时出现错误或损坏。
支持多语言处理:不同的编码集支持不同的字符集,而不同的校验规则可以用于处理不同语言的数据,因此它们支持多语言处理非常重要。
提高数据的可读性:正确的编码集能够保证数据的可读性,而良好的校验规则能够让用户更加容易地检查和确认数据的正确性。
优化存储和检索性能:选择适当的编码集和校验规则,能够优化数据存储和检索的性能,减少存储和检索时的时间和空间成本。
总之,编码集和校验规则是数据库中非常重要的概念,它们能够保证数据的正确性、多语言处理、可读性和性能优化等方面,因此在数据库设计和应用中需要认真考虑它们的选择和应用。
🌈2.5修改数据库
alter database db_name;
要修改就修改编码集,或者编码集和校验规则。
🌈 2.6数据的备份
数据库的的备份是很重要的一件事,容不得一点马虎。有一种备份方式是直接拷贝这个数据库下的所有文件。但是这个做法很不好。。用张三的话来说就是不违法但是不道德。
数据库备份分类:
- 对数据进行备份
- 对操作语句进行备份(主流)
对数据进行备份不好,因为数据没有上下文,但是操作语句有上下文
命令:
mysqldump -P3306 -uroot -p -B gc_db>gc_db.sql
mysqldump
: 一个 MySQL 命令行工具,用于备份 MySQL 数据库;-P3306
: 指定 MySQL 服务端口号,这里是 3306;-uroot
: 指定 MySQL 用户名,这里是 root;-p
: 选项表示需要提示输入密码,执行该命令时将会提示输入密码;-B
: 指定需要备份的数据库名称,这里是 gc_db;gc_db>gc_db.sql
: 将备份数据输出到 gc_db.sql 文件中,这里使用大于符号>
来将输出导入到指定文件中。
这个可不是在数据库中完成的,而是切换到root目录下进行的。
- 备份的还原
这个实在mysql中进行还原的,不是在root下。
source +mysql所在路径+ database.sql;
- 然后在 show databases;
像备份一张表,或者备份多个数据库就不进行操作了。
👿查看链接状况
show processlist;
这里就可以把我们的数据库信息看的一清二楚。
3.表的操作
🌈3.1创建表
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
...
);
column1
,column2
等是你要创建的表的列名,datatype
是列的数据类型。- 可以在表创建时指定多个列,每个列以逗号分隔。
我们在创建一个学生表:
🌈3.2查找表
查找表一共有三种形式:
- 1.查看表的名称
- 2.查看表的属性
- 3.查看表的创建语句
show tables;
desc table_name;
show create table table_name \G //不带分号
其他演示过了,我们就看一下最后一个:
🌈3.3表的修改
接下来有点难度,但不多。效率不高的同志们可以休息一下再看。
改动还是alter+表名+要修改的内容,本质就三种:增加一个add,删除一个drop,修改一个modify。
👿3.31插入
我们继续用user表进行插入:
其实不写前面括号了的(id, name等)也是没问题的,但是意味着后面values插入是全部插入。
select * from table_name;
但是先在我又想加一列存每个人头像所在路径地址。是每个人的头像路径没存到数据库。我想把他们的头像地址再存到数据一份。
alter table table_name add 列名 其他属性;
👿 3.32修改
这个是修改某一列的某个或多个属性。
alter table user modify 列名 修改属性;
比如我们修改一下name的varchar.
但是这个修改是在原来的数据中进行修改还是直接覆盖掉原来的数据?
这个直接覆盖了原来的数据进行修改的。因为原来的name有注释这个没有。
👿3.33删除
如果我们想删除一列(id):
这个很简单,我就不过多介绍了。
👿3.34表和列的改名
- 修改列名:
alter table table_name change 列名 x新列名 属性;
- 修改表名
alter table table_name rename 新名字;
🌈 3.4慎重删除
MySQL 进行删除操作时需要慎重,主要原因是因为删除操作会永久性地将数据从数据库中删除,而且这个过程是不可逆的。因此,如果没有谨慎处理删除操作,可能会造成数据丢失、数据不一致或者数据泄漏等问题,对系统的稳定性和安全性造成威胁。
另外,在删除操作时,还需要注意如下几点:
删除前最好先备份:对于重要的数据或者数据量较大的情况,最好在进行删除操作前先备份数据,以便在需要的时候进行恢复。
注意删除条件:在进行删除操作时,需要根据实际情况明确删除条件,确保只删除需要删除的数据,避免误删或者删除不完整的数据。
删除操作可能会对性能造成影响:删除操作可能会导致数据库中的数据结构发生变化,从而影响数据库的性能。因此,在进行删除操作时,需要考虑到系统的负载情况,避免对系统性能产生过大影响。
总之,进行删除操作时需要谨慎对待,遵循数据库管理的最佳实践,以确保数据的完整性和安全性。