数据库和ado连接语句的使用总结
基本的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表也插入一条数据作为记录触发器执行成功。
ALTER TRIGGER [dbo].[tgr_name] ON [dbo].[BaseTable] for INSERT AS BEGIN declare @name varchar(20),@id int; select @id = id, @name = name from inserted; set @name = @name + convert(varchar, @id); insert into [Ado].[dbo].[Table] values(@name, 18 + @id); END
储存过程
存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。
储存过程的优点:存储过程允许标准组件式编程,存储过程能够实现较快的执行速度,存储过程减轻网络流量,存储过程可被作为一种安全机制来充分利用。
系统储存过程:
系统存储过程是系统创建的存储过程,系统存储过程主要存储在master数据库中,以“sp”下划线开头的存储过程,有些也会在创建新数据库的时候自动创建在当前数据库。常用的系统储存过程有:
exec sp_databases; --查看数据库
exec sp_tables; --查看表
exec sp_columns student;--查看列
exec sp_helpIndex student;--查看索引
exec sp_helpConstraint student;--约束
exec sp_stored_procedures;
exec sp_helptext 'sp_stored_procedures';--查看存储过程创建、定义语句
exec sp_rename student, stuInfo;--修改表、索引、列的名称
exec sp_renamedb myTempDB, myDB;--更改数据库名称
exec sp_defaultdb 'master', 'myDB';--更改登录名的默认数据库
exec sp_helpdb;--数据库帮助,查询数据库信息
储存过程的示例调用:
重命名表的名字:exec sp_rename 'tablename', tablename1;
用户自定义储存过程
创建储存过程的语法:
Create proc|procedure proc_name
(
@参数名 类型,
….
)
As
Sql执行语句和一写判断处理
创建示例:
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
视图
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 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
效果图
左连接查询:
以左表为主第二张表加入有符合条件的则显示数据,没有则第二张表全部为空
示例代码
select * from BaseTable left join tabname
on BaseTable.id=tabname.id
效果图:
右链接查询:
以右表为主查找符合的数据,没有符合项左表显示为空
示例代码:
select * from BaseTable right join tabname
on BaseTable.id=tabname.id
效果图:
完全外连接:
查找的表所有的数据合并成一张表进行显示
示例代码:
select * from BaseTable full join tabname
on BaseTable.id=tabname.id
效果图(tabname表只有一条数据):
交叉连接:
没有where语句的交叉连接产生的是两张表行数的乘积数据,如果带where的结果与内连接的结果相同。
示例代码:
select * from BaseTable cross join tabname
效果图:
UNION运算:
分为UNION(检查重复)和UNION all(不检查重复)
检查重复示例代码:
select id from BaseTable union select id
from Tables
效果图:
不检查重复代码:
select id from BaseTable union all select id
from Tables
效果图:
EXCEPT运算:
从左查询中返回有右查询中没有找到的不重复项
示例代码:
select id from BaseTable except select id
from tabname
效果图:
INTERSECT运算:
返回两个表都有的非重复项
示例代码:
select id From BaseTable intersect select
id from tabname
效果图:
ADO
连接字符串常用属性
1、 Data
Source:数据源。计算机名称或者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进行调用,并得到返回的表。
示例代码:
注意点:在调用储存过程中,加入你的存储过程涉及到大量的操作,查询什么的,而你只需要返回其中的某个一条查询记录,需要在储存过程中找到需要返回的语句加上return
,这样在程序中调用只会返回本条语句结果。
sql语句生成id字段
REPLACE(CAST(CAST(NEWID() as binary()) + CAST(GETDATE() as binary()) as uniqueidentifier),'-','')
查询数据库的数据文件及日志文件的大小
查询出来的单位为MB
select name, convert(float,size) * (8192.0/1024.0)/. from 数据库名称.dbo.sysfiles
数据库和ado连接语句的使用总结的更多相关文章
- 64位程序,利用ADO连接Oracle数据库
刚好手头项目解决了ADO连接Oracle数据库的问题,记录下来,防止忘记. 项目情况:用32位环境完成算法动态库,结果后来需要升级到64位环境,由64位的软件来调用,则在64位设置下生成算法动 ...
- Delphi使用ADO连接网络数据库,断网后重连问题
原始文章: https://blog.csdn.net/blog_jihq/article/details/11737699# 使用TADOConnection对象连接网络数据库(以MySQL为例), ...
- MFC ADO连接Oracle12c数据库 客户端环境搭建
ADO连接方式一:Provider=MSDAORA.1; 环境配置如下: 去官网下载ODAC121024Xcopy_32bit.zip安装 安装方式如下: (1)解压文件 (2)用命令行CD到该文件的 ...
- C++连接mysql的两种方式(ADO连接和mysql api连接)
一.ADO连接mysql 1.安装mysql-5.5.20-win32.msi和mysql-connector-odbc-5.3.4-win32.msi(一般两个安装程序要匹配,否则可能连接不上) ...
- 读书笔记——数据库的ADO开发总结
基本上是对 ADO+开发指南.pdf 的摘抄和总结,以及个人心得. 文章末尾有<ADO+开发指南.pdf>的资源下载,附带个人批注. --------------------------- ...
- 一种利用ADO连接池操作MySQL的解决方案(VC++)
VC++连接MySQL数据库 常用的方式有三种:ADO.mysql++,mysql API ; 本文只讲述ADO的连接方式. 为什么要使用连接池? 对于简单的数据库应用,完全可以先创建一个常连接(此连 ...
- 从头开始学习数据库及ADO.NET——竹子整理
目前为止,学习编程一年有余,写过管理系统,写过商城,写过桌面,接触的多了,乱七八糟的点太多,一堆前段框架,后台类库,纷纷杂杂,更新迭代之快也是令人咋舌.于是我就在想,作为一名程序员,哪些内容是实打实的 ...
- 数据库和ADO
数据库语言 数据库的简易流程(数据库客户端软件和数据库服务软件的执行流程) 主键的概念 如何创建主键 如何创建外键 主外键关系的概念以及使用 数据库的主要类型 数据库的主要数据类型 使用SQL语句来创 ...
- VC++ ADO 连接 mysql
通过自己摸索和网上帮助 了解了VC++ 用ADO 连接mysql数据库的方法: 使用的方法是利用ADO通过建立ODBC数据源来最终达到访问MySQL的目的. 1.安装mysql数据库服 ...
随机推荐
- 2017-2018-1 20155205 嵌入式C语言——时钟
2017-2018-1 20155205 嵌入式C语言--时钟 题目要求 基础知识 插入位(以分钟为例) 提取位(以分钟为例) 在提取分钟时,运用到了位运算,位运算有以下规律: &0 --&g ...
- FileInputStream与FileOutputStreawm实现文件的加密与解密
- STL中的容器作为返回值
分别以函数返回值方式和参数传引用方式测试了vector.map两种容器,代码如下: // testContainer.cpp : Defines the entry point for the con ...
- ZKWeb网页框架1.7正式发布
1.7.0更新的内容有 更新项目格式到新的csproj 更新项目模板 打开新创建的Asp.Net Core项目将需要VS 2017,Asp.Net和Owin项目仍可以用VS 2015 补上插件模板的P ...
- Increasing Subsequence (hard version)
首先讲一下题目大意:给你n个数,然后从最左边(L)或者最右边(R)取一个数生成出一个新的序列,对于这个序列的要求是递增的(注意是递增的,不能存在等于的情况)问这个序列有多长.并打印此操作. 这题就是忘 ...
- Go语言数据类型
目录 基本数据类型说明 整型 浮点型 字符 字符类型本质探讨 布尔型 字符串 指针 值类型与引用类型 基本数据类型默认值 基本数据类型相互转换 注意事项 其他基本类型转string类型 string类 ...
- linux ls统计文件个数
Linux下有三个命令:ls.grep.wc.通过这三个命令的组合可以统计目录下文件及文件夹的个数. 统计当前目录下文件的个数(不包括目录) ls -l |grep "^-"|wc ...
- Windows系统CMD常用命令大全
命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全.稳定,有的用户还在使用,所以一 ...
- 转载 Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- docker学习篇(一) ----入门篇
什么是docker docker自2013年诞生以来已有5年了,最初基于Google公司的go语言实现的,项目代码在GitHub上进行维护. 项目地址:https://github.com/moby/ ...