库表管理、数据库表操作方法、 Show tables 获取表结构、索引

功能介绍

注意:连接数据库账户需要一定权限才能操作,最好管理员级别的账户

1.建表、获取表信息

2.修改表操作

3.创建视图、索引等

4.删除视图、函数、存储过程等。


1、使用示例

//例1 获取所有表
var tables = db.DbMaintenance.GetTableInfoList(false);//true 走缓存 false不走缓存
foreach (var table in tables)
{
     Console.WriteLine(table.Description);//输出表信息
     
     //获取列信息
     //var columns=db.DbMaintenance.GetColumnInfosByTableName("表名",false);
}

//例2
db.DbMaintenance.IsAnyTable("tablename",false)//验证表名是否缓存不走缓存


2、全部方法

注意:用查询方法时看有没有 isCache重载, true是走缓存,false是不走缓存

注意:用查询方法时看有没有 isCache重载, true是走缓存,false是不走缓存

名称备注返回类型
GetDataBaseList获取所有数据库名称List
GetViewInfoList查询所有视图List
GetTableInfoList

获取所有表名  

GetTableInfoList(是否缓存)  

GetTableInfoList(重写局部SQL看文档:3.6

List
GetColumnInfosByTableName

获取列根据表名,获取字段,字段信息

GetColumnInfosByTableName(表名,是否缓存)

GetColumnInfosByTableName(表名,重写局部SQL)

看文档:3.7

List
GetIsIdentities获取自增列List
GetPrimaries获取主键List
IsAnyTable表是否存在,判断表存不存在 ( IsAny(表名,是否缓存))bool
IsAnyColumn列是否存在bool
IsPrimaryKey主键是否存在bool
IsIdentity自增是否存在bool
IsAnyConstraint约束是否存在bool
DropTable删除表bool
TruncateTable清空表bool
CreateTable(看标题3)

看标题3来实现建表

bool
AddColumn添加列bool
UpdateColumn更新列bool
AddPrimaryKey添加主键bool
DropConstraint删除约束bool
BackupDataBase备份库 (看标题4用法)bool
BackupTable备份表 bool
DropColumn删除列bool
RenameColumn重命名列bool
AddDefaultValue添加默认值bool
AddTableRemark添加表描述,表注释bool
AddColumnRemark添加列描述,表注释bool
DeleteColumnRemark删除列描述,表注释bool
RenameTable重命名表bool
CreateIndex创建索引 或者 唯一约束(唯一索引) bool
IsAnyIndex索引是否存在 bool
GetProcList获取存储过程名字集合List
GetIndexList获取所有索引名字集合List
CreateView(看标题3.3)创建视图 5.1.4.106bool
GetFuncList获取函数(建函数最好命名有规则有些非自定义的也出来)List
DropView删除视图 5.1.4.106bool
DropFunc删除函数5.1.4.106bool
DropProc删除存储过程 5.1.4.106bool
GetDbTypes获取数据库类型集合5.1.4.106List
GetTriggerNames根据表名获取触发器集合5.1.4.106List


3、特殊方法

3.1 无实体建表 (5.1.4.60

该方法是在无实体的情况下建表 ,并且支持实体AOP

  var typeBilder = db.DynamicBuilder().CreateClass("table1", new SugarTable(){});
              
   //可以循环添加列
   typeBilder.CreateProperty("Id",typeof(int),new SugarColumn(){IsPrimaryKey=true,IsIdentity=true});
   typeBilder.CreateProperty("Name", typeof(string), new SugarColumn() { /*属性说明下面有*/ });
    
   typeBilder.WithCache(); //缓存Key 表名+字段名称相加
    
   //创建类
   var type = typeBilder.BuilderType();  
 
    
   //创建表
   db.CodeFirst.InitTables(type); //建表属性API看迁移  
     
    //根据字典转成类对象         
    var value= db.DynamicBuilder().CreateObjectByType(type,new Dictionary<string, object>() { { "Id", 1 }, { "Name", "jack" } });
    //可以是List<Dictionary<string, object>()
      
    db.InsertableByObject(value).ExecuteCommand();
    db.UpdateableByObject(value).ExecuteCommand();
    db.DeleteableByObject(value).ExecuteCommand();
    db.StorageableByObject(value).ExecuteCommand();//插入或者更新
    //查询 带有类功能 5.1.4.84 
    // API和无实体查询类似
    db.QueryableByObject(type).ToList();


SugarColum常用属性说明,更多属要看文档:迁移

ColumnDataType = "decimal",//强制指定列类型 默认按c#类型创建表,该类型可以覆盖C#类型,C#类型为了CRUD使用
Length = 10,//指定长度,升级到:5.1.4.129-preview+兼容了双向绑定,比如以前int不能传长度,int正常,而int(10)出错 
DecimalDigits = 2,//指定小数位 (比如varchar就不能加精度会报错,数据库要支持精度的才能传)
IsNullable=true,//指定是否可空
IsPrimaryKey=true,//指定是否主键,
IsIdentity=true,//是否是自增,注意:Oracle用自增文档搜索:Oracle ,需要启用和数据库版本要求
ColumnDescription="test",//指定描述,
DefaultValue="a",//注意:这个不支持查出直接赋值存回去,查出来后要处理一下格式才能赋值

更多用法:https://www.donet5.com/Home/Doc?typeId=2562

3.2 有实体建表 (文档:迁移)

 db.CodeFirst.InitTables(typeof(T));//具体用法看文档迁移

3.3 创建视图

5.1.4.106-preview22+

//方式1:通过无实体查询方式创建视图
var sql=db.Queryable<object>().AS("表名").ToSqlString();
var name = "view01";
db.Ado.ExecuteCommand($"create view {name} as \r\n"+sql);

//方式2: 通过Type创建视图
//不存在创建,内部有判断
db.QueryableByObject(typeof(Order)).CreateView("view_{0}");
//支持动态构造Type
https://www.donet5.com/Home/Doc?typeId=2562

3.4 创建存储过 

//获取存储过程名
var allNames=db.DbMaintenance.GetProcList();
//创建 
db.Ado.ExecuteCommand(创建存储过程SQL);
//修改
db.Ado.ExecuteCommand(修改存储过程SQL);

3.5 创建函数

//获取函数名
var allNames=db.DbMaintenance.GetFuncList();
//创建 
db.Ado.ExecuteCommand(创建函数SQL);
//修改 
db.Ado.ExecuteCommand(修改函数SQL);


3.6 获取表名

//1.不缓存
var list=GetTableInfoList(false);

//2.缓存不变的
var list=GetTableInfoList(true);

//3.不缓存+重写SQL比如:我只要MyTable开头的表
//需要升经到:5.1.4.144-preview11+
var list= db.DbMaintenance.GetTableInfoList((dbtype, sql) =>
   {
       if (dbtype == SqlSugar.DbType.SqlServer) 
       {
          return sql.Replace("需要替换部分", "替换后部分");
       }
       return sql;
   });


3.7 获取列信息根据表名

//1.不缓存
var list=db.DbMaintenance.GetColumnInfosByTableName("mytable", false);

//2.缓存不变的
var list=db.DbMaintenance.GetColumnInfosByTableName("mytable", true);

//3.不缓存+替换局部SQL
//需要升经到:5.1.4.144-preview12+
var list= db.DbMaintenance.GetColumnInfosByTableName("mytable",(dbtype, sql) =>
   {
       if (dbtype == SqlSugar.DbType.SqlServer) 
       {
          return sql.Replace("需要替换部分", "替换后部分");
       }
       return sql;
   });


4、备份库

只支持部分库 ,如果你能提供代码我可以集成进sqlsugar

//SqlServer
db.DbMaintenance.BackupDataBase(db.Ado.Connection.Database, "d:\\a.bak" /*服务器路径*/);//第一个参数库名 

//Sqlite
db.DbMaintenance.BackupDataBase(null, "sql2014test222.db"); //sqlite 只支持.net core

//MySql
db.DbMaintenance.BackupDataBase(db.Ado.Connection.Database, "c:\\1.sql");//mysql 只支持.net core




关闭
果糖网