自己平时整理的常用SQL语句


--一:管理数据库

--1.创建数据库

create database Studentwork
on
(name=Studentwork_data,
filename='D:\DB\Studentwork_data.mdf',
size=5MB,
maxsize=20MB,
filegrowth=5%
)
log on
(
name=Studentwork_log,
filename='D:\DB\Studentwork_log.ldf',
size=2MB,
maxsize=10MB,
filegrowth=1MB
)
go

--2.修改数据库名称(Alter database语句)

--语法:Alter database databasename modify name=newdatabasename

--eg:将数据库studentwork的名字改为school

alter database studentwork modify name=school

--3.修改数据库大小,可以在Alter database语句中使用Add file字句新增一个次要数据库文件实现

--eg:

alter database studentwork
add file
(
name=studentwork_data1,
filename='D:\DB\studentwork_data1.mdf',
size=3MB,
maxsize=10MB,
filegrowth=10%
)

--4.删除数据库

--Drop database 数据库名

--eg:

Drop database studentwork//删除studentwork数据库

--5.查询数据库状态(简单应用)

--eg:

use studentwork
go
select databasepropertyex('studentwork','status')
as '当前数据库状态'

--6.手动操作

--*数据库的分离与附加

--*数据库的脱机与联机(方便数据库的拷贝与移动)

--*备份(.bak)与还原

 

--二:管理表

--1.创建表

--eg:

use studentwork
go
create table studentinfo
(
stuid int primary key identity(1,1) not null,--stuid为此表的主键并标识为自动增长列
stunum int references classwork not null,--stunum为另一张表classwork的外键
stuname nchar(5) not null,
address nvarchar(50) default '北京' null,--设置默认值
score int check(score between 0 and 100),--为字段建约束
-- constraint fk_stunum foreign key(stunum)
-- references classwork
)

create table classwork
(
stunum int not null,
classnum int not null,
classemail varchar(30) null
constraint pk_stunum primary key(stunum)--建主键
constraint fk_classnum foreign key(classnum) --建外键
references gradework(classnum)
)

create table gradework
(
classnum int primary key not null ,
classinfo nvarchar(50) null
)

 --2.修改表中的列

--(1)添加列
--eg:
alter table gradework--alter table 表名
add gradeemail nvarchar(30) null--add 新增字段名+其它属性

--(2)修改列的属性
--eg:
alter table gradework
alter column gradeemail nvarchar(max)

--(3)删除列
--eg:
alter table gradework
drop column gradeemail
--drop colum gradeemail cascade(有约束的情况下使用CASCADE)


 --3.删除表

drop table studentinfo

 

  --4.操作表数据(增、删、查、改)

--(1)增加表数据
InSert [INTO] <表名> [列名] Values <值列表>
--eg:
  --insert into gradework values(1,'电子商务')--如果表名后面没有明确标明字段,则values内对应值为:除自动增长列以外的所有字段;如果出现表中默认值字段,
                                             则values内也要赋给相应的值(但不管赋给默认字段的是什么值,此时已经覆盖了原由设置的默认值)。    
  --insert into gradework(classnum,classinfo) values(1,'电子商务')//如果有自动增长列也不用列出
    insert into gradework(classnum,classinfo) values(2,'计算机')//添加多条数据;注意:如果表中某个字段设定了默认值(default),则最好采用这种明确

标明字段的方式(即默认值字段不用列出)来添加数据,这样就不会覆盖原有的默认值。
  --另外的方式同时添加多条数据
  insert dbo.classwork select 7,1,'ykw@sina.cn' union all 
                        select 9,1,'kun@sina.com' union all
                        select 3,1,'fei@yeah.net' 
  注意:a.添加数据时,数据表如果涉及到了外键一定要注意,该外键所对应的表中是否有相应的数据

       b.自动增长列,不用再人为的添加数据

       c.注意不同方式的默认值字段
    d.批量添加数据,union all的使用


   

--(2)删除表数据
delete from 表名--只是删掉了表中的数据,表还存在 / Truncate Table 删除表中的所有行,但表结构及其列、约束、索引等保持不变
   drop table 表名 --删除了整个表
-- eg:
--delete from gradework//删除了gradework表中的所有数据
--delete from dbo.studentinfo where stuid=3//带条件的删除部分数据
--DELETE FROM T_Person WHERE FAge > 20
注意:a.删除表数据时,应该考虑清楚该表是否涉及到主外键关系,原则上是先删外键表,再删主键表。

b.切记,在执行删除操作时,一定要考虑清楚是否是部分删除,一旦数据删除很难恢复.

c.再者,可以设计表时,可以考虑设置一个软删除标识字段.

 

 --(3)查询数据
     简单的数据检索 :SELECT * FROM T_Employee
 
     只检索需要的列 :SELECT FNumber FROM T_Employee / SELECT FName,FAge FROM T_Employee
 
     列别名:SELECT FNumber AS 编号,FName AS 姓名,FAge AS Age111 FROM T_Employee
 
     使用where检索符合条件的数据:SELECT FName FROM T_Employee WHERE FSalary<5000
 
     检索不与任何表关联的数据:select 1+1 / select newid() / select getdate()--查询当前时间
  
     联合查询等...

 

--(4)修改数据

  Update <表名> Set <列名 = 更新值>[Where <更新条件>]

  更新一个列:UPDATE T_Person Set Age=30
 
  更新多个列:UPDATE T_Person Set Age=30,Name=‘tom’

  更新一部分数据: UPDATE T_Person Set Age=30 where Name=‘tom’//用where语句表示只更新Name是’tom’的行



 

posted @ 2011-12-25 15:04  fly_kw  阅读(301)  评论(1编辑  收藏  举报