SQL Server操作的SQL语句

创建数据库

CREAT DATABASE book
ON PRIMARY
(NAME=book_data, 
FILENAME='D:\book.mdf',
SIZE=55,
MAXSIZE=120,
FILEGROWTH=10%)
LOG ON
(NAME=book_log, 
FILENAME='D:\book.ldf',
SIZE=12,
MAXSIZE=30,
FILEGROWTH=3)

查看数据库信息
sp_helpdb 'book'

打开切换数据库
USE book

扩充数据库容量
USE book
Go
ALTER DATABASE book
MODIFY FILE
(NAME='D:\book.mdf',
SIZE=60)

数据库缩减至最小容量
USE book
Go
DBCC SHRINKDATABASE('book')

查看数据库选项
EXEC sp_dboption 'book'

将数据库设为只读状态
EXEC sp_dboption 'book','read_only',True

数据库更名
EXEC sp_dboption 'book','single user','true'
EXEC sp_renamedb 'book','shu'
EXEC sp_dboption 'shu','single user','false'

删除数据库
DROP DATABASE book

创建用户自定义类型
USE book
GO
EXEC sp_addtype meetingday, smalldatetime, 'NOT NULL'

删除用户自定义类型
USE book
GO
EXEC sp_droptype 'meetingday' 

创建表
USE book
GO
CREATE TABLE book1
(编号 CHAR(8) NOT NULL,
ISBN号 CHAR(13) NOT NULL,
书名 NVARCHAR(255),
定价 MONEY,
出版社 NVARCHAR(255),
出版日期 DATETIME)

在表中增加列(允许空)
USE book
GO
ALTER TABLE book1
ADD 作者 varchar NULL

删除列
USE book
GO
ALTER TABLE book1
DROP COLUMN 作者

修改列属性
USE book
GO
ALTER TABLE book1
ALTER COLUMN 定价 smallmoney

查看表结构
sp_help book1

查看数据
USE book
SELECT *
FROM book1

向表中插入数据
USE book
INSERT INTO book1
VALUES('01021001','7302112111','SQL数据库',35,'中山大学','03-12-2007')

修改表中的数据
USE book
UPDATE book1
SET 出版社='华南师大'
WHERE ISBN号='7302112111'

删除制定行的数据
USE book
DELETE
FROM book1
WHERE 定价=100

删除表中所有数据
USE book
DELETE
FROM book1

删除表
USE book
DROP TABLE book1

创建check约束
USE book
ALTER TABLE teacher
ADD
CONSTRAINT CK_teacher CHECK(性别='男' or 性别='女')

删除check约束
ALTER TABLE teacher
DROP CONSTRAINT CK_teacher

创建default约束
USE book
ALTER TABLE teacher
ADD CONSTRAINT DE_性别 DEFAULT '男' FOR 性别

删除default约束
ALTER TABLE teacher
DROP CONSTRAINT DE_性别

创建primary key约束
ALTER TABLE teacher
ADD CONSTRAINT PK_作者编号 PRIMARY KEY CLUSTERED(作者编号)

删除primary key约束
ALTER TABLE teacher
DROP CONSTRAINT PK_作者编号



创建foreign key约束
ALTER TABLE book1
ADD CONSTRAINT PK_编号 PRIMARY KEY CLUSTERED(编号)
ALTER TABLE bookin
ADD CONSTRAINT FK_编号 FOREIGN KEY (编号)
REFERENCE book1(编号)



创建默认值
USE book
GO
CREATE DEFAULT DF_定价
AS '100'
GO



绑定默认值
EXEC sp_bindefault 'MR_定价', 'book1.定价'



创建规则
USE book
GO
CREATE RULE RU_定价
AS @定价>=0 and @定价<=10000
GO



绑定规则
EXEC sp_bindrule 'RU_定价', 'book2.定价'



BETWEEN关键字
SELECT 书名
FROM book1
WHERE 定价 BETWEEN 1000 AND 2000



COMPUTE子句
计算总计或进行分组小计,
总计值或小计值作为附加的新行出现在查询结果中,
用在WHERE子句后。
SELECT 书名
FROM book1
WHERE 定价 BETWEEN 1000 AND 2000
COMPUTE AVG(定价)



COMPUTE BY子句
对BY后的列进行分组显示,并计算该列的分组小计。
必须按照ORDER BY中指定的列进行排序。
SELECT 书名
FROM book1
ORDER BY 出版社
COMPUTE AVG(定价) BY 出版社



GROUP BY子句
按照BY后制定的列分组,
写在WHERE子句后,
SELECT子句中包含聚合函数时,适合使用该子句。
SELECT 出版社
FROM book1
GROUP BY 出版社



HAVING子句
限定组或聚合函数的查询条件。
常用在GROUP BY子句之后,在结果集分组之后再进行判断。
①先分组再判断
SELECT 出版社, AVG(定价) AS '平均价格'
FROM book1
GROUP BY 出版社
HAVING 出版社='高教社

②先判断再分组
SELECT 出版社, AVG(定价) AS '平均价格'
FROM book1
GROUP BY 出版社
WHERE 出版社='高教社'


③在分组结果中判断
SELECT 出版社, AVG(定价) AS '平均价格'
FROM book1
GROUP BY 出版社
HAVING AVG(定价)>60



嵌套查询
SELECT 编号,书名,定价
FROM book1
WHERE 定价>(SELECT AVG(定价) FROM book1)



UNION运算符
SELECT 书名 FROM book1
UNION
SELECT 编号 FROM book2

SELECT 书名 FROM book1
UNION
SELECT 编号 FROM book2
ORDER BY 书名 DESC



多表查询
产生笛卡尔积的查询
SELECT * 
FROM book1, teacher



内连接-相等连接
先计算笛卡尔积,然后消除不满条件的记录
SELECT * 
FROM book2, teacher
WHERE book2.编号 = teacher.编号

SELECT * 
FROM book2
INNER JOIN teacher
ON book2.编号 = teacher.编号



内连接-自然连接
SELECT book2.* , 作者姓名, 职称
FROM book2, teacher
WHERE book2.编号 = teacher.编号

SELECT book2.* , 作者姓名, 职称
FROM book2
INNER JOIN teacher
ON book2.编号 = teacher.编号



自连接
SELECT a.编号,a.书名,a.定价,a.出版日期 
FROM book2 as a, book2 as b
WHERE a.出版社 = b.出版社 AND a.编号<> '01021002' AND b.编号 = '01021003'



左外连接
先计算两个表的自然连接,然后加上左表与右表不匹配的行,并用空值填充来自右表的列。
SELECT b.书名,b.出版社,b.ISBN号,t.作者姓名
FROM teacher as t
LEFT JOIN book1 as b
ON b.编号= t.编号

 

右外连接
SELECT b.书名,b.出版社,b.ISBN号,t.作者姓名
FROM teacher as t
RIGHT JOIN book1 as b
ON b.编号= t.编号 



全外连接
完成左连接和右连接,包括左右表不满足条件的行。
SELECT b.书名,b.出版社,b.ISBN号,t.作者姓名
FROM teacher as t
FULL JOIN book1 as b
ON b.编号= t.编号 



EXISTS子句
SELECT 书名,定价
FROM book1 as b
WHERE  EXISTS(SELECT t.编号 FROM teacher as t WHERE t.编号 = b.编号)



创建索引
聚集、唯一、简单索引
CREATE UNIQUE CLUSTERED
INDEX IX_book1 
ON book1(编号)



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值