数据库常用命令概括

一.数据库:

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_name1table_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_name1table_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








 



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值