大一暑假的笔记多数关于数据库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大一暑假的笔记多数关于数据库相关的知识,希望对你有一定的参考价值。
20160712 主键 业务主键、逻辑主键 ForeignKey 通过主外键把多张表的数据集中起来 其中一张表,除了主键,多了一列,这列用来引用另一张表的主键,那么这列就是第一张表的外键列,有外键列的表叫做外键表,相对来说,主键被引用的表叫做主键表 PagedDataSource pds = new PagedDataSource(); pds.DataSource = dt().DefaultView; pds.AllowPaging = true; pds.PageSize = 5; pds.CurrentPageIndex = a; Repeater1.DataSource = pds; Repeater1.DataBind(); --a; //a为索引数 20160713 不同实例的变量互不干扰,如果设置属性的方式,则共享一个地址 表关联查询 http://www.xker.com/page/e2012/0708/117368.html 左连接查询 SQL语句:select * from 表1 left join 表2 on 关联条件 select UserInfo.[id],[Name],[Pwd],Department.Department from UserInfo left join Department on UserInfo.Department =Department.id 20160717 sql 语句 where 条件不等于用<>或者!= like和not like %表示未知(一堆)的符号 _仅仅表示一个字符 [字符]枚举型,包含这些字符,可以多个字符 [^字符] 不包含这些字符 top 数字 percent having 放在语句后面 跟where 结果相同 聚合类不能用在where之后 可以在语句后面添加having语句使用聚合语句 表关连查询 语句格式 select ColumnList From LeftTable JoinType RightTable On JoinCondition 20160720 使用fineui时,其button不能提交form表单的数据 20160721 FineUI表格Grid 获取选中行数据 object[] data= Grid1.Rows[e.RowIndex].Values; data数组中的数据按列排序 20160722 select COUNT(*) from sysobjects where xtype=‘u‘ AND name=‘userinfo‘ --查询数据库中表名为userinfo的数量 SELECT * FROM [sysdatabases] ORDER BY [name] --查看数据库含有的数据库 USE Software_Center --使用该数据库 SELECT * FROM sysobjects WHERE xtype=‘u‘ --查询Software_Center所有用户数据表 USE Test SELECT * FROM sysobjects WHERE xtype=‘u‘ 使用该数据库并查询他的数据表 20160724 Case用法1 结果当成一个列 CASE WHEN 条件1 THEN 返回值 WHEN 条件2 THEN 返回值 ELSE 返回值 (可选) END AS 列名 如果两个判断都满足时,返回第一个条件 Case用法2 CASE 列名 WHEN 列值1 THEN 返回结果1 WHEN 列值2 THEN 返回结果2 WHEN 列值3 THEN 返回结果3 ELSE 返回值 (可选) END 列值中没有的返回NULL 视图 在不需要修改数据的时候适合使用,方便查看表关联的数据 create view Userinformation AS SELECT UserInfo.id,UserInfo.Name,UserInfo.Pwd,UserInfo.IsAdmin,Departments.DepartmentName FROM UserInfo JOIN DEPARTMENTS ON USERINFO.DEPARTMENTID=DEPARTMENTS.ID 20160725 declare @变量名 类型 建立变量 DECLARE @NUM INT =2 或者 set @变量名=值 或者 select @变量1=值 变量2=值2 赋值操作 变量的默认值是null DECLARE @NUM INT SET @NUM=100 SELECT NUM=MAX(AGE) FROM STUDENT MAX(AGE)=99 PRINT @NUM 运行结果是99 IF (判断条件) BEGIN 操作 END ELSE BEGIN 操作 END WHILE语句 DECLARE @i INT=1,@JI INT=0,@OU INT =0 WHILE(@i<101) BEGIN IF(@I%2=1) BEGIN SET @[email protected][email protected] END ELSE BEGIN SET @[email protected][email protected] END SET @[email protected]+1 END SELECT @JI AS ‘奇数‘,@OU,@i --事物处理 BEGIN TRY BEGIN TRANSACTION 执行的语句 COMMIT TRANSACTION --提交事务 PRINT ‘COMMIT TRANSACTION‘ END TRY BEGIN CATCH --捕捉异常 ROLLBACK TRANSACTION --回滚事务 PRINT ‘ROLLBACK TRANSACTION‘ END CATCH 20160729 EXEC SP_HELPTEXT ‘存储过程名、视图等‘ 查看存储过程或其他,,定义时候的语句 EXEC SP_TABLES NULL,‘DBO‘ 获取多少张表 EXEC SP_COLUMNS ‘表名‘ 获取表的列信息 带参数的储存过程,参数在as之前定义,多个用都好隔开,输出的在后面加上output 获取output参数 格式 @过程内部变量=外部获取变量 output,或者直接外部变量+output,或者直接外部变量 分页存储过程 基本sql语句 DECLARE @pageIndex INT = 1 --当前页面索引 DECLARE @pageSize INT =10 --分页的页容量 SELECT * From (SELECT ROW_NUMBER() OVER(ORDER BY 列名) AS ROW_NUMBER,* FROM 表名) AS T WHERE T.ROWNUM BETWEEN (@PageIndex-1)*@PageSize+1 AND @PageSize*@PageIndex 改成存储过程 CREATE PROC 存储过程名 @pageIndex INT = 1, --当前页面索引 @pageSize INT =10 --分页的页容量 AS BEGIN SELECT * From (SELECT ROW_NUMBER() OVER(ORDER BY 列名) AS ROW_NUMBER,* FROM 表名) AS T WHERE T.ROWNUM BETWEEN (@PageIndex-1)*@PageSize+1 AND @PageSize*@PageIndex END c#调用存储过程的时候命令类型选择存储过程,sql语句中直接写存储过程名字,参数外加 --触发器 当什么情况下 新增 修改 删除 创建触发器 CREATE TRIGGER 名字 ON 表名 AFTER INSERT 或者 DELETE、 UPDATE AS BEGIN 动作 END --AFTER 和FOR 作用一样 --INSTEAD OF 不执行原来语句,并替换为他的语句 ---20160731 委托事件 静态委托 delegate 返回值 委托事件名称 (输入的参数)如下 delegate int NumberChange(int n); 调用时先实例委托对象,初始化调用的方法 NumberChange nc1 = new NumberChange(Addmun); 使用如下 Console.WriteLine(nc1(25)); //结果为35 //具体代码执行的 static int mun = 10; public static int Addmun(int p) { mun += p; return mun; } 注意事项,静态委托使用的方法必须是静态的方法 调用方法实例化委托 方法基本一样,在实例化委托之前先对类进行实例化 class myclass { private int number = 10; public int Addmun(int p) { number += p; return number; } } myclass my = new myclass(); NumberChange nc2 = new NumberChange(my.Addmun); IO操作 引用命名空间System.IO; 基本方法 File文件类 File.Exists(文件路径); //bool方法,检查有没有该文件,true为存在 Directory文件夹类 Directory.Exists(路径) 例子: DirectoryInfo dir = new DirectoryInfo(path); foreach (FileInfo f in dir.GetFiles("*.EXE")) //搜索exe文件 { string name = f.Name; long size = f.Length; DateTime createtime = f.CreationTime; Console.WriteLine("文件名{0},大小{1},创建时间{2}", name, size, createtime); } 创建文件 FileStream类 FileMode//文件打开模式 BinaryWriter 文件字节写入 例子如下 FileStream fs = new FileStream(FILE_NAME, FileMode.Create); BinaryWriter bw = new BinaryWriter(fs); bw.Write(写入的内容); bw.Close();fs.Close(); 向文件追加内容 方法 public static void Writer(string logMssage, TextWriter tw) { tw.Write("\rlogEntry:"); tw.WriteLine("{0}", logMssage); tw.Flush(); } 调用方法 using (StreamWriter sw = File.AppendText(FILE_NAME)){Writer(写入的内容, sw);} 读取文件 if (!File.Exists(FILE_NAME)) { Console.WriteLine(FILE_NAME + "已经不存在"); Console.ReadLine(); return; } //方法一 using (StreamReader sr = File.OpenText(FILE_NAME)) { while (sr.ReadLine() != null) { Console.WriteLine(sr.ReadLine()); } } Console.ReadLine(); //方法二 FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read); using (BinaryReader br = new BinaryReader(fs)) { for (int i = 0; i < 10; i++) { Console.WriteLine(br.ReadString()); } } Console.ReadLine(); LINQ语句 第一步数据源 Data Source 第二部语句创建 Query Creation 第三部语句执行 Query Execution 强制执行 count,tolist(),toarray() 案例如下 查询数组 方法一 int[] numbers = { 1, 2, 3, 4, 5, 6, 78, 9 }; var numQuery = from num in numbers where num<10 orderby num select num; foreach (var item in numQuery) { Console.Write(item + " "); } 格式 from 子变量名 in 查询体 where 条件 排序(可选) select 子变量名 多个条件用&&连接 排序:descending降序、升序ascending 注意:查询正文必须以 Select 子句或 Group 子句结尾 方法二 var numQuery = numbers.Where(n => n < 10).OrderBy(n => n);
以上是关于大一暑假的笔记多数关于数据库的主要内容,如果未能解决你的问题,请参考以下文章