mysql函数怎么复制 mysql怎么复制表的结构和数据

mysql高级函数 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如何复制表中的一条记录并插入1、打开navicat软件,打开要复制表的数据库 , 如下图所示:
2、点击上方的“工具-数据传输”,如下图所示:
3、进去之后,左边选择的是要复制的表的数据库,右边选择的将表复制到目标数据库,如下图所示:
4、打开左边数据库对象中的“表”,选择要复制哪几张表,点击开始 。
5、点击开始,会弹出一个框 , 点击是,等待一下,出现如下界面,复制成功,点击“关闭” 。
6、可以看到表已经复制到另外一个数据库上了,如下图所示:
怎么复制MySQL数据库项目上 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怎么复制表的结构和数据】关于mysql函数怎么复制和mysql怎么复制表的结构和数据的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读