大一暑假的笔记多数关于数据库

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);

 

以上是关于大一暑假的笔记多数关于数据库的主要内容,如果未能解决你的问题,请参考以下文章

2019暑假总结7.15-8.23+大一总结

[NEFU ACM大一暑假集训 解题报告]尺取法

[NEFU ACM大一暑假集训 解题报告]字典树

大一暑假第四周周进度总结报告

大一暑假第五周周进度总结报告

大一暑假第二周总结