第三天
一、复习:
1.约束
2.聚合函数
Max()
Min()
Sum()
Avg()
Count()
3.分组 group by 分组以后的筛选用having。
4.排序 order by 列名 asc/desc
Order by c1 asc,c2 desc
5.类型转换
Convert(数据类型,表达式,【style】)
Cast(表达式 as 数据类型)
6.去除重复distinct
a) Top n 向上取整如果是小数,则取比小数大的最小整数
b) Top n percent
7.模糊查询
a) Like ‘dddd%’ 表示前面是dddd的后面有或没有字符的
b) _ 下划线,表示一个或多个
c) [ _ ] [0-9] [^axt] 括号中的_下划线不再是通配符,后面的表示0-9之间的整数,最后的表示非
8.空字符
a) Name=null
b) Name is null
c) Name is not null
9.区间
a) Age=1,or age=2 or age=3
b) Age in(1,2,3)
c) Age>=10 and age<=60
d) Age between 10 and 60
二、使用union联合数据是时候
1.必须保证多个查询的列的个数相同
2.必须保证多个查询的列的数据类型一一对应(至少是可以隐式转换的)
3.使用union的时候如果不加all关键字,则会默认去掉重复数据,要想保留重复数据,要加上all关键字
4.如果没有特别需要要求去除重复,则使用union all,这样相对的比较高效
查询结果连接之后的输出结果:
三、一次插入多条数据
在这里创建一个新表: 主键不会被拷贝
对已经存在的表中一次插入多条记录:
将数据库中的一张表导入另一张表
从数据库ItCastCn中的tblstudent表,导入到另一数据库
四、函数的应用
1. LEN() :计算字符串长度(字符的个数。)
2. datalength();//计算字符串所占用的字节数
3. LOWER() 、UPPER () :转小写、大写
4. LTRIM():字符串左侧的空格去掉
5. RTRIM () :字符串右侧的空格去掉
6. LTRIM(RTRIM(' bb '))
7. LEFT()、RIGHT() 截取取字符串
8. SELECT LEFT('abcdefg',2)
9. SUBSTRING(string,start_position,length),索引从1开始。
10. Trim 去除空格 ltrim 去除左边的空格 rtrim 去除右边的空格
日期函数:
Getdate ()
为张雅的生日加上100个月,day是天,year是年
找出所有入职一年以上的人
Select*from 表名 where dateadd(year,1,入职日期)<getdate()
求学生的真实年龄datediff 时差
Select datediff ( year,生日,getdate()) as 实际年龄from 表名
找到学生的生日
Datepart 返回一个特定的值
简单的写法: 只是单独比较了月和日
输出所有数据中通话时间最长的5条记录
输出本月通话总时长最多的前三个呼叫员的编号;
1.限制本月
2.计算通话时长
3.设计思想,不要想着一次写完,分部来写,也许会更好写出;
4.简单的限制本月的代码是:
输出本月拨打电话次数最多的前三个呼叫员的编号
五、ADO.NET组成:
数据提供程序(常用类)
Connection,用来连接数据库
Command,用来执行SQL语句
Datareader 只读、只进 的结果集,一条一条的进行处理
在VS中要导入这么两个引用
1.连接数据库 通过SQL Server的身份验证方式登录
a) 连接字符串。连接字符串的作用:告诉connection对象要连接的服务器
b) Zxtige是计算机名,CZBK表示数据库
c) 使用连接对象
2.打开连接 (只有调用open方法的时候才表示开始连接数据库)
数据库的连接不能重复打开,需要先将上次打开的连接关闭,然后在打开
每次打开连接的时候可以先判断一下,这个连接是否已经关闭,如果已经关闭,在再次打开
3.关闭连接
4.释放资源
通过using创建连接对象
通过windows身份验证方式来登录
String constr =“data source=zxtiger;initial catalog =czbk;integrated security=true”
可以自动生成连接字符串
在表中插入一条记录:
1.执行SQL语句
a) 构造SQL语句
b) String sql =“在SQL中编写的出入语句,格式不用改变”;
2.执行下面的语句
在打开数据库连接时,可以将打开语句放在下面的语句中,可以在用的时候才打开,用完马上就能关闭,节省系统资源;
当使用ExecuteNonQuery()来执行select
读取表中的数据:
Hasrows 是一个属性,当服务器返回reader的时候,如果一条数据也没有,则直接返回false,客户端判断的时候,就能知道是否有数据;
而通过调用reader。Read()方法,还需要亲自去服务器取一次数据,
打开系统视图:
Select*from sysobjects where xtype=’u’ and name=’test’
select* from syscolumns
Select* from systypes
输出的结果是,自己定义的数据类型,所对应的系统数字