十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1、打开navicat软件,打开要复制表的数据库,如下图所示:
十多年的比如网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都营销网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整比如建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“比如网站设计”,“比如网站推广”以来,每个客户项目都认真落实执行。
2、点击上方的“工具-数据传输”,如下图所示:
3、进去之后,左边选择的是要复制的表的数据库,右边选择的将表复制到目标数据库,如下图所示:
4、打开左边数据库对象中的“表”,选择要复制哪几张表,点击开始。
5、点击开始,会弹出一个框,点击是,等待一下,出现如下界面,复制成功,点击“关闭”。
6、可以看到表已经复制到另外一个数据库上了,如下图所示:
1.select concat(name, money) from account; :拼接字段
2.select length(name) from account;:查询字节长度(根据编码集utf-8,一个汉字占三个字节)
3.select ifnull(money, 10) from account;:如果money为null,显示10
4.select round(money,1) from account;:保留一位小数四舍五入
5.select floor(money) from account; :向下取整
6.select ceil(money) from account;:向上取整
7.select truncate(money, 1) from account;:截断(截取一位小数)
8.select mod (10, 3);:取余(相当于select 10%3;)
9.select upper(name) from account; :将名字变成大写
10.select lower(name) from account;:将名字变成小写
11.select substring(name, 1) from account;:截取名字下标从1开始的所有字段(注意:mysql的下标都是从1开始)
12.select substring(name, 1, 4) from account;:截取名字下标从1开始,长度为4的字段
13.select now();:返回当前系统的日期和时间
14.select curdate();:返回当前系统的日期
15.select curtime();:返回当前系统的时间
16.select date_format(now(), '%Y年%m月%d日') as '当前时间';:将时间转换成字符串
17.select count(name) from account;:计算name的个数(忽略null)
18.select count( ) from account;:计算个数(不忽略null,类似:select count(1) from account;)
19.select lpad(name, 10, ' '), money from account;:指定字段在左边填充到指定长度(rpad:右边填充)
20.select replace(name, 'an', '*'), money from account;:替换指定字段
21.select * from user limit 0,5;:查询前5条数据(下标0开始,数量:(page - 1) * size, size)
22.select * from boy union select * from girl;:两个结果合成一个(会自动去重,不去重用:union all)
1.select sum(money) from account;:求和(忽略null,null和任何值相加都为null)
2.select sum(money) from account;:求平均数(忽略null)
3.select max(money) from account;:求最大值(忽略null)
4.select min(money) from account;:求最小值(忽略null)
5.select name, money, if(money is null, '呵呵', '哈哈') 备注 from account;:if语句
6.case条件语句
1.create table copy like user;:复制user表(只复制表的字段)
2.create table copy select * from user;:复制user表(字段数据一起复制)
3.create table copy select username,age from user;:复制user表(复制指定的字段,数据一起复制)
4.create table copy select username,age from user where 0;:复制user表(复制指定的字段,数据不复制)
5.alter table 表名 add|drop|modify|change column 列名【列类型 约束】;:修改表
1.等值连接:select s.studen, t.teacher from study s, teacher t where s.t_id = t.id;(求交集部分)
项目上 MySQL 还原 SQL 备份经常会碰到一个错误如下,且通常出现在导入视图、函数、存储过程、事件等对象时,其根本原因就是因为导入时所用账号并不具有SUPER 权限,所以无法创建其他账号的所属对象。ERROR 1227 (42000) : Access denied; you need (at least one of) the SUPER privilege(s) for this operation常见场景:1. 还原 RDS 时经常出现,因为 RDS 不提供 SUPER 权限;2. 由开发库还原到项目现场,账号权限等有所不同。
处理方式:
1. 在原库中批量修改对象所有者为导入账号或修改 SQL SECURITY 为 Invoker;2. 使用 mysqldump 导出备份,然后将 SQL 文件中的对象所有者替换为导入账号。
二、问题原因我们先来看下为啥会出现这个报错,那就得说下 MySQL 中一个很特别的权限控制机制,像视图、函数、存储过程、触发器等这些数据对象会存在一个 DEFINER 和一个 SQL SECURITY 的属性,如下所示:
--视图定义CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`%` SQL SECURITY DEFINER VIEW v_test
--函数定义CREATE DEFINER=`root`@`%` FUNCTION `f_test()` RETURNS varchar(100) SQL SECURITY DEFINER
--存储过程定义CREATE DEFINER=`root`@`%` PROCEDURE `p_test`() SQL SECURITY DEFINER
--触发器定义CREATE DEFINER=`root`@`%` trigger t_test
--事件定义CREATE DEFINER=`root`@`%` EVENT `e_test`
DEFINER:对象定义者,在创建对象时可以手动指定用户,不指定的话默认为当前连接用户;
SQL SECURITY:指明以谁的权限来执行该对象,有两个选项,一个为 DEFINER,一个为 INVOKER,默认情况下系统指定为 DEFINER;DEFINER:表示按定义者的权限来执行; INVOKER:表示按调用者的权限来执行。
如果导入账号具有 SUPER 权限,即使对象的所有者账号不存在,也可以导入成功,但是在查询对象时,如果对象的 SQL SECURITY 为 DEFINER,则会报账号不存在的报错。ERROR 1449 (HY000): The user specified as a definer ('root'@'%') does not exist
改写好处:1. 可以避免还原时遇到 DEFINER 报错相关问题;2. 根据输出信息知道备份是否正常进行,防止备份中遇到元数据锁无法获取然后一直卡住的情况。
MySQL 复制表
如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等。 如果仅仅使用CREATE TABLE … SELECT 命令,是无法实现的。
本章节将为大家介绍如何完整的复制MySQL数据表,步骤如下:
使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等。
复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构。
如果你想复制表的内容,你就可以使用 INSERT INTO … SELECT 语句来实现。
-from 树懒学堂 - 一站式数据知识平台