数据库和ado连接语句的使用总结
2018-05-05 10:53
369 查看
基本的sql语句
创建数据库:CREATE DATABASE database-name删除数据库:drop database dbname
创建表:create table tabname(字段属性)
删除表:drop table tabname
增加列:Alter table tabname add column col type
添加/删除主键:Alter table taname add/drop(删除) primary key(列名)
创建索引:create [unique] index idxname on tabname(col….)
创建视图:create view viewname as select statement
查询:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table where 范围
更新:update table1 set field1=value1 where 范围
模糊查找:select * from table1 where field1 like ’%value%’
排序:select * from table order by field1,field2 [desc]
总数统计:select count(*) from table
求和:select sum(field) as sumvalue from table
平均:select avg(field) as avgvalue from table
最大最小:select max/min(field) as value from table
查询范围值: select * from table1 where time between time1 and time2
UNION 运算符:请转表的关联查询
EXCEPT 运算符:请转表的关联查询
INTERSECT 运算符:请转表的关联查询
外连接:请转表的关联查询
分组:select age,SUM(age) from BaseTable GROUP BY age
复制表(只复制表结构): select * into b from a where 1<>1
复制数据: insert into b(列名) select 列名 from b;
索引
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。索引分为聚簇索引和非聚簇索引两种,聚簇索引 是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。
触发器
触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器分为after触发器,insert触发器, update触发器, delete触发器。
创建触发器语法:
create trigger tgr_name
on table_name
for 触发器类型
AS
数据库执行的语句
触发器实例
在ado数据库创建BaseTable的插入触发器:在向表BaseTable插入一条记录时,同时触发器会向Table表也插入一条数据作为记录触发器执行成功。
USE [Ado] GO /****** Object: StoredProcedure [dbo].[proc_BaseTable] Script Date: 05/25/2016 17:23:08 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[proc_BaseTable](@name varchar(50),@age int) AS BEGIN select * from BaseTable where name=@name select * from BaseTable where age=@age return 10 select * from BaseTable where name=@name and age=@age END
View Code
视图
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。创建视图:create view view_BaseTable as select id,name from BaseTable
数据库文件有一个BaseTableView.Sql文件执行即是此示例。
约束
在此功能上我只在BaseTable表的age字段添加check约束使年龄不能超过50.约束的属性介绍:
NOT NULL : 用于控制字段的内容一定不能为空(NULL)。UNIQUE : 控件字段内容不能重复,一个表允许有多个 Unique 约束。
PRIMARY KEY: 也是用于控件字段内容不能重复,但它在一个表只允许出现一个。
FOREIGN KEY: FOREIGN KEY 约束用于预防破坏表之间连接的动作,FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
CHECK: 用于控制字段的值范围。
DEFAULT: 用于设置新记录的默认值。
示例:
NOT NULL :Create table MyTable(
id varchar(32) not null,
name varchar (32)
)
UNIQUE:Create table MyTable
(
id varchar(32) not null UNIQUE,
name varchar (32)
)
Create table MyTable
(
id varchar(32) not null,
name varchar (32),
unique (id,.....)
)
PRIMARY KEY :Create table MyTable
(
id varchar(32) not null PRIMARY KEY,
name varchar (32)
)
Foreign Key :Create table MyTable
(
id nvarchar(32) not null primary key,
name nvarchar(32),
foreign key(id) references myTB(id)
)
Check :Create table MyTable
(
id
nvarchar(32) not null,
age int not null,
check (age>15 and age <30)
)
Default:Create table MyTable
(
id int,
name nvarchar(32) default 'celly'
)
游标
游标是一种能从包含多条数据记录的结果集中每次提取一条记录的机制。将批操作变成行操作,对结果集中得某行进行操作。数据库文件BaseTableCsr.sql是游标示例。查询BaseTable表的id与name字段循环打印出来。
表的关联查询
内连接:
只根据表查找符合添加的,不返回所有表数据。示例代码:
select * from BaseTable join tabname on
BaseTable.id=tabname.id
效果图
![](https://oscdn.geek-share.com/Uploads/Images/Content/201805/2f9c4a8883df9e5d27e6c630a0d59ef2.png)
左连接查询:
以左表为主第二张表加入有符合条件的则显示数据,没有则第二张表全部为空示例代码
select * from BaseTable left join tabname
on BaseTable.id=tabname.id
效果图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201805/71f628d136d666e4a11b37a37c33b924.png)
右链接查询:
以右表为主查找符合的数据,没有符合项左表显示为空示例代码:
select * from BaseTable right join tabname
on BaseTable.id=tabname.id
效果图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201805/244326cc6f6084c3c26be6d195b026ba.png)
完全外连接:
查找的表所有的数据合并成一张表进行显示示例代码:
select * from BaseTable full join tabname
on BaseTable.id=tabname.id
效果图(tabname表只有一条数据):
![](https://oscdn.geek-share.com/Uploads/Images/Content/201805/a3ab9d050cc928c00c506c1a1b05c64d.png)
交叉连接:
没有where语句的交叉连接产生的是两张表行数的乘积数据,如果带where的结果与内连接的结果相同。示例代码:
select * from BaseTable cross join tabname
效果图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201805/67786b4acf11d52b23f737114fe995ef.png)
UNION运算:
分为UNION(检查重复)和UNION all(不检查重复)检查重复示例代码:
select id from BaseTable union select id
from Tables
效果图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201805/c247832e772295e1f4668e9a989a3ce9.png)
不检查重复代码:
select id from BaseTable union all select id
from Tables
效果图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201805/0b659ce0df4728806565f5264568e62f.png)
EXCEPT运算:
从左查询中返回有右查询中没有找到的不重复项示例代码:
select id from BaseTable except select id
from tabname
效果图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201805/01bbacd3aad0bde1a3d220cfdb0eb05e.png)
INTERSECT运算:
返回两个表都有的非重复项示例代码:
select id From BaseTable intersect select
id from tabname
效果图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201805/26df3907660a9dd56e1a4ef0b280c9a4.png)
ADO
连接字符串常用属性
1、 DataSource:数据源。计算机名称或者IP地址。
2、
Server:服务器。数据库所在计算机的名称
3、
Database:数据库名称。
4、
Initail Catalog:数据库的名称。
5、
User ID:用于连接数据库的用户名称。
6、
Password:用于连接数据库的用户密码。
7、
Pooling:标志是否使用数据库连接池(少客户访问启用可以提高性能)。
8、
Intergrated Security:系统集成安全验证。标志登录数据库时是否使用系统集成验证。
9、
Connection Timeout:连接超时的时间。系统再次尝试连接数据库时所经历的时间,单位为秒,默认值为15秒。
在程序中的事务操作
首先创建事物:SqlTransaction st = conn.BeginTransaction();开始事物(即事物的赋值):cmd.Transaction = st;
提交事务:st.Commit();
回滚事务:st.Rollback();
假如要创建某个事物保存点可以使用:st.save();
根据事物操作可以做事物回滚的批量插入,修改操作,有一条不正确即可实现事物回滚,具体请看dome代码详细介绍。
调用储存过程
使用在数据库创建的储存过程在dome中通过ado进行调用,并得到返回的表。示例代码:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201805/860bb076d85af29c299eda6ee0f69cba.png)
注意点:在调用储存过程中,加入你的存储过程涉及到大量的操作,查询什么的,而你只需要返回其中的某个一条查询记录,需要在储存过程中找到需要返回的语句加上return
,这样在程序中调用只会返回本条语句结果。
相关文章推荐
- BCB使用ADO连接informix数据库的方法
- C++在WINDOWS平台使用ADO连接数据库
- VB使用ADO对象连接数据库
- 关于如何使用ADO连接数据库
- 使用JDBC连接各种数据库(总结)
- 粗谈使用ADO接口连接数据库
- ADO数据库连接语句(大全?)
- C#使用ADO.NET连接数据库简单代码实例
- VC下使用ADO连接数据库
- ★ 浅谈如何使用ADO.NET连接数据库 ★
- VC中用Ado接口代码连接和使用与数据库
- 使用ADO连接数据库的最简单的方法
- vc使用ADO操作数据库总结 (转)
- C#使用ADO.net连接数据库
- ADO.NET的一个帮助类库,只须一个连接,一条SQL语句,轻松实现数据库的查旬,再加一个object 轻松实现数据库的增删改
- 使用ADO.NET连接数据库(一)
- VC++中使用MFC通过ADO连接数据库方法小结
- Rave使用体会(22):Rave中连接ADO数据库的例子
- C#和SQL Server2000数据库连接,查询语句总结
- 总结了一下ADO.NET数据库连接的相关知识