2019-11-05 16:13:25 yycoolsam 阅读数 30

主要参考原文:https://www.cnblogs.com/wyt007/p/8716116.html

在原来的基础上添加库名,模式名

SELECT
库名=       case   when   a.colorder=1   then   h.table_catalog   else   ''   end,
模式=       case   when   a.colorder=1   then   h.table_schema   else   ''   end,
表名=       case   when   a.colorder=1   then   d.name   else   ''   end,
表说明=     case   when   a.colorder=1   then   isnull(f.value,'')   else   ''   end,
字段序号=   a.colorder,
字段名=     a.name,
标识=       case   when   COLUMNPROPERTY(   a.id,a.name,'IsIdentity')=1   then   '√'else   ''   end,
主键=       case   when   exists(SELECT   1   FROM   sysobjects   where   xtype='PK'   and   name   in   (
                 SELECT   name   FROM   sysindexes   WHERE   indid   in(
                 SELECT   indid   FROM   sysindexkeys   WHERE   id   =   a.id   AND   colid=a.colid
            )))   then   '√'   else   ''   end,
类型=       b.name,
占用字节数= a.length,
长度=       COLUMNPROPERTY(a.id,a.name,'PRECISION'),
小数位数=   isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
允许空=     case   when   a.isnullable=1   then   '√'else   ''   end,
默认值=     isnull(e.text,''),
字段说明=   isnull(g.[value],'')
FROM   syscolumns   a
left   join   systypes   b   on   a.xusertype=b.xusertype
inner  join   sysobjects   d   on   a.id=d.id     and   d.xtype='U'   and     d.name<>'dtproperties'
left   join   syscomments   e   on   a.cdefault=e.id
left   join   sys.extended_properties   g   on   a.id=g.major_id   and   a.colid=g.minor_id
left   join   sys.extended_properties   f   on   d.id=f.major_id   and   f.minor_id=0
left   join   information_schema.tables h  on   d.name = h.table_name
--where   d.name='orders'         --如果只查询指定表,加上此条件
order   by   a.id,a.colorder
2019-12-09 15:27:00 william_n 阅读数 613

1.应用场景

修改数据库名字.同时保证数据不丢失.

2.学习/操作

如果是MyISAM存储引擎那么可以直接去到数据库目录mv就可以。//只要修改DATA目录下面的那个库名的文件夹的名字即可.
 

如果是Innodb完全不行,会提示相关表不存在。

第一种方法: //5.1.7到5.1.23版本可用, 官方不推荐,会有丢失数据的危险[如果没有数据或者数据不重要,未尝不可]
RENAME database olddbname TO newdbname //msyql 8.0.12 不支持

 

第二种方法://很笨的办法, 但是安全, 不过不是很推荐.

1.创建需要改成新名的数据库.
2.mysqldum 导出要改名的数据库.
3.删除原来的旧库(确定是否真的需要)
当然这种方法虽然安全,但是如果数据量大,会比较耗时,同时还需要考虑到磁盘空间等硬件成本

 

 

第三种方法://TBD

直接跑一个shell脚本,内容如下:

 

#!/bin/bash
# 假设将db1数据库名改为db2
# MyISAM直接更改数据库目录下的文件即可

mysql -uroot -p123456 -e 'create database if not exists db2'
list_table=$(mysql -uroot -p123456 -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='db1'")

for table in $list_table
do
    mysql -uroot -p123456 -e "rename table db1.$table to db2.$table"
done

 

第四种方法:

转化思想, 先alter table 的存储引擎到MyISAM,然后改了库目录的名字,然后再改回来INNODB.  ? 

 

TBD

3.问题

1.以上方法, 实践验证, 只是新建空数据库, 修改数据库名

因为没有数据表, 就没有所谓的存储引擎, 也就没有所谓的差别, 只能重新建一个新的数据库来解决?

 

 

TBD

 

 

4.参考

https://blog.csdn.net/haiross/article/details/51282417

https://blog.csdn.net/Oracle_zsq/article/details/84135374

后续补充

...

2019-11-03 00:55:07 weixin_44490080 阅读数 49

 

查询MySQL数据库中的所有库合并成一条数据返回:

SELECT  GROUP_CONCAT(DISTINCT Table_schema) FROM information_schema.`TABLES`

 

 

查询MySQL数据库中的某个库下的所有数据表合并成一条数据返回:

SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema='库名'

 

 

查询MySQL数据库中的某个库下的某一数据表中的字段合并成一条数据返回:

SELECT GROUP_CONCAT(COLUMN_NAME) FROM INFORMATION_SCHEMA.Columns WHERE table_name='表名' AND table_schema='库名'

mysql 联合查询注入

阅读数 102

Github库名命名规范

阅读数 5239

库名表名字段名

阅读数 0

没有更多推荐了,返回首页