嘿嘿,今天学习啦数据检索啦

              嘿嘿,今天是周二啦,昨天开始初步学习啦数据库,那么今天我们就是详细的学习啦数据库的检索啦,或许今天学习的比较多,但是我感觉还是可以的啦,最重要的是我可以接受的啦,这个是最值得庆幸的啦,现在每天学习完在这里总结成为了我的习惯,在总结中我会有更多新的发现,或许就像今天一位友友和我说的,认为我现在在培训,哪里还有时间写博客那,我想说的是,我的确把今天学习的知识都熟悉熟悉,然后自己按照老师讲的操作一遍后才来写的博客,也许还有人会问?操作一遍都可以没事情啦吗,今天学习的知识就掌握啦吗,当然不是啦,我们现在还是在学基础的阶段啦,好多东东真的是只要学习一边好好思考思考就掌握啦的,但是大多数提高我个人认为还是在我们基础学习完啦开始项目学习时间提高的啦,嘿嘿,下面就总结一下我今天学习的知识啦。

          一.数据检索中几个关键字的使用

   --1.查询姓名为林平安的所有信息
   select 职工ID,职工号,仓库号,姓名,性别,工资 from dbo.职工 where 姓名='林平安'
   
   --2.查询除了林平安之外的所有人信息(不等号!=,<>的使用)
   select 职工ID,职工号,仓库号,姓名,性别,工资 from dbo.职工 where 姓名!='林平安'
   select 职工ID,职工号,仓库号,姓名,性别,工资 from dbo.职工 where 姓名<>'林平安'
   
   --3.查询工资在1500以上的且性别为男的人的所有信息(and关键字)
   select 职工ID,职工号,仓库号,姓名,性别,工资 from dbo.职工 where 工资>1500 and 性别=''
   --4.查询工资在1500以下而且工资大于1800,性别为男的人的所有信息(or或者and关键字)
   select 职工ID,职工号,仓库号,姓名,性别,工资 from dbo.职工 where 工资>1500 or 工资>1800 and 性别=''
   
   --5.查询仓库所在地不在上海和济南的所有信息(not关键字)
   select 仓库Id,仓库号,城市,面积,创建时间 from dbo.仓库 where not(城市='上海' or 城市='济南')
   
   --6.查询工资在1200到1800之间的职工的所有信息(between...and...与not between...and...的使用)
   select * from 职工 where 工资 between 1200 and 1800
   select * from 职工 where 工资 not between 1200 and 1800
   
   --7.查询所有职工号为zg1,zg2,zg3,zg4的职工的所有信息(关键字in与 not in的使用)
   select * from 职工 where 职工号 in('zg1','zg2','zg3','zg4')
   select * from 职工 where 职工号 not in('zg1','zg2','zg3','zg4')
   
   --8.产讯仓库所在的城市为空的仓库的所有信息(is null与is not null的使用)
   select * from 仓库 where 城市 is null
   select * from 仓库 where 城市 is not null

               在这里select是查询的意思啦,使用方法就像我上面做的几个例题那样啦,嘿嘿,使用where检索符合条件的数据,这就是我们说的查询的使用啦

                二.模糊查询

 --模糊查询(关键字like的使用)
  --1.查询名字中间带""的所有职工的信息
  select * from 职工 where 姓名 like '%平%' --格式:使用%这个占位符可以是不定长度的字符串,也可以是_,但是一条下划线只能代表一个占位符
  --2.查询名字中间除了带""的所有职工的信息
  select * from 职工 where 姓名 not like '%平%'
  
  --3.查询工资在1000到2000的名字中间除了带""的所有职工的信息
  select * from 职工 where 姓名 not like '_平_' and 工资 between 1000 and 2000 
    

                通配符 %多字符匹配的通配符,它匹配任意次数(零或多个)出现的任意字符;

          通配符_ 单字符匹配,它匹配单个出现的字符;

          [] 只匹配一个字符  并且这个字符必须是[]范围内的    [0-9]  [a-z][a,b,c]

              三.升序与降序以及关键字top和percent的使用

  --升序与降序
  --1.查询职工表中按照工资升序排列所有职工的信息,在这里需要注意的是如果没有写升序还是降序就默认为升序
  select * from 职工 order by 工资 ASC  --升序
  --2.查询职工表中按照工资升序仓库号降序排列所有职工的信息(DESC的使用)
  select * from 职工 order by 工资 ASC,仓库号 DESC      --降序

  --3.查询职工中所有职工的信息,按照随机数的顺序排序
  select * from 职工 order by NEWID()  --随机排序

  --4.查询职工表中前十条职工的所有信息(top的使用)
  select top 10 * from  职工       --查询
  
  --5.查询职工表中记录的10%职工的所有信息(percent的使用)
  select top 10 percent * from 职工

             

               ORDER BY子句位于SELECT语句的末尾,它允许指定按照一个列或者多个列进行排序,还可以指定排序方式是升序(从小到大排列,ASC)还是降序(从大到小排列,DESC),Order by 语句一般要放到所有语句的后面,就是先让其他语句进行筛选,全部筛选完成后,最后排序一下。

                四.SQL Server字符串方法的使用

 --1.分别呈现职工的姓氏和名字,而且查询职工的工资情况(SUBSTRING方法的使用)
 --substring(express,start,length)  
 --<1>:字符串
 --<2>:整数 制定字符串分割的开始位置
 --<3>:length 分割的长度
  select 姓名,SUBSTRING(姓名,1,1)as 姓氏, SUBSTRING(姓名,2,2) as 名字,工资 from 职工
  
  --2.把仓库号转变为大写形式(UPPER方法的使用)
  select 仓库号,UPPER(仓库号) from 仓库
  --3.把仓库号转变为小写形式(LOWER方法的使用)
  select 仓库号,LOWER(仓库号) from 仓库
  

                五.时间查询用字符串形式

  --4.查询仓库号和仓库创建时间,在这里把仓库的创建时间格式改变为mm/dd/yy的格式,即年月日的格式
  --<1>:yy/mm/dd 1
  --<2>:yy.mm.dd 2
  select 仓库号,CONVERT(char(10),创建时间,111)as 创建时间 from 仓库
  

                下面是在网上查找的关于事件类型的格式在数据库语句中的写作格式:

              

                六.聚合函数

--1.查询职工的总人数(COUNT方法的使用)
  select COUNT(*) as 职工总人数 from 职工
  select COUNT(*) 职工人数 from 职工
  --2.查询仓库中不重复的仓库号作为新仓库号显示出来(distinct方法标识寻找不重复的记录信息)
  select count(distinct(仓库号)) as 新仓库号 from 仓库
  --3.查询每月需给职工发放的工资的总和(SUM方法的使用)
  select SUM(工资) from 职工 
  --4.查询每月职工发放的工资的平均值(AVG方法的使用)
  select AVG(工资)from 职工 
  --5.查询每月职工发放的工资的最大值(MAX方法的使用)
  select MAX(工资)from 职工 
  --6.查询每月职工发放的工资的最小值(MIN方法的使用)
  select MIN(工资)from 职工 
  --7.查询每月职工发放的工资的最大值与最小值差值(SUM与MIN方法的使用)
  select MAX(工资)-MIN(工资) as 工资差 from 职工

                七.分组

--1.查询职工表中的仓库号并按照仓库号进行分组
  select 仓库号 from 职工 group by 仓库号 
  --2.查询每个仓库男职工的最高工资,按照仓库号显示出来(group by 的使用,在这里是使用group by 进行分组)
  select 仓库号,MAX(工资) as 最高工资 from 职工 where 性别 ='' group by 仓库号
  --3.查询每个仓库男职工的平均工资高于1800的职工工资,按照仓库号分组显示出来(having关键字的使用)
  select 仓库号,MAX(工资) as 最高工资 from 职工 where 性别 ='' group by 仓库号 having avg(工资)>1800
  --在这里需要注意的是:where 与 group by关键字一起使用的时候, where过滤的是分组前的数据,having 表示分组之后的数据过滤
  
  --两个字段进行分组
  --4.查询每个仓库男职工的平均工资高于1800的职工工资,按照仓库号和姓名分组显示出来(在这里需要注意的是按照两个列分组,是先按照仓库号分组,然后再分完组的基础上面在按照性名分组)
  select 仓库号,MAX(工资) as 最高工资,姓名 from 职工 where 性别='' group by 仓库号,姓名
  

                 

                  Select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息  
                  八.多表链接 
--多表链接

  select 仓库.城市,职工.姓名,职工.仓库号 from 仓库,职工 where 职工.仓库号=仓库.仓库号
  --2.内链接
  select 姓名,城市 from 仓库  inner join 职工 on 仓库.仓库号=职工.仓库号 
  --3.左链接
  select 姓名,城市 from 仓库 left join 职工 on 仓库.仓库号=职工.仓库号
  --4.右链接
  select 姓名,城市 from 仓库  right join 职工 on 仓库.仓库号=职工.仓库号
  --5.全链接
  select 姓名,城市 from 仓库 full join 职工 on 仓库.仓库号=职工.仓库号
  

                  九.插入,修改和删除记录以及清空记录的操作

--数据的插入
insert into 职工(职工号,仓库号,姓名,性别,工资) values('zg101','wh1','乐乐','', 1560)
--多条数据的插入
insert into 职工(职工号,仓库号,姓名,性别,工资) values('zg101','wh2','静静','女',1560),('zg101','wh3','笑笑','男', 1560)
-->修改
update 仓库 set 面积=888,创建时间='2014-12-09' where 仓库号='wh2'

-->删除
delete  from  t1 
-->删除多条记录

delete 仓库 where 仓库号 in(‘wh1’,‘wh2’)
--清空表中记录
truncate table t1

                  十. ADO.net的简单入门

           在这里我们仅仅初步了解下ADO.net,首先我们让VS与MSSQL Server 有关系,就如下操作所示:

          1.首先我们打开VS,进入首页,然后选择左侧的“服务器资源管理器”,然后选择“服务器”下面的“数据连接”,选中数据连接点击鼠标右键,选择“添加连接”,可出现选择“选择数据源”,即如下图:

                 

           2.接下来双击选择数据源,即可进入添加连接,而添加连接这个页面就和昨天写的怎样进入数据库是一样的,嘿嘿,所以嘛,就说呢就省略喽,但是我们选择完之后需要选择右下角的“高级”,可呈现高技属性然后我们关注的主要是Data Source,这就是我们需要连接数据库用到的连接字符串啦,我们可以复制下来,方便一会啦使用啦 嘿嘿,如下图所示:

              

          我们创建一个Winform窗体,然后拖拉几个控件,如下如所示:

             

        实现其在文本框中填写数据而在数据库中也显示插入的数据记录情况,代码如下:

        private void button1_Click(object sender, EventArgs e)
        {
            //连接字符串
            //1 打开程序到数据库的连接
            //2  执行数据库sql 语句操作
            //3  数据库返回到程序执行结果

            string ConnectString = "Data Source=.;Initial Catalog=ClassScore;Integrated Security=True";
            SqlConnection conn = new SqlConnection(ConnectString);
            conn.Open();
            string username = this.txtname.Text.Trim();
            string pwd = this.txtpwd.Text.Trim();
            string sex = this.txtsex.Text.Trim();
            string like = this.txtlike.Text.Trim();
            string sql = "insert into userinfo(username,pwd,sex,like) values('" + username + "','" + pwd + "','" + sex + "','" +like+ "')";
            SqlCommand cmd = new SqlCommand(sql, conn);
            int i = cmd.ExecuteNonQuery();  //受影响的行数
            if (i > 0)
            {
                MessageBox.Show("注册成功");
            }
            else
            {
                MessageBox.Show("注册失败");
            }
        }

                             

                 综上,可以看出数据库与VS产生了关系。Connection,用来连接数据库,Command,用来执行SQL语句。

           好啦,今天的总结就写到这里啦,嘿嘿,感觉我们的学习会越来越有意思啦。

我是小白,新建立了一个的群:461431726,希望在这里和大家一起交流,共同学习。前端的话建议加群:646564351,谢谢
原文地址:https://www.cnblogs.com/dyxd/p/4153969.html