未加星标

数据库常用命令概括

字体大小 | |
[数据库(综合) 所属分类 数据库(综合) | 发布者 店小二05 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

一.数据库:

1.创建数据库

create database database_name

2.相应的删除数据库

drop database database_name

3.以及对数据库的备份

注意需要一个存储备份的设备device,或者说空间

use master

EXEC sp_addumpdevice 'disk' , 'testBack', 'c:\mssql7backup\MyNwind_1.dat'

有了备份空间使如下语句进行备份

backup database pubs to testback

4.修改数据库的名字

sp_renamedb 'old_name','new_name'

5.分离数据库

sp_detach_db 'c:\mssql7backup\MyNwind_1.dat'

6.附加数据库

sp_attach_db 'c:\mssql7backup\MyNwind_1.dat'

7.压缩数据库

dbcc shrinkdatabase(database_name)

二,表

1.创建新表

方式一:直接创建新表

create table table_name

(

stu_id char(10) not null primary key,

name char(10) not null,

)

初始化表

truncate table table_name

方式二:按原来旧表的方式创建新表(相当于把旧表所有的属性都加到了新表)

create table table_new like tab_old

create table table_new as select col1,col2...from table_old definition only (相当于是把旧表的某一些属性加到了新表)

2.相应的删除表

drop table table_name

注意到这个drop是真的删除了这个表,属性也被删除了,空间必然得到释放;而我们常常会使用的是清空数据,释放空间

这个时候就要用到truncate会删除表中所有的数据,表示清空,这个时候表还在,只是值都为null。

truncate table table_name

3.对表做添加属性操作(修改表,加属性)

alter table table_name add column col type

这里值得注意的是:这样操作后,列不能删除,类型也不能更改,最多能改的是varchar()的长度。

4.在表中添加主键(修改表,某列col加主键)

alter table table_name add primary key(col)

相应的删除主键(修改表,删除某列col主键)

alter table table_name drop primary key(col)

5.给表建立(唯一或不唯一)索引(建索引在表某列或某几列)

create 【unique】index index_name on table_name(col....)

相应的删除索引

drop index index_name

这里值得说明的是:索引是不可以再去更改的,要想为其他列建立索引,就必须新建

6.复制表select into(只复制结构,源表名:table_old,新表名:table_new)

方式一:select * into table_new from table_old where 范围(注意这个只能用在SQLserver)

方式二:select top() *into table_new from table_old

7.拷贝表 insert into (拷贝数据,源表名:table_old,新表名:table_new)

insert into table_new(col1,col2,col3..) select (col,col,col...) from table_new

注意,如果是跨数据库之间的表的拷贝,那要使用绝对路径去添加(from in '具体的数据库的绝对路径' where 范围)

insert into table_new(col1,col2,col3..)select (col1,col2,col3..) from in ' "&Server.MapPath(".")& " \data.mdb" &"' where 范围

三.视图简解

1.创建视图

create view view_name as select statment

2.相应的删除视图

drop view view_name

3.查看与某表相关的视图,存储过程,函数

select table_name.* from sysobjects a,syscomments table_name2 where table_name.id =table_name2.id and table_name.text like '%table_name%'

4.查看数据库对象的相关信息

sp_depends view_name

5.查看数据库对象的数据类型信息

sp_help view_name

四.单表的增删改查

1.选择范围

select * from table_name where 范围

注意这里的范围:

有时候很简单,提示一个使用 in 的技巧,表示范围是不是在这个值中

如 select *from table_name where a [not] in ('值1','值2','值3')

还有 between

如 select *from table_name where num [not] between num1 and num2

2.插入表中(列1,列2...)对应的(值1,值2....)

insert into table_name( field1,field2...) values(values1,values2.....)

3.删除表中行数

delete from table_name where 范围

注意这里要提到一个知识点:删除重复的记录(distinct)

A方式:delete from table_name where id in (select id from table_name group by id having count(id)>1)

注意这里出现分组的知识点,那我们先把分组的讲清楚:

分组,group by 指的是对数据按某个属性进行分组,配合having 条件语句最佳

B方式:使用distinct

select distinct * from table_name

部分去重:select distinct col1,col2 from table_name

4.改表中某列某范围的值

update table_name set fieled1=values where 范围

5.查找某范围内符合要求的值

select * from table_name where 范围 like '%value1%'

这里说一下匹配字的知识:

[ ] 匹配的是一个范围中的任意一个字符;_ 匹配的是一个任意字符; [ ^] 不匹配这个范围; % 匹配任意个字符
注意:特殊字符需要转义,使用[ ] 可以转义 如[@#$%^]这样的方式去匹配,不过这样用^是不能转义的;也可以使用Escape去转义 如 ' 'Esacpe' \@#$% '

如 :

A.select * from table_name where column_id like '[1-9]_db[^a-c]%'

表示查询的是 某表中columu_id列中以1-9开头的 第二位是任意字符 三四为一定为db第五位一定不是a-c的数据

B. select * from table_name where "averylongstring" like ' % '+book+' % '

使用+和%连接,匹配时book会被具体的内容替代

C.select charindex('789','123456789',2) 表示从第第2为匹配789,返回值为7

charindex(short,long,start)这个函数是说从start位置在长串中匹配短串,然后返回匹配的最开始位置

6.排序(某范围从大到小(降序desc),从小到大(acs))

select * from table_name order by field1,field2 desc

7.查找运算函数

总数:select cout as totalcount from table_name

某范围求和:select sum(field1) as sumvalue from table_name

求平均:select avg(field1) as avgvakue from table_name

求最大:select max(field1) as maxvalue from table_name

求最小:select min(field1) as minvalue from table_name

五.表间的操作运算

1.union运算符(将两个表组合并消去重复行成一个结果表,加上All则不消除重复行)(求并集)

如:

select column_id from table_name1union select column_id from table_name2

select column_id from table_name1 union All select column_id from table_name2

2.except 运算符(将在table_name1中但不在table_name2中的行并消除重复行成一个结果表,加上All则不消除重复行)(求补集)

select column_id from table_name1 except select column_id from table_name2

select column_id from table_name1 except All select column_id from table_name2

3.intersect 运算符(将在table_name1并且也在table_name2中的行并消除重复的行成一个结果表,加上All则不消除重复行)(求交集)

select column_id from table_name1 intersect select column_id from table_name2

select column_id from table_name1 intersect All select column_id from table_name2

六.多表的查询操作

1.使用外连接(有三种方式:注意这个outer关键字可以省略,默认的)

A.左(外)连接 left (outer) join-组成结果表中包括的是子句中指定左表的所有行,而不仅仅只是连接列所匹配的行;若左表的某行在右表中没有匹配行,则结果表中右表的所有选择列表均为空值。

select table_name1.name,table_name2.name from table_name1 left jointable_name2 on table_name1.id=table_name.id

B.右(外)连接right (outer)join-组成结果表中包括的是子句中指定右表的所有行,而不仅仅只是连接列所匹配的行;若右表的某行在左表中没有匹配行,则结果表中左表的所有选择列表均为空值。

select table_name1.name,table_name2.name from table_name1 right join table_name2 on table_name1.id=table_name.id

C.完整(外)连接full (outer)join-组成的结果表中包含左表和右表的所有行;若某行在另一个表中没有匹配行,则匹配列为空值。

select table_name1.name,table_name2.name from table_name1 full join table_name2 on table_name1.id=table_name.id

2.使用内(inner)连接(使用=或者< >等比较运算符根据每个表共有的列的值来匹配两表中的行)

A.相等连接 (结果只会显示匹配好的行)

如:select table_name1.name,table_name2.name from table_name1 inner join table_name2 on table_name1.id=table_name.id

B. 自然连接(是一种特殊的等值连接,要求比较的属性必须是相同的元素组,并且结果表中会把重复的属性行去掉)

1.纯自然连接(natual join):当源表和目标共享相同名称的列时,就可以在它们之间执行自然连接,而不需要指定连接列

如:select table_name1.col,table_name2.col from table_name1 natual join table_name2(sql)

  select table_name1.col,table_name2.col from table_name1,table_name2(oracle)

注意:如果使用纯自然连接时,若没有相同的列,会产生交叉连接的(笛卡尔积)

交叉连接:结果表中返回行是左表中每一行与右表中所有行的组合:

如:select table_name1.id,table_name2.name from table_name1 cross join table_name2

2.自然连接(join using )/(join on)-(注意关键字 on,using和natual 不能同时出现)

如:join using :当源表和目标表有多个共同的列名,而不想它们作为连接列时。

select table_name1.col,table_name2.col from table_name1 join table_name2using (col1,col2...)(SQL)

select table_name1.col,table_name2.col from table_name1,table_name2 where table_name1.col=table_name2.col(Oracl)

join on:显示陈述连接列,也可以用来指定一些条件来限制连接创建的结果集

  select table_name1.col,table_name2.col from table_name1join table_name2 on(table_name1.co=table_name2.col)(SQL)

select table_name1.col,table_name2.col from table_name1,table_name2where table_name1.co=table_name2.col(Oracl)

七.基于前面基础的查询扩充

1.列出数据库中的所有的表名(U 代表用户)

select name from sysobjects where xtype ='U' and status>=0 order by name

2.列出表里中所有的列名(属性名)

select name from syscolumns where id =object_id('table_name')

3.随机选择记录

select newid()

4.随机的选出10条数据

select top 10 *from table_name order by newid()

5.某范围选择前10条记录

select top 10 *from table_name where 范围

6.数据库中时间的查询

A.显示文章,提交人,和最后回复时间

select a.title , a.username , b.adddate from table a , (select max(adddate) adddate from table where table.title =a.title) b

B.日程安排(table_name)提前五分钟提醒

select * from table_name where datediff('minute',f开始时间,getdate())>5

本文数据库(综合)相关术语:系统安全软件

主题: 数据SQL删除数据库存储过程
分页:12
转载请注明
本文标题:数据库常用命令概括
本站链接:http://www.codesec.net/view/480252.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(综合) | 评论(0) | 阅读(36)