桐庐县住房和城乡建设局网站,wordpress页面加上html,网站关键字统计,网站开发时遇到的问题文章目录1. 创建数据库2. 字符集和校验规则3. 数据库的基本操作3.1 查看数据库3.2 显示创建数据库的语句3.3 修改数据库3.4 删除数据库3.5 备份#xff0c;还原数据库4. 查看数据库的连接情况1. 创建数据库
基本语法#xff1a; create database if not exists 数据库名 选项…
文章目录1. 创建数据库2. 字符集和校验规则3. 数据库的基本操作3.1 查看数据库3.2 显示创建数据库的语句3.3 修改数据库3.4 删除数据库3.5 备份还原数据库4. 查看数据库的连接情况1. 创建数据库
基本语法 create database if not exists 数据库名 选项1 选项2 if not exists 可有可无比如你创建的表和已经存在的表重名了如果不加if not exists就会直接报错。如果加上了 if not exists就不会报错也不会替换原来的表。 数据库名这个没得说看的起名就行。选项一: charset ? 指定数据库采用的字符集选项二collate 指定数据库字符集的校验规则 例子
1.创建一个库指定它的字符集为utf8 create database if not exists db2 charsetutf8; 创建一个使用utf字符集并带校对规则的数据库: create database if not exists db3 charsetutf8 collate utf8_general_ci; 2. 字符集和校验规则
字符集字符集其实就是一套文字符号及编码对应的文字及编码可以将人类可以识别的内容与计算机可以识别的信息进行互相转换。也就是说不同的字符集它相应的文字和编码不同。比如gbk是非常适用于中文环境utf8中英文混合的环境建议使用此字符集目前使用的比较多。校验规则凡是涉及到字符类型比较或排序的地方都和校验规则有关。字符集和校验规则的关系每个校验规则唯一对应一种字符集但一个字符集可以对应多种校验规则其中有一个是默认的。 Mysql的字符集和校验规则有4个级别的默认设置服务器级数据库级表级和字段级。
查看服务器级别的: show variables like character_set_server;这是字符集: show variables like collation_server,这是查看校验规则 查看数据库级别的 show variables like ‘character_set_database’; show variables like ‘collation_database’; 服务器级别库级别表级别列级别 服务器级别的字符集和校验规则在my.cnf里可以设置如果没有设置就是latin1和latin1_swedish_ci。库级别这个是在创建库的时候可以在选项1和选项2中设置字符集和校验规则如果没有设置那么就使用系统默认的库级别字符集和校验规则。但是如果系统没有默认的那么就使用服务器级别的字符集和校验规则。表级别和列级别都是在创建表的时候可以填上字符集和校验规则。表如果没有设置的话就使用库的字符集和校验规则。列级别如果没有设置的话就使用表的字符集和校验规则。 查看数据库支持的字符集 show charset; 查看数据库支持的校验规则 show collation; 接下来就来验证一下校验规则对数据库的影响
创建一个库w1它的校验规则是用utf8_ general_ ci这个是不区分字母大小写的。 create database w1 collate utf8_general_ci; 创建一个库w2它的校验规则是用用utf8_ bin这个是区分字母大小写的。 create database w2 collate utf8_bin; 在库w1和库w2都创建一个表表里面只有一个varchar都插入a,“b”,“A”,“B”: use w1; create table test1(name varchar(2)); insert into test1(name) values (“a”); insert into test1(name) values (“b”); insert into test1(name) values (“A”); insert into test1(name) values (“B”); w2和w1进行一样的操作只不过w2中的表名为test2。
插入成功的test1和test2 然后分别对test1和test2进行查询操作 select * from test1 where name “a”; select * from test2 where name “a”; 看到校验规则对查询的影响了吧这里其实可以创建表的时候设置表级别的校验规则但是本章是讲库操作的所以就直接设置库级别的校验规则由于表并没有给定校验规则所以默认使用库的校验规则。
像排序这种操作校验规则也是有影响的 3. 数据库的基本操作
3.1 查看数据库 show databases; 这是展示所有的库。 show tables; 这是展示库中的所有表。 当然你想展示一个库中的所有表前提就是你得use 想看的库的名。
3.2 显示创建数据库的语句 show create database w1; 注意/ *…… * /这个不是注释它的意思是 如果当前的mysql的版本大于4.01就执行此语句。
3.3 修改数据库 alter database 数据库名 选项1 选项2 这个主要是对数据库的字符集校验规则进行修改选项1 是 charset选项2 是collocate。
比如修改数据库的字符集就修改w1数据库上面可以看到它的字符集是utf8 alter database w1 charsetgbk 3.4 删除数据库
删除数据库的操作尽量不要干传说中的删库跑路就是这。但是Linux批量删除文件就是 rm -f /*这就是将根目录下的所有文件删除。如果还是利用文件删除无非就是删除一个目录因为数据库在Linux视角下就是一个目录。 drop database 数据库名 执行删除之后的结果:
数据库内部看不到对应的数据库对应的数据库文件夹被删除级联删除里面的数据表全部被删
3.5 备份还原数据库
删库前要备份数据库这是我们该做的切记 必须备份 数据库。
备份有两种方式
物理备份就是先将 /var/lib/mysql 中要备份的库(目录)进行打包操作将此包保存在一个路径下假如原来的库被删除了那么还原的操作就是将此包拷贝到/var/lib/mysql中然后解包。至于/var/lib/mysql 是我的服务器中 数据库的表和库保存的路径至于大家的情况可能不一样所以具体还要看my.cnf的配置。逻辑备份这个就是MySQL的内部操作了它是利用的备份工具mysqldump。之所以叫逻辑备份因为它备份的是 你创建库 以及在库中创建表的SQL语句。它的还原操作就是将原来的SQL语句再次执行一遍。对比以上备份方式物理备份占用的物理空间大但是还原的快逻辑备份占用的物理空间小但是还原的慢。
我们主要来看逻辑备份 mysqldump –u 用户名称 –h 主机名称 –p密码 待备份的数据库名称[tbname, [tbname…]] 数据库备份存储的文件路径备份文件名称.sql 比如对数据库w1进行备份 mysqldump -uroot -p w1w1.sql; 注意mysqldump是备份工具它的使用是在Linux命令行中的可不敢在MySQL命令行里使用哈。
上面语句的意思就是在当下目录备份w1为w1.sql 先来看看w1.sql里面是什么东东
-- MySQL dump 10.13 Distrib 5.6.51, for Linux (x86_64)
--
-- Host: localhost Database: w1
-- ------------------------------------------------------
-- Server version 5.6.51/*!40101 SET OLD_CHARACTER_SET_CLIENTCHARACTER_SET_CLIENT */;
/*!40101 SET OLD_CHARACTER_SET_RESULTSCHARACTER_SET_RESULTS */;
/*!40101 SET OLD_COLLATION_CONNECTIONCOLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET OLD_TIME_ZONETIME_ZONE */;
/*!40103 SET TIME_ZONE00:00 */;
/*!40014 SET OLD_UNIQUE_CHECKSUNIQUE_CHECKS, UNIQUE_CHECKS0 */;
/*!40014 SET OLD_FOREIGN_KEY_CHECKSFOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS0 */;
/*!40101 SET OLD_SQL_MODESQL_MODE, SQL_MODENO_AUTO_VALUE_ON_ZERO */;
/*!40111 SET OLD_SQL_NOTESSQL_NOTES, SQL_NOTES0 */;--
-- Table structure for table test1
--DROP TABLE IF EXISTS test1;
/*!40101 SET saved_cs_client character_set_client */;
/*!40101 SET character_set_client utf8 */;
CREATE TABLE test1 (name varchar(2) DEFAULT NULL
) ENGINEInnoDB DEFAULT CHARSETutf8;
/*!40101 SET character_set_client saved_cs_client */;--
-- Dumping data for table test1
--LOCK TABLES test1 WRITE;
/*!40000 ALTER TABLE test1 DISABLE KEYS */;
INSERT INTO test1 VALUES (a),(A),(b),(B);
/*!40000 ALTER TABLE test1 ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONEOLD_TIME_ZONE */;/*!40101 SET SQL_MODEOLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKSOLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKSOLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENTOLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTSOLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTIONOLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTESOLD_SQL_NOTES */;-- Dump completed on 2023-02-21 17:40:47
以/* !开头、*/结尾的语句为可执行的MySQL注释这些语句可以被MySQL执行但在其他数据库管理系统中被作为注释忽略这可以提高数据库的可移植性文件开头指明了备份文件使用的MySQLdump工具的版本号10.13 接下来是备份账户的名称和主机信息以及备份的数据库的名称最后是MySQL服务器的版本号5.6.51。然后抛开/ *…… * /看到内容大多数都是SQL语句。 先去把w1库删除了 drop database w1; show databases; 可以看到没有w1库了。 还原w1库
还原w1库前先得创建一个w1的空库这样才能使用source进行还原create database w1;有了w1空库后在MySQL命令行输入use w1source w1.sql;这样就还原成功了 可以查看一下w1库中的表test1 没有问题。 以上是备份一个单个库但是还有其他的使用情况
情况1备份一个库就是上面讲的例子。情况2备份一个库中的一张表或多张表。情况3备份多个库。
我们来看情况2我先创建一个库hh1里面创建两张表
创建库 创建表 在表中插入数据 退出mysql使用mysqldump对hh1的表u1进行备份不备份u2
基本语法mysqldump -u root -p 数据库名 表名1 表名2 路径文件名.sql mysqldump -uroot -p hh1 u1hh1.sql 备份成功后进入sql服务因为这里还是只备份了一个库所以在 备份前还需要创建一个新的空库 hh1然后use hh1后输入source hh1.sql;这样就完成了备份。 然后来看情况3备份多个库
基本语法 mysqldump -u root -p -B 数据库名1 数据库名2 ... 数据库存放路径文件名.sql
注意这里有一个选项非常重要那就是 -B这个选项其实在备份一个单库时也可以用如果在单库备份里也加上-B参数那么就不需要像上面那样建立一个空库。
比如
我备份w1w2 库mysqldump -uroot -B -p w1 w2w12.sql;
删除w1w2 库后再进行备份直接在mysql命令行上输入source w12.sql;
这样就备份成功了。 以上是关于备份还原的基本操作。
4. 查看数据库的连接情况
基本语法 show processlist 可以看到当前数据库只有我在使用我新起一个窗口连接mysql 发现这里连接用户变为2个了。
作用就是可以告诉我们当前有哪些用户连接到我们的MySQL如果查出某个用户不是你正常登陆的很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时可以用这个指令来查看数据库连接情况。