--查询数据库是否存在

if exists ( select * from sysdatabases where [name]='TestDB')

print 'Yes, the DB exists'

else

print 'No, need a new one?'

--新建一个数据库

create database TestDB on

(

name = 'TestData',

filename = 'G:\DBS\KeyTest.mdf',

size = 3,

filegrowth = 2

)

log on

(

name = 'TestLog',

filename = 'G:\DBS\KeyTest.ldf',

size = 3,

filegrowth = 10

)

--drop database TestDB

use TestDB

go

--新建一个表

create table [Scores]

(

[ID] int identity(1,1) primary key,

[Student] varchar(20) ,

[Subject] varchar(30),

[Score] float

)

--drop table [Scores]

--修改表中的一列

alter table Scores alter column [Student] varchar(20) not null

--新增一列

alter table Scores add Birthday datetime

--删除一列

alter table Scores drop column Birthday

--往表中插入单条数据,方法:带列名

insert into Scores(Student,Subject,Score)

values('张三','语文','90')

--往表中插入单条数据,方法:不带列名,但要求值的类型要和列字段类型对应

insert into Scores

values('张三','英语','95')

--插入多条数据:用union或者union all

insert into Scores(Student,Subject,Score)

select '李四','语文','89'

union all

select '李四','英语','78'

--删除表中数据,没有条件时,删除所有

delete from Scores where ID in(7,8)

--修改表中数据

update Scores

set Student='王五',Score='94'

where ID=10

--查看数据

select * from Scores

--查看表中最大的identity值

select @@identity

--查找两个表中列的值是否相同,相同则不显示,不相同的则查出结果

select * from B_PowerStation a where not exists(select * from B_PowerPile b where a.ID=b.ID)

--或者利用dbcc命令查看表中最大的identity值

dbcc checkident('Scores',noreseed)

--创建视图,全部省略视图的属性列名,由子查询目标列的字段组成

create view StudentView

as

select Student,Subject,Score

from Scores

--加上with check option,以后对视图的操作(增,改,删,查)都会自动加上where ID>3

/*

create view StudentView

as

select Student,Subject,Score

from Scores

where ID>3

with check option

*/

--创建视图,全部定义属性列名,需要定义列名的情况:

----某个目标列(子查询)不是单纯的属性列,而是聚集函数或列表达式

----多表连接时选出了几个同名列

----需要在视图中为某个列启用新的更合适的名字

create view IS_Student(Student,Subject,MaxScore)

as

select Student,Subject,Score

from Scores

where Score=(select max(Score) from Scores)

--查询视图,和基本表完全样,只不过如果视图中有with check option,会自动加上那个条件

select *

from StudentView

--查询自定义列名的视图

select *

from IS_Student

--对视图的insert/delete/update,和对基本表的操作一样,并且最终都是用RDBMS自动转换为对基本表的更新

--并不是所有的视图都是可更新的,因为有些视图的更新不能有意义的转换成对相应基本表的更新

--删除视图

drop view StudentView

1.  SQL常用命令使用方法:

(1)数据记录筛选:

select*from Products:查询出Products表里面的所有信息

select ProductID,ProductName from Products:查询出Products表里面所有ProductID,ProductName

select ProductID,ProductName from Products where ProductID=1:查询出Products表里ProductID=1的所有ProductID和ProductName

select* from employee where fname='Paul' and job_id=5 :查询出employee表中fname=Paul,并且job_id=5的所有记录

select*from Products where ProductID in(4,5,6):查询出Products表中ProductID为,5,6的所有信息

select*from Products where UnitPrice>10 and UnitPrice<30 order by UnitPrice:查询出Products表中<UnitPrice<30的所有信息,并按照UnitPrice的大小由小到大排序

select*from Products where UnitPrice between 10 and 30 order by UnitPrice:上面的另外一种写法

select * from Employees where FirstName like 'A%':查询出Employees中FirstName里面第一个字母是A的所有人信息

select*from Employees where FirstName like '%A%':查询出Employees中FirstName里面中间有A的所有人信息

select*from Employees where FirstName like '%A':查询出Employees中FirstName里面最后一个字母是A的所有人信息

select count(*) from Employees:查询出Employees表中的所有记录数

select min(Unitprice)from Products:查询出Products表中Unitprice的最小值

select max(Unitprice)from Products:查询出Products表中Unitprice的最大值

select avg(Unitprice)from Products:查询出Products表中Unitprice的平均值

select sum(Unitprice)from Products:查询出Products表中Unitprice的总和

select * from Products where Unitprice> (select avg(Unitprice) from Products):有子查询,查找出比平均值高的商品信息

select top 5* from Products:查询出前五条的记录信息

select distinct [name] from Category :查出Category 中不重复的name

select count(distinct name) from Category :查出Category 中不重复的name的数量

(2) 更新数据记录:

sql="update 数据表set 字段名=字段值where 条件表达式"

sql="update 数据表set 字段=值,字段=值……字段n=值n where 条件表达式"

(3) 删除数据记录:

sql="delete from 数据表where 条件表达式"

sql="delete from 数据表" (将数据表所有记录删除)

(4) 添加数据记录:

sql="insert into 数据表(字段,字段,字段…) values (值,值,值…)"

sql="insert into 目标数据表select 字段名from 源数据表" (把源数据表的记录添加到目标数据表)

(5) 数据记录统计函数:

AVG(字段名) 得出一个表格栏平均值

COUNT(*&brvbar;字段名) 对数据行数的统计或对某一栏有值的数据行数统计

MAX(字段名) 取得一个表格栏最大的值

MIN(字段名) 取得一个表格栏最小的值

SUM(字段名) 把数据栏的值相加

引用以上函数的方法:

sql="select sum(字段名) as 别名from 数据表where 条件表达式"

set rs=conn.excute(sql)

用 rs("别名") 获取统的计值,其它函数运用同上。

(6) 数据表的建立和删除:

CREATE TABLE 数据表名称(字段 类型(长度),字段 类型(长度) …… )

例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE 数据表名称 (永久性删除一个数据表)

2. 记录集对象的方法:

rs.movenext 将记录指针从当前的位置向下移一行

rs.moveprevious 将记录指针从当前的位置向上移一行

rs.movefirst 将记录指针移到数据表第一行

rs.movelast 将记录指针移到数据表最后一行

rs.absoluteposition=N 将记录指针移到数据表第N行

rs.absolutepage=N 将记录指针移到第N页的第一行

rs.pagesize=N 设置每页为N条记录

rs.pagecount 根据 pagesize 的设置返回总页数

rs.recordcount 返回记录总数

rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否

rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否

rs.delete 删除当前记录,但记录指针不会向下移动

rs.addnew 添加记录到数据表末端

rs.update 更新数据表记录

3.  排序

desc就是用于查询出结果时候对结果进行排序,是降序排序,而asc就是升序。。要用与order by一起用。

例如select * from student order by id desc; 就是把选出的结果经过“按id从大到小排序”后,把资源返回。

还可以select * from student order  by age desc,id desc;用“,”号隔开多个排序条件,这样,先按age 再按 id,就是说,先按age从大到小排序,如果有相同年龄的,那么相同年龄的学生再按他们的id从大到小排序。

DESC指排序时按降序排序ASC是升序。

约束篇:

1.主键约束:

要对一个列加主键约束的话,这列就必须要满足的条件就是分空

因为主键约束:就是对一个列进行了约束,约束为(非空、不重复)

以下是代码   要对一个列加主键,列名为id,表名为emp

格式为:

alter table 表格名称 add constraint 约束名称 增加的约束类型 (列名)

例子:

alter table emp add constraint ppp primary key (id)

2.check约束:

就是给一列的数据进行了限制

比方说,年龄列的数据都要大于的

表名(emp) 列名(age)

格式:

alter table 表名称 add constraint 约束名称 增加的约束类型 (列名)

例子:

alter table emp add constraint xxx check(age>20)

3.unique约束:

这样的约束就是给列的数据追加的不重复的约束类型

格式:

alter table 表名 add constraint 约束名称 约束类型(列名)

比方说可以给ename列加个unique,让ename列的数据不重复

例子:

alter table emp add constraint qwe unique(ename)

4.默认约束:

意思很简单就是让此列的数据默认为一定的数据

格式:

alter table 表名称 add constraint 约束名称 约束类型 默认值) for 列名

比方说:emp表中的gongzi列默认为

alter table emp add constraint jfsd default 10000 for gongzi

5.外键约束:

这个有点难理解了,外键其实就是引用

因为主键实现了实体的完整性,

外键实现了引用的完整性,

应用完整性规定,所引用的数据必须存在!

其实就是个引用,

比方说一个表名称叫dept 里面有列数据 一列是ID一列是ENAME

id:表示产品的编号

ename:表示产品的名称

另外一个表格名称是emp 里面有列数据,一列是ID 一列是DID

id:表示用户号

did:表示购买的产品号

要让emp表中的did列去引用dept表中的id

可以用下面的方法

格式:

alter table 表名 add constraint 约束名称 约束类型 (列名) references 被引用的表名称(列名)

例子:

alter table emp add constraint jfkdsj foreign key (did) references dept (id)

修改约束

最新文章

  1. DB表的关系及EF中Fluent API的使用
  2. BP人工神经网络原理(转载)
  3. 实战CENTOS6.5安装docker并创建asp.net mvc 5 镜像,运行MVC 网站
  4. 添加IP安全策略 远离系统Ping漏洞的威胁
  5. Spring+SpringMVC+Mybatis+MAVEN+Eclipse+项目完整环境搭建
  6. 读书笔记:java特种兵(上)
  7. go 学习笔记 - sublime text 环境配置
  8. 通过OC实现简单的冒泡排序
  9. C#用正则表达式去掉Html中的script脚本和html标签
  10. MVC模块化架构
  11. 动态创建Fastreport(delphi)
  12. 理解Device Tree Usage
  13. 剑指offer 5.栈和队列 用两个栈实现队列
  14. ajax请求导致status为canceled(无任何回调数据)的原因
  15. jquery ui autocomplete输入中文不自动完成的问题
  16. 深入浅出理解依赖注入这种由外部负责其依赖需求的行为,我们可以称其为 “控制反转(IoC)”
  17. go 数组、切片
  18. OC开发_Storyboard——多线程、UIScrollView
  19. [OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
  20. GCJ 2015R2(Bilingual-最小割)

热门文章

  1. jieba中文分词源码分析(四)
  2. NIO 中文乱码问题的解决代码实现
  3. Python--day70--csrf简单用法、 跨站请求伪造和csrf_token使用
  4. POJ 1961 Period 还是next数组的含义、
  5. H3C PPP MP实现方式
  6. Python--day48--ORM框架SQLAlchemy操作表
  7. gSOAP 使用
  8. laravel post提交数据时显示异常
  9. P1077 旅行
  10. H3C查看、删除已经保存配置文件--用户图示(console)以上