MySQL笔记六

本文介绍了MySQL的预处理语句,解释了其提高效率的原理,并通过示例展示了如何定义、执行和删除预处理语句。此外,还详细阐述了复制表的不同方法,包括结构复制、数据复制和完整复制。同时,讲解了数据的导出,如使用内置函数和mysqldump工具。最后,提到了字符集的设置以及数据的导入,包括LOAD DATA INFILE和source命令的使用。
摘要由CSDN通过智能技术生成

MySQL高级进阶:

预处理(绑定变量):

什么是预处理:(我的理解就是宏)

从MySQL 4.1开始,就支持预处理语句(Prepared statement),这大大提高了客户端和服务器 端数据传输的效率。当创建一个预定义SQL时,客户端向服务器发送一个SQL语句的原型;服务器 端接收到这个SQL语句后,解析并存储这个SQL语句的部分执行计划,返回给客户端一个SQL语句 处理句柄,以后每次执行这条SQL,客户端都指定使用这个句柄。

 预处理的优势:

 预处理的基本使用:

#定义预处理语句 PREPARE stmt_name FROM preparable_stmt;
#执行预处理语句 EXECUTE stmt_name [USING @var_name [, @var_name] ...];
#删除(释放)定义 {DEALLOCATE | DROP} PREPARE stmt_name;

例:利用预处理语句查询employee表中的信息

use mydb;
#定义预处理语句
prepare sql_employee from 'select * from employee where name=?';
#设置预处理的变量
set @name1='Jean';
set @name2='李四';
#执行预处理语句
execute sql_employee using @name1;
#删除预处理语句
drop prepare sql_employee;
#预处理语句只在当前会话生效,离开就没有了,所以不删除也是可以的

复制表的几种方式:

        在开发中要对表进行处理,一般都需要先复制一份表,再处理数据。

例:

#创建一张表
create table t1(
    id int not null auto_increment primary key,
    name varchar(20)
);
#添加数据
insert into t1 (name) values ('Jean');
insert into t1 (name) values ('Wearn');
#添加索引
create index ind_name on t1 (name);

#只复制结构
create table t2 like t1;
#复制数据
create table t3 select * from t1;
#都复制
create table t4 like t1;
insert into t4 select * from t1;

 导出数据:

方法一:

这里如果选择自己的路径会报错,因为MySQL的安全策略,所以在指定路径下完成数据的导出

# 找到指定路径:
mysql> show variables like '%secure_file_priv%';
+------------------+------------------------------------------------+
| Variable_name    | Value
     |
+------------------+------------------------------------------------+
| secure_file_priv | C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\ |
+------------------+------------------------------------------------+
#导出数据
select * from employee into outfile 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\employee.txt'
fields  terminated by '#'
enclosed by '"'
lines terminated by '\r\n';

方法二:

使用mysqldump导出数据:

mysqldump是MySQL用于转存储数据库的实用程序,它主要产生一个SQL脚本,其中包含创建数 据库、创建数据表、插入数据所必需的SQL语句。(不要进mysql执行)

# 导出mydb数据库(含数据)
mysqldump -h localhost -u root -p mydb > d:/mydb.sql
# 导出mydb数据库(不含数据)
mysqldump -h localhost -u root -p mydb --no-data > d:/mydb.sql
# 导出mydb.employee数据表
mysqldump -h localhost -u root -p mydb employee > d:/employee.sql
# 导出mydb数据库,忽略contacts表
mysqldump -h localhost -u root -p mydb --ignore-table mydb.contacts > d:/employee.sql

导入数据:

方法一:

 例:

#导出数据
select * from employee into outfile 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\employee.txt'
fields  terminated by '#'
enclosed by '"'
lines terminated by '\r\n';
#导入数据
LOAD DATA INFILE 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\employee.txt' INTO TABLE employee character set utf8
FIELDS TERMINATED BY '#' 
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';

方法二:

source命令

在MySQL中,可以使用source命令导入较大的SQL文件。source命令可以导入使用mysqldump备 份的sql文件。

# source命令的使用示例
source d:/mydb.sql

例:

#导出数据
mysql -h localhost -u root -p mydb employee > d://employee.sql;
#导入数据
source d://employee.sql;

字符集:

设置字符集

1、数据库
#创建数据库时指定字符集 CREATE DATABASE databaseName CHARSET utf8 COLLATE utf8_general_ci; 
#查看数据库的字符集 SHOW CREATE DATABASE databaseName;
2、表
#创建表时指定字符集 CREATE TABLE tableName(…) DEFAULT CHARSET=utf8;
#查看数据库的字符集 SHOW CREATE TABLE tableName;
3、字段 CREATE TABLE tableName(…, name varchar(50) not null CHARSET utf8, …); 

例:

create table t1 (name varchar(30))charset=gb2312;
insert into t2 (name) values ('张三');
insert into t2 (name) values ('陶喆');

create table t2 (name varchar(30))charset=gbk;
insert into t2 (name) values ('张三');
insert into t2 (name) values ('陶喆');
select * from t2;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值