c# 数据类型
int 整型
double 浮点类型
string 字符串
bool 布尔类型
DataTime 时间类型

字符串
字符串常用方法
字符串查找
indexOf() 找到第一个匹配项所在的位置 如果找到则为索引位置否则-1
string email=“xioadasd@qq.com”
int position =email.indexOf(’@’);

Equals 分为值类型比较和应用类型比较

字符串截取
Substring 从指定位置截取一定长度的字符串

输出字符串
Format https://www.cnblogs.com/fanweisheng/p/11432181.html

Trim() 去掉前后多余空格
ToUpper() 转成大写
ToLower()转成小写

LastIndexOf(string value) 找到最后一个匹配项所在的索引(位置)

StringBuilder类的使用
StringBuilder myBuilder =new StringBuilder()
方法 说明
Append 在结尾追加
insert 在指定位置插入指定字符串
Remove 移除指定字符串

数组
声明数组 int[] scores; 告诉计算机数据类型是什么,不规定长度
分配空间 scores =new int[5]; 告诉计算机分配几个连续的空间
赋值 scores[0]=67; 向对应的空间中存放数据
处理数据 scores[0]=scores[0]+5 使用对应空间的数据

数组声明同时初始化的三种情况
int[] netScore1=new int[3]{67,89,78};方括号中的数字决定数组长度
int[] netScore new int[]{67,89,78}; 数组元素直接决定长度
int[] netScore3={67,89,78};

遍历数组
for

foreach
foreach(元素类型 变量名 in 集合或者数组名)
{
}

类的使用
根据声明来编写类?
软件的需求与设计问题 软件的功能需求分析和总体设计
类包含哪些内容?
类的基本组成结构问题 包括属性方法
类的编写有什么具体方法和技巧?
面向对象的基本原则问题
类之间的关系如何确定?
软件和软件之间的配合问题 不同的软件,有不同的设计模式
程序运行时类会怎样变化?
对象的创建与使用问题 类是模板,程序运行时都是对象

理解面向对象的三大特性
封装
隐藏内部实现细节,模块开发者只关心内部实现和接口要求,模块调用者只关心接口调用
好处:安全保证(避免代码外漏)、快速应用(直接应用),团队协作(多人同时工作)
应用:类是程序的基本单元,也是封装的基本单元,但是类可以同样被模块封装

继承
复用现有代码
好处:一处更新,处处更新;弊端:关联容易复杂
应用:object,From…

多态
让一个对象的接口可以根据不同的请求,做成不同的响应
好处:程序扩展容易、维护方便
应用:继承多态,接口多态(简单工厂、抽象工厂)

OOP原则
单一职责原则(对象职责明确原则)
要求:一个对象只做好一件事情,必须专注,职责过多容易引起变化的原因就多,程序就不稳定(高内聚,低耦合的延伸)

开放封闭原则(核心原则)
要求:需求变化时尽量少的修改类的设计,而是通过扩展类来完成。即封闭修改,开放扩展

依赖倒置原则(OOP精髓)
要求:基于接口编程,高层模块调用接口,底层模块实现接口,防止底层变化直接影响高层

里式替换原则
要求:在继承关系中子类可以替换父类,虚拟机可以根据父类变量动态的找到具体的子类对象,从而实现多态。

字段
字段又称为:“成员变量” ,一般在类的内部做数据交互使用 ,一般使用private修饰。
字段命名规范:字段命名一般采用camel命名法。
字段可以赋值,也可以取值。
当字段需要为外部提供数据的时候,请将字段封装为属性,而不是使用共有字段,这是面向对象所提倡的。

属性
作用:在面向对象设计中主要使用属性描述对象静态特征。
要求:一般采用Pascal命令法,数据类型和字段要一致,使用public修饰。

方法

数据库sqlserver

实体(对象):客观存在的事物都是实体
实体数据的存储要求:必须按照一定的分类和规律存储
数据库:专门用于存储这些实体的信息的数据集合
数据库的特点
海量存储数据、数据检索非常方便
保持数据信息的一致、完整、并实现数据的共享和安全
通过组合分析,产生新的有用信息

SQL与T-SQL
T-SQL =Transach SQL
T-SQL是SQL的加强版
对功能进行了补充:如变量说明、流程控制、功能函数
T-SQL的组成
DDL(数据定义语言)
用来建立数据库、数据库对象和定义其列
CREATE TABLE DROP TABLE等
DML(数据控制语言)
用来控制存储许可、存取权限等
GRANT、REVOKE等
变量说明、流程控制、功能函数
定义变量、判断、分支、循环结构等
日期函数、数学函数、字符函数、系统函数

数据库中的数据要确保存储在数据库中数据的准确性和一致性 解决方法 采用数据库约束SQL Server中的六种约束:主键约束,外键约束,唯一约束,非空约束,检查约束,默认约束

查询的基本语法构成
select <列名>
from <表名>
where <查询条件表达式>
order by <排序的列名>[ASC或DESC]

查询全部行和列
select * from Students
查询部分行
select StudentName,Gender,Birthday,Age,StudentidNo
from Studebts
where Age>24

查询出来更改数据表项的列名
select StudentName as 姓名,Gender as 性别,出生日期=birthday
from Students where Gender=‘男’

插入一条数据到数据表
insert into ScoreList(StudentId,CSharp) values(100009,78)
查询表中某列为null的值
select * from ScoreList where SQLServerDB is null
限制固定行数
select top 5 StudentName,Gender,Birthday
from Students
返回百分之多少行
select top 20 percent StudenName,Gender,Birthday
from Students

升序排序
select StudentId,(CSharp+5) as C#,DB=SQLServerDB
from ScoreList where (CSharp+5)>90
order by CSharp ASC
降序排序
select StudentId,(CSharp+5) as C#,DB=SQLServerDB
from ScoreList where (CSharp+5)>90
order by CSharp DESC

按多列排序
select StudentId,CSharp as C#,DB=SQLServerDB
from ScoreList where (CSharp+5)>90
order by CSharp DESC,SQLServerDB ASC

link 模糊查询
模糊查询右边模糊
select 列1,列2 from Students
where StudentAddress link ‘天津%’
模糊查询左右模糊
select 列1,列2 from Students
where StudentAddress link ‘%小%’

between 模糊查询
select * from ScoreList
where CSharp between 80 and 90

select StudentName,studentAddress,Birthday from Students
where Birthday between ‘1987-01-01’ and ‘1988-01-01’

in 模糊查询 (匹配括号内)
select StudentName,Birthday,Age from Students
where Age in (21,22,23)

select StudentName,Birthday Age from Students
where StudentName in (‘啊’,‘哦’,‘额’)

聚合函数
求和
select SUM(CSharp) as C#总成绩 from ScoreList
求条数
select 总人数=COUNT(*) from Students

求最大值、最小值、平均值
select MAX(CSharp) as c#最高分,MIN(CSharp) as c#最低分
from SeoreList
select c#平均分 =AVG(Csharp),DB平均分=AVG(SqlserverDB)
from ScoreList

多表连接查询
内连接查询主外键关系
1、需要连接的表
2、两个表连接的条件(主外键)
3、两个表中相同的字段,必须说明来自哪两个表

select Students.StudentId,StudenName,StudentClass,ClassName,c#成绩=Csharp
from Students
inner join ScoreList on Students.StudentId=ScoreList.StudentId
inner join StudentClass on Students.ClassId=StudentClass.ClassId
where CSharp>80
多表连接查询:只需要使用inner join将多个表按连接条件连接即可。

左外连接查询
select StudentId,StudentName,Gender
from Students
left outer join ScoreList on Students.StudentId=ScoreList.StudentId
where Gender=‘男’
查询的结果包括两个表所有满足连接条件的记录

以及左表所有不满足条件的其他记录,这些不满足的左表记录,在结果的右边位置,全部填上NULL值。

右外连接查询
select Students.StudentId,StudentName,ClassName
from Students
right outer join StudentClass on Students.ClassId=StudentClass.ClassId

查询的结果包括两个表所有满足连接条件的记录
以及右表所有不满足条件的其他记录。这些不满足的右表记录,在结果的左边位置,全部填上Null

分组查询
where子句
从数据源中去掉不符合其搜索条件的数据

group by子句
搜索数据行到各个组中,统计函数为各个组计算统计值

having子句
在分组结果中,去掉不符合其搜索条件的各组数据行

数据库操作的基本方法
1、创建Connection对象
2、创建SQL语句(Insert,Update,Delete,Select)
3、Command对象
ExecuteScalar() 返回单一结果
ExecuteNonQuery()返回影响的行数
ExecuteReader()返回一个或多个结果集 读取数据 关闭读取器。

动态类型dynamic总结
可用于类型的字段、方法参数、方法返回值、泛型类型参数。
可以赋值或被赋予任何类型,并且不需要类型转换。

var 匿名数据类型
var i=0;
是int类型 它编译的时候就会自动帮你改成int 它会自动把var替换成这个i变量应有的类型
var总结
只能用于"局部变量",不能用于字段,方法参数。。。
变量类型在编译时就确定了。

linq
简单扩展方法的应用
不带参数的扩展方法定义
static 方法名 (this 目标类型 目标类型参数)

带参数的扩展方法定义
static 方法名 (this 目标类型 目标类型参数, 参数类型1,参数类型2…)
扩展方法使用中应该注意的问题
扩展方法必须定义在静态类中,扩展方法本身也是静态方法
如果扩展方法和对应的类位于不同的命名空间,使用时应引入扩展方法所在静态类的命令空间
当类本身的方法与扩展方法重名时,类本身的方法被优先调用。
扩展方法不要过多使用

{/// <summary>/// 扩展方法类/// </summary>static class ExtendMethod{public static int GatAvg(this int sum){return sum / 5;}public static string Stuinfo(this string name){return string.Format("{0},您好,您的5门平均成绩为:", name);}}
}
public class Program
{public static void Main(string[] args){string stuName = "小张";int scoreSum = 460;Console.WriteLine("{0},{1}", stuName.Stuinfo(), scoreSum.GatAvg());}
}

委托
委托是一种新的面向对象语言特性,运行在.net平台上
基于委托,开发事件驱动的应用程序非常简单
使用委托可以大大简化多线程编程的难度
委托,也可以看成是一种数据类型,可以用于定义变量,但他是一种特殊的变量。
委托定义的变量能接收的数值只能是一个方法(函数),可以理解成委托就是一个方法(方法)的指针。

    public class Program{//1申明委托(定义一个函数原型;返回值+参数类型和个数)public delegate int CalculatorDelegate(int a, int b);public static void Main(string[] args){//3创建委托对象关联具体方法CalculatorDelegate objCal = new CalculatorDelegate(Add);//4通过委托调用方法而不是直接调用方法int result= objCal( 20, 30);//根据需要变化委托指向objCal -= Add;//断开当前委托所关联的方法(加法)objCal += Sub;//重洗关联一个新的方法(减法)result = objCal(50, 30);Console.WriteLine(result);Console.Read();}//2根据委托定义具体方法(加法)static int Add(int a,int b){return a + b;}static int Sub(int a,int b){return a - b;}}

匿名方法
方法没有具体名称,只有委托关键字,方法体,所以称为匿名方法
匿名方法允许代码块(方法体部分)通过委托变量作为参数传递,以代替单独定义的方法。

CalculatorDelegate nim = delegate (int a,int b){
return a+b;
};

lambda表达式
lambda表达式本身就是匿名方法
lambda表达式的参数允许不指明参数类型,而匿名方法的参数必须明确指明参数类型
lambda表达式方法允许由单一表达式或者多条语句组成,而匿名方法不允许单一表达式形式

  CalculatorDelegate objCal = new CalculatorDelegate(Add);CalculatorDelegate objCala = (a,b)=> { return a * b; } ;    CalculatorDelegate objCala = (a,b)=> { return a * b; } ;int resulte = objCala(10, 20);Console.WriteLine(resulte);

LINQ中的select
获取数据:扩展方法selsect()
select()是一个泛型扩展方法
select()使用的时候,要求传递一个委托实例(委托实例就是一个方法)
select()方法里面是一个lambda表达式,返回值是一个迭代器(数组、泛型集合都可以使用扩展方法select)

   //linq select()方法int[] nums = { 1, 7, 2, 6, 8, 4, 2 };var list = nums.Select(item => item * item);foreach (var item in list){Console.WriteLine(item);}Console.Read();

LINQ中的where
筛选数据where()方法
where()方法是一个扩展泛型方法
where()方法使用的时候要求传递一个委托实例,但该实例是一个判断条件,因此返回的类型必须是bool类型

//linq where()方法int[] nums = { 1, 7, 2, 6, 8, 4, 2 };var listwhere = nums.Where(item => item % 2 == 0).Select(i => i * i);foreach (var item in listwhere){Console.WriteLine(item);}Console.Read();

linqOrderBy()方法
排序数据:OrderBy()
OrderBy()是一个扩展方法;
OrderBy()里面的参数要求传递一个排序字段,默认按照升序排序
如果想要降序排序则可以使用OrderByDescending方法

  //linq OrderBy()方法string[] linqnums = { "张三", "李四", "王五", "成龙", "啥玩意" };var ordebylist = linqnums.Where(item => item.Length == 2).Select(item => item).OrderBy(item => item.Substring(0, 1));foreach (var item in ordebylist){Console.WriteLine(item);}

linqGroupBy()方法
GroupBy()是一个扩展方法
GroupBy()里面的参数要求传递一个分组的字段

string[] linqGroupBy = { "张勇", "刘静", "阿斯达", "昆仑决", "结构", "屁哦" };var GroupBylist = linqGroupBy.Where(item => item.Length == 2).Select(item => item).GroupBy(item => item.Substring(0, 1));foreach (var item in GroupBylist)
{Console.WriteLine(item.Key);foreach (var res in item){Console.WriteLine(res);}
}

linq查询时机

1、获取数据源 定义查询 执行查询
定义查询之后,查询并没有立即执行,而是直到需要枚举结果(遍历)时才被真正执行
这种方法称为"延迟执行"

2、使用"聚合扩展方法" 返回单一结果,强制查询立即执行。
Count,Max/Min,Average

查询表达式
是一种用查询语法表示的表达式有一组用类似于sql的语法编写的句子组成
每一个子句可以包含一个或多个c#表达式
linq查询表达式包含的子句
from子句 :指定查询操作的数据源和范围变量
where子句:筛选元素的逻辑条件,返回值是一个bool类型
select子句:指定查询结果的类型和表现形式
orderby子句:对查询结果进行排序(升序或降序)
group子句:对查询结果进行分组
into子句:提供提个临时标识符,该表示可充当对join/group/select子句结果的引用
join子句:连接多个查询操作的数据源
let子句:引入用于存储查询表达式中的子表达式结果的范围变量

ThenBy 提供复合排序条件
分区类查询
Take提取指定数量的项
Skip跳过指定数量的项并获取剩余的项
TakeWhile只要满足指定的条件,就会返回序列的元素,然后跳过剩余的元素
SkipWhile 只要满足指定的条件,就跳过序列中的元素,然后返回剩余元素。
集合类查询Distinct
去掉集合中的重复项

生成类查询
Range生成一个整数序列
Repeat生成一个重复项的序列
注意:Reange/Repeat不是扩展方法,而是普通的静态方法
Range只能产生整数序列
Repeat可以产生泛型序列
所有的查询方法都存放在System.Linq.Enumerable静态类中。

可选参数
  用法:
  (1)在方发声明时,为可选参数制定一个默认值。
  (2)可选参数的默认值必须是一个常量。
  (3)可选参数必须出现在所有必须参数之后,否则编译器报错。(如图)
  事实上,在调用方法时,编译器会按顺序把实参依次赋值给形参,若实参的个数少于形参,则未被赋值的形参会取默认值。
  
class Program
{
static void Main(String[] args)
{
int i = Add(4);
Console.WriteLine(i);
i = Add(1, 2);
Console.WriteLine(i);
}
public static int Add(int x, int y = 5, int z = 6)
{
return x + y + z;
}
}
  输出为:
15
9

命名参数
   用法:
  (1)调用方法时,显式地说明实参所对应的实参的名字。
  (2)不必按顺序输入参数。
  (3)调用方法时,若某个参数命名,则之后的所有参数都需要命名。否则编译器会报错。
  命名参数的主要作用是,对于某些参数繁多的方法,可以增加代码可读性,避免参数顺序的错误。
  示例:
1 class Program
2 {
3 static void Main(String[] args)
4 {
5 int i = Add(5, secondInt: 6);
6 Console.WriteLine(i);
7 }
8 public static int Add(int firstInt,int secondInt)
9 {
10 return firstInt + secondInt;
11 }
12 }

C#与sql基础资料相关推荐

  1. 整理一些sql server基础资料

    闲来无事,整理些sql server 基础资料,以便以后查找.复习 SQL Server日期计算 a. 一个月的第一天 Select DATEADD(mm, DATEDIFF(mm,0,getdate ...

  2. postgresql最全整理资料,PostgreSQL 30天 培训视频(SQL基础,备份恢复,HA,服务端编程,大数据,内核,应用案例)

    转载自:http://blog.163.com/digoal@126/blog/static/16387704020141229159715/ 希望通过这些视频帮到一些朋友, 同时对视频中的错误点烦请 ...

  3. 原创《SQL基础知识第2版》PDF高清版,限时下载!

    内容简介 <SQL基础知识第2版>是一本为新手同学特地准备的入门文档,由公众号[SQL数据库开发]原创出品. 内容涵盖了SQL基础语法的所有内容,不仅有SQL各个语法的解释,而且还附有大量 ...

  4. SQL必知必会(一)SQL基础篇

    SQL基础 1.SQL语言 2.SQL开发规范 3.DB.DBS 和 DBMS 的区别是什么 4.SQL执行顺序 1.oracle中执行顺序 2.MYSQL执行顺序 3.sql关键字执行顺序 5. I ...

  5. ORACLE甚而,PL/SQL基础

    Oracle PL/SQL语言基础 PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用 ...

  6. 大数据系列sql基础知识(史上最全,收藏起来)

    大数据系列文章,从技术能力.业务基础.分析思维三大板块来呈现,你将收获: 1. 提升自信心,自如应对面试,顺利拿到实习岗位或offer: 2.掌握大数据的基础知识,与其他同事沟通无障碍: 3. 具备一 ...

  7. 第1章 数据库系统与SQL基础知识!什么是SQL数据库系统?SQL类型?

    第1章  数据库系统与SQL基础知识 1.1  数据库系统基本概念 数据库和SQL构成了整个数据库系统,两者一个是用来存储数据,一个是用来读取数据.本节通过简单的概念入手,让读者对数据库系统有个大概的 ...

  8. oracle基础之sql基础知识

    1. sql(Structured Query Language)是关系型数据库的基本操作语言. 包括数据库查询(Data Query),数据操纵(Data Manipulation),数据定义(Da ...

  9. 获取oracle数据库war报告,Oracle 数据库开发及SQL基础实战

    Oracle 数据库开发及SQL基础实战 一.数据库基础 主键(Primary Key): 1.某一列或某些列的组合,构成一个主键,在这张二维表里,主键必须不重复.用于在这些行之间进行唯一的区别. 2 ...

最新文章

  1. SAP QM 通过控制图 (Control Chart) 的实现提升企业质量管理水平
  2. PAT甲级1022 Digital Library (30分):[C++题解]结构体、排序、查询
  3. 移动应用如何提升登录转化率
  4. 流式细胞术及常见问题分析
  5. LeetCode 1121. 将数组分成几个递增序列
  6. python拦截修改数据包_会Python?那么你一定要试一试mitmproxy
  7. python常规异常的基类_Python警告的基类警告类是____。
  8. 2021年中国健康险行业创新研究报告
  9. MARKDOWN使用小计
  10. FMS3 客户端call服务器端
  11. 得力考勤机excel密码_可以修改原始考勤记录数据的是哪种人脸指纹考勤机?
  12. python爬图mzitu_小白学 Python 爬虫(16):urllib 实战之爬取妹子图
  13. 肌营养不良最新研究进展(2021年)
  14. uniapp使用阿里字体图标库
  15. 【数据增强】用cv2旋转图像并自定义填充背景颜色(主要用到cv2.getRotationMatrix2D 和 cv2.warpAffine)
  16. 什么是PCB加工中树脂塞孔工艺?
  17. 数据分析(分析方法)
  18. chart.js使用学习——雷达图
  19. java生成日志文件_java - 把日志生成到指定目录
  20. 抖音影视解说制作,一般用什么必备工具?

热门文章

  1. 二十英里法则--实现定下的目标,其实或许没那么困难(部分转载)
  2. OpenCV-resize函数
  3. Android-NDK-05-C++基础,容器、类型转换、异常
  4. 深度|蚂蚁金服“刷脸”支付技术解读:错误率低于百万分之一
  5. APP 开发中的费用一般用在哪里?
  6. 【软件与系统安全】AFL模糊测试实验
  7. 【GRNN分类】基于matlab GA优化GRNN超参数分类【含Matlab源码 1399期】
  8. 看高手是怎样破解路由器用户密码控制局域网的
  9. JavaScript面试必问 上
  10. OpenMV使用技巧