自己平时整理的常用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’的行