sql基础操作
1、 常用添加,修改,删除,查询操作命令:
insert into MS_Orders values('21','003',0123.5) 添加命令
update MS_Orders set Cust=’001’ where Number=’001’ 修改命令
delete * from MS_Orders where Number=’001’ 删除命令
select Cust,sum([Money]) from MS_Orders group by Cust 数据分组
2、给用户为表格分配权限:
grant select on MS_Orders to tong 分配权限给用户
revoke insert,select on MS_Orders to tong 移除用户的权限
3、 创建数据库:
创建表:create table MS_Orders (Number char(10),Cust char(10),MSO_Money Money)
删除表:Drop Table MS_Orders
4、 查询数据库:
A、计算字段:select City,region,(seles-target) from offices 字段相减
Select name,Month(hide_date),year(hide_date) from Salesreps 内置函数使用
Select city,’has seles of’ from offices 常量的使用
B、字段的选择:select * from offices 本人建议不要是用*选择字段,而是使用明确的字段
C、重复字段删除:select distinct mgr from offices
D、选择记录(Where):select city,seles,target from offices where sales>targets
Select city,sales,target from offices where sales<(.8*target)
E、对null值的考虑:一个搜索条件可以产生true,false或Null值。只有其搜索条件产生的true那些记录才被包括在查询结果中。当要进行搜索一个值为空的值数据需要:
select * from MS_Orders where [Money] is not null
F、选择范围(Between):select order_Num,Order_Date,MFR,Product,Amount from Orders where Order_Date between ’01-oct-89’ and ’31-dc-89’
G、带like的模糊查询 select number,name from student where number like ‘%12%’模糊查询,%可以代表任何的字符,并且是N个。
H、order by 进行数据排序:
select * from MS_Orders order by cust asc
select * from MS_Orders order by 3 desc
5、 要生成Select语句的查询结果,请遵循下面的这些步骤:
A、 从from子句中提到的表开始。
B、 如果有一条Where子句,应用它的搜索条件到表的每一条记录,保留搜索条件为True的那些记录,并去掉搜索条件为False或Null的那些记录。
C、 对每个保留的记录,计算选择列表中每项的值,以生成一条查询结果记录。对于每个字段引用,使用当前记录中字段的值。
D、如果制定Select Distinct,消除所生成的查询结果中的任何重复记录。
E、 如果有一跳Order by子句,按制定的那样排序查询结果。
6、 多对多关系不同于由主键字/外键字匹配字段创建一对多关系。可以总结如下:
A、 匹配主键字和外键字的连接总是创建一对多的父/子关系。
B、 如果在至少一个表中的匹配字段对于表的所有记录有唯一值,那么其他连接可以生成一对多的关系。
C、 通常,在任意匹配字段上的连接生成多对多关系。
7、 多表字段选择:select Cust.*,Name from Cust,Sales,Orders
8、 数据库查询字段改名字:select C.*,Name as SalesName from Cust C,Sales,Orders
9、 获取在表格中含有相同的数据的方法:
select name from Sales group by Name having count(*)>1
10、 union 和union all的结果是不同的,第一点就是union是将数据填充到表格中,而会删除两张表格的相同的数据,但是union all 就是将数据全部的填充到表格中并不会删除相同的数据。使用用例:SELECT Date FROM Store_Information UNION SELECT Date FROM Internet_Sales
11、 inner join的用法:INNER JOIN 连接五个数据表的用法:SELECT * FROM (((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号) INNER JOIN 表5 ON Member.字段号=表5.字段号
12、为查询结果自动编号:SELECT 序号= IDENTITY(INT,1,1),name
INTO #LiMing
FROM girls;
GO
SELECT * FROM #LiMing;
GO
DROP TABLE #LiMing;
GO
13、 Untion,intersect和difference的区别在于,Untion是获取的意思,后两者都是并且的意思
14、 数据完整性:要求的数据,有效性的数据,实体完整性,引用完整性,其他数据关系,商业规则,一致性
要求的数据:检查表格中的每一个字段的每一条记录都是不能为空的必须有值。
字段检查约束:create table saleserps(EMPL_Num integer not null check (EMPL_Num between 101 and 199))
实体完整性:其他唯一性约束,唯一值和NULL值
引用完整性:插入一条新的孩子记录,更新孩子记录的外键字,删除父亲记录,更新付记录中的主关键字,层叠删除更新,引用循环
15、sql导出数据到access数据库中
--将sql数据导入到Access中
select ID from dbo.News
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="D:\tongyonglei\TempItem\fl_Db\RedoveData.mdb";User ID=Admin;Password=')...News
(ID,[Content])
select ID,[Content] from News
--关闭服务
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
--打开服务
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
16、查看数据库日志信息
DBCC log ( {dbid|dbname}, [, type={0|1|2|3|4}] )
参数:
Dbid or dbname - 任一数据库的ID或名字
type - 输出结果的类型:
0 - 最少信息(operation, context, transaction id)
1 - 更多信息(plus flags, tags, row length)
2 - 非常详细的信息(plus object name, index name,page id, slot id)
3 - 每种操作的全部信息
4 - 每种操作的全部信息加上该事务的16进制信息
默认 type = DBCC log ( {dbid|dbname}, [, type={0|1|2|3|4}] )
参数:
Dbid or dbname - 任一数据库的ID或名字
type - 输出结果的类型:
0 - 最少信息(operation, context, transaction id)
1 - 更多信息(plus flags, tags, row length)
2 - 非常详细的信息(plus object name, index name,page id, slot id)
3 - 每种操作的全部信息
4 - 每种操作的全部信息加上该事务的16进制信息
默认 type = 0
分页方式:
select top 20 AutoID,Name,Memo from tab_P_Group
where AutoID not in
(select top 1000 AutoID from tab_P_Group order by AutoID asc) order by AutoID asc
insert into tab_P_Group(Name,Memo) select Name,Memo from tab_P_Group