SQL server 基本语句

--查询数据库是否存在

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)

修改约束

时间: 2024-10-14 20:43:50

SQL server 基本语句的相关文章

SQL Server UPDATE语句的用法详解

SQL Server UPDATE语句用于更新数据,下面就为您详细介绍SQL Server UPDATE语句语法方面的知识,希望可以让您对SQL Server UPDATE语句有更多的了解. 现实应用中数据库中的数据改动是免不了的.通常,几乎所有的用户数据库中的大部分数据都要进行某种程度的修改.在SQL Server数据库中要想修改数据库记录,就需要用UPDATE语句,UPDATE语句就是为了改变数据库中的现存数据而存在的.这条语句虽然有一些复杂的选项,但确实是最容易学习的语句之一.这是因为在大

自己整理的常用SQL Server 2005 语句、

--创建数据库 create database 数据库 go --打开数据库 use 数据库 --删除数据库 drop database 数据库 Go --创建数据表 create table 数据表 ( 列名1  数据类型1  限定条件(是否是主外键.是否为空), 列名2  数据类型2  限定条件(是否是主外键.是否为空) )go --删除数据表 drop table 数据表 --插入数据 --插入单行数据 insert  into 表名 [(列名1,列名2 )]  values  (‘数据1

SQL SERVER SELECT语句中加锁选项的详细说明 [转]

SQL Server提供了强大而完备的锁机制来帮助实现数据库系统的并发性和高性能.用户既能使用SQL Server的缺省设置也可以在select 语句中使用“加锁选项”来实现预期的效果. 本文介绍了SELECT语句中的各项“加锁选项”以及相应的功能说明. 功能说明: NOLOCK(不加锁) 此选项被选中时,SQL Server 在读取或修改数据时不加任何锁. 在这种情况下,用户有可能读取到未完成事务(Uncommited Transaction)或回滚(Roll Back)中的数据, 即所谓的“

连接sql server的语句

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient; namespace linksql{ public partial class Form1

如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?

如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还包括:如何在SQL Server存储过程中获取另一存储过程的执行结果记录集?如何在存储过程中检索动态SQL语句的执行结果?如何实现类似SELECT * FROM (EXEC procedure_name @parameters_var) AS datasource ... 的功能?procedure_

SQL Server中语句的自动参数化

原文:SQL Server中语句的自动参数化 use master go if exists(select * from sys.databases where name = 'test') drop database test go --创建数据库 create database test if exists(select * from sys.tables where name = 't') drop table t go --1.创建表t create table t(i int); --

SQL Server脚本语句

一.语法结构 select select_list [ into new_table ] from table_source [ where search_condition ] [ group by broup_by_expression ] [ having search_condition ] [order by order_by_expression [ asc | desc ] select查询语句中的主要参数说明如下 select_list:查询的列或者表达式的列表,用逗号进行分隔.

Sql Server Alter语句

在修改Sql Server表结构时,常用到Alter语句,把一些常用的alter语句列举如下. 1:向表中添加字段 Alter table [表名] add [列名] 类型 2:  删除字段 Alter table [表名]  drop column [列名] 3:  修改表中字段类型 (可以修改列的类型,是否为空) Alter table [表名] alter column [列名] 类型 4:添加主键 Alter table [表名] add constraint [ 约束名] primar

sql server 经典语句。~转 (入门必看)

一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4.说明:创建

SQL Server Merge语句的使用

Merge关键字在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句.MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插入.更新或删除操作.例如,根据在另一个表中找到的差异在一个表中插入.更新或删除行,可以对两个表进行同步.”,通过这个描述,我们可以看出Merge是关于对于两个表之间的数据进行操作的. 可以想象出,需要使用Merge的场景比如: 数据同步 数据转换 基于源表对目标表做Insert,Update,Del