sql语句总结

本文详细介绍如何使用SQL进行数据库连接、创建、更新、查询等操作,包括条件查询、聚合函数使用、连接查询等多种实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建数据库连接

string serverName=""
string databaseName="";
string userID="";
string password="";
string connectionString="Data Source="+serverName+"; Initial Catalog="+DatabaseName+"; userID="+userID+";

password="+password;
SqlConnection conn=new SqlConnection(connectionString);
conn.Open();


使用数据库之前应该进行判断:

if(conn.State != ConnectionState.Open)
{
 conn.Open();
}

创建数据库:
if(conn.State!=ConnectionState.Open)
{
 conn.Open();
}
string sql="CREATE DATABASE mydb ON PRIMARY"
            +"(name=text_data,filename='c:\\mysql\\mysql_data.mdf',size=3,"
            +"maxsize=5,filgrowth=10%)log on"
            +"(name=mydbb_log,filename='c:\\mesql\\mydb_log.ldf',size=3"
            +"maxsize=20,filegrowth=1)";
cmd=new sqlConnection(sql,conn);
cmd.ExcuteNonQuery();


向表中添加新的记录
if(conn.State!=ConnectionState.Open)
{
 conn.Open();
}
string sql="insert into mytable(ID,name,Address,Email)"+values(111,'Peter','asd','asd@ad.com');
cmd=new SqlCommand(sql,conn);
cmd.ExcuteNonQuery();


向表中添加行的字段(删除字段)
string sql="alter table mytable add(drop)"+"id int";
ExcuteSQLStmt(sql);


删除表
string sql="drop table mytable";
ExcuteSQLStmt(sql);


替换查询结果中的数据:
select 学号,课程,等级=
case
     when 成绩 is null then '缺考';
     when 成绩 <60     then '不及格';
     when 成绩 >=60 and 成绩<70 then '合格';
     when 成绩 >=70 and 成绩<80 then '中等';
     when 成绩 >=80 and 成绩<90 then '良好';
     else '优秀';
end
from 学生成绩表


该表列表示在结果中的显示别名:
select 学号 as xuehao from 学生成绩表


删除重复信息

select   distinct 学号 from 学生成绩表


查询部分数据
select top 5 学号 from 学生成绩表


条件查询
select no from data where no > 60;查询大于60的数
select no from data where no>60 and no <80;查询大于60并且小于80的数
select no from data where no>60 or no <50; 查询大于60 或者小于50的数
select no from data where no is NULL 查找为空值的数 is不能用(=)代替
select no from data where no is not NULL 查询不为空的数
select no from data where BETWEEN 60 AND 80 查找60到80之间的数
select no from data where NOT BETWEEN 60 AND 80 查找不属于60到80之间的数
select * from data where 职称 IN('教授','副教授');筛选拥有教授和副教授职称的数据
select * from data where 职称 IN(‘教授’;‘副教授’); 筛选未拥有教授和副教授职称的数据;


关于匹配符的使用
select * from 学生基本信息表 where 姓名 LIKE '王%':王后面跟任意字符
select * from 学生基本信息表 where 姓名 LIKE ‘王_’王后面只跟一个字符
select * from 学生基本信息表 where 姓名 LIKE '[张王]%' 查找张或者王 后面跟任意字符
select * from 学生基本信息表 where 姓名 LIKE '[^张王]%' 查找非张或者王 后面跟任意字符
select * from 学生基本信息表 where 姓名 LIKE 'c\_#' ESCAPE '\'  将'\'声明为转义字符 跟在'\'后面的'_'将作为普通字符

处理不具有通配符的作用

对于查询结果的排序
select no from data order by no desc  将得到的结果降序排列
select no from data order by no asc 将得到的结果升序排列


聚合函数:
COUNT (*| {[ALL| IDSTINCT] expression}) 求组中的项数,返回Int型整数
SUM  ([ALL|DISTINCE] expression)  求和
AVG  ([ALL|DISTINCE] expression)   求平均值
MAX  ([ALL|DISTINCE] expression)  求最大值
MIN  ([ALL|DISTINCE] expression)  求最小值


分组汇总
select 学号,SUM(成绩),AVG(成绩) from 成绩表 GROUP BY 学号  按学号汇总成绩平均成绩
select 学号,SUM(成绩),AVG(成绩)from 成绩表 GROUP BY 学号 HAVINGAVG(成绩)>60   在上面的基础之上筛选平均成绩大于60

的学生
select 学号,SUM(成绩),AVG(成绩) from 成绩表 GROUP BY 学号 COMPUTE 学号,SUM(成绩) BY 学号 在1的基础之上按照学号

,总成绩在另一表中显示;


嵌套查询

select * from 学生成绩表 where 课程号=(select 课程号 from 学生课程信息表 where 课程名称=‘计算机文化基础’);
select * from 学生成绩表 where 学号 IN (select 学号 from 学生基本信息表 where 专业=‘电子信息’);
select 姓名,年龄 from 学生基本信息表 where 年龄<ANY(select 年龄 from 学生基本信息表 where 专业=‘计算机科学’)

and  专业<>‘计算机科学’;
select 姓名 from 学生基本信息表 where (NOT) EXISTS(select * from 学生成绩表 where 学号=学生基本信息表.学号 and 课

程号='105');


集合查询
select * from 教师基本信息表 where 年龄>35 UNION select * from 教师基本信息表 where 职称='副教授'  集合并
select * from 学生基本信息表 where 专业='电子信息' except select * from 学生基本信息表 where 年龄<=18 集合差
select * from 教师基本信息表 where 性别='男' INNERSECT select * from 教师基本信息表 where 职称='副教授'; 集合交

连接

使用where实现连接
   select 学生基本信息表.学号,姓名,成绩 from 学生基本信息表,学生成绩表 where 学生基本信息表.学号=学生成绩表.学

号 AND 课程号='103' (使用=的为等值连接,使用其他运算符的为非等值连接 等值连接中去掉重复的属性列则为自然连接)

1.内部连接(分为等值连接和自然连接)
   select 学生基本信息表.学号,姓名,成绩 from 学生基本信息表 INNER JOIN 学生成绩表 ON 学生基本信心表.学号=学生成

绩表.学号
2.外部链接(左外连接,右外连接,全外连接)
   左:select 学生基本信息表.*,学生成绩表.* from 学生基本信息表 left outer join 学生成绩表 on 学生基本信息表.学号

=学生成绩表.学号;
   右:select 学生成绩表.*,课程名称 from 学生成绩表 right outer join 学生课程信息表 on 学生成绩表.课程号=学生课程

信息表.课程号
   全:full outer join
3.交叉连接
   select 学号,姓名,课程号,课程名称 from 学生基本信息表 cross join 学生课程信息表

交叉查询

1,使用case语句
   select a.姓名,
          (CASE  b.课程名 WHEN 101 THEN 成绩 end) as '101',
          (CASE  b.课程名 WHEN 102 THEN 成绩 end) as '102',
          (CASE  b.课程名 WHEN 103 THEN 成绩 end) as '103',
          (CASE  b.课程名 WHEN 104 THEN 成绩 end) as '104',
          (CASE  b.课程名 WHEN 105 THEN 成绩 end) as '105',
          (CASE  b.课程名 WHEN 106 THEN 成绩 end) as '106',
  from 学生基本信息表 a, 学生成绩表 b
  where a.学号=b.学号
2,使用PIVOT语句
    PIVOT通过将表达式某一列中的唯一值转换为输出中的多个列来转换表值表达式,并在必要时对最终输出中岁序的任何其余的

列植进行聚合。在查询的FROM子句中使用PIVOT语句可以对一个输入表值表达式执行某种操作,从而获得另一种形式的表。PIVOT运

算符将输入表的行旋转为列,并能同时对行执行聚合运算。
  select 学号,
    [101] as "101",
    [102] as "102",
    [103] as "103",
    [104] as "104",
    [105] as "105",
  from 学生成绩表
   PIVOT(SUM(成绩) for 课程号 IN ([101],[102],[103],[104],[105]))
   as PVT

索引的创建

create UNIQUE INDEX myIndex ON myTable(myNmae(为索引字段));

视图的创建
 create VIEW myView as SELECT myName FROM myTable;

内容概要:本文介绍了奕斯伟科技集团基于RISC-V架构开发的EAM2011芯片及其应用研究。EAM2011是一款高性能实时控制芯片,支持160MHz主频和AI算法,符合汽车电子AEC-Q100 Grade 2和ASIL-B安全标准。文章详细描述了芯片的关键特性、配套软件开发套件(SDK)和集成开发环境(IDE),以及基于该芯片的ESWINEBP3901开发板的硬件资源和接口配置。文中提供了详细的代码示例,涵盖时钟配置、GPIO控制、ADC采样、CAN通信、PWM输出及RTOS任务创建等功能实现。此外,还介绍了硬件申领流程、技术资料获取渠道及开发建议,帮助开发者高效启动基于EAM2011芯片的开发工作。 适合人群:具备嵌入式系统开发经验的研发人员,特别是对RISC-V架构感兴趣的工程师和技术爱好者。 使用场景及目标:①了解EAM2011芯片的特性和应用场景,如智能汽车、智能家居和工业控制;②掌握基于EAM2011芯片的开发板和芯片的硬件资源和接口配置;③学习如何实现基本的外设驱动,如GPIO、ADC、CAN、PWM等;④通过RTOS任务创建示例,理解多任务处理和实时系统的实现。 其他说明:开发者可以根据实际需求扩展这些基础功能。建议优先掌握《EAM2011参考手册》中的关键外设寄存器配置方法,这对底层驱动开发至关重要。同时,注意硬件申领的时效性和替代方案,确保开发工作的顺利进行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值