CREATE DATABASE Student
GO
USE Student
GO
--创建Student表
CREATE TABLE Student
(
SCode INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
SName CHAR(10) NOT NULL,
SAddress NVARCHAR(50),
SGrade FLOAT,
SEmail NVARCHAR(50),
SSex BIT
)
--插入一行数据(标识列不用插入,插入一整行数据,除标识列以外)
INSERT INTO Student(SName,SAddress,SGrade,SEmail,SSex)
VALUES('张青才','上海',6,'123456@hpe.com',1)
SELECT * FROM Student
打印:
SCode SName SAddress SGrade SEmail SSex
1 张青才 上海 6 123456@hpe.com 1
总结:除标识列SCode外的列,都可以在VALUES中写明要插入的内容,但必须在表名后的括号中写上一一对应的列名。
--插入一行数据(仅插入不允许为空的数据(除标识列))
INSERT INTO Student(SName)
VALUES('张爱国')
SELECT * FROM Student
打印:
SCode SName SAddress SGrade SEmail SSex
1 张青才 上海 6 123456@hpe.com 1
2 张爱国 NULL NULL NULL NULL
总结:SName列不允许为空,要插入必须要指明值,而允许为空的列可以不插入,保留为默认值NULL。
--插入一行数据(标识列不用插入,仅插入不允许为空的数据)
INSERT INTO Student(SName,SAddress,SGrade,SEmail,SSex)
VALUES('张发财',DEFAULT,DEFAULT,DEFAULT,DEFAULT)
SELECT * FROM Student
打印:
SCode SName SAddress SGrade SEmail SSex
1 张青才 上海 6 123456@hpe.com 1
2 张爱国 NULL NULL NULL NULL
3 张发财 NULL NULL NULL NULL
总结:对于一些可以为空的列,可以使用DEFAULT来填充。
--从另一个表中导入数据类型相同的列的值
--创建表AddressList,三个列的类型与Student表中的一致
CREATE TABLE AddressList(
Name CHAR(10) NOT NULL,
Address NVARCHAR(50),
Email NVARCHAR(50),
)
INSERT INTO AddressList(Name,Address,Email)
SELECT SName,SAddress,SEmail FROM Student
SELECT * FROM AddressList
打印:
Name Address Email
张青才 上海 123456@hpe.com
张爱国 NULL NULL
张发财 NULL NULL
--从一个表中选取需要的列,去创建一个新表
--首先删除上面创建的AddressList表
DROP TABLE AddressList
--从Student表中选取所需的列到新表AddressList中
SELECT Student.SName,Student.SAddress,Student.SGrade,Student.SEmail,Student.SSex
INTO AddressList
FROM Student
SELECT * FROM AddressList
打印:
SName SAddress SGrade SEmail SSex
张青才 上海 6 123456@hpe.com 1
张爱国 NULL NULL NULL NULL
张发财 NULL NULL NULL NULL
--多行插入
INSERT INTO Student(SName)
VALUES('张飞'),('赵云'),('马超')
SELECT * FROM Student
打印:
SCode SName SAddress SGrade SEmail SSex
1 张青才 上海 6 123456@hpe.com 1
2 张爱国 NULL NULL NULL NULL
3 张发财 NULL NULL NULL NULL
4 张飞 NULL NULL NULL NULL
5 赵云 NULL NULL NULL NULL
6 马超 NULL NULL NULL NULL
INSERT INTO Student(SName,SAddress,SGrade)
VALUES ('小明','北京','6'),('小红','上海','5'),('小刚','广州','4')
SELECT * FROM Student
打印:
SCode SName SAddress SGrade SEmail SSex
1 张青才 上海 6 123456@hpe.com 1
2 张爱国 NULL NULL NULL NULL
3 张发财 NULL NULL NULL NULL
4 张飞 NULL NULL NULL NULL
5 赵云 NULL NULL NULL NULL
6 马超 NULL NULL NULL NULL
7 小明 北京 6 NULL NULL
8 小红 上海 5 NULL NULL
9 小刚 广州 4 NULL NULL
--删除数据行
DELETE FROM Student WHERE SName='张飞'
SELECT * FROM Student
打印:
SCode SName SAddress SGrade SEmail SSex
1 张青才 上海 6 123456@hpe.com 1
2 张爱国 NULL NULL NULL NULL
3 张发财 NULL NULL NULL NULL
5 赵云 NULL NULL NULL NULL
6 马超 NULL NULL NULL NULL
7 小明 北京 6 NULL NULL
8 小红 上海 5 NULL NULL
9 小刚 广州 4 NULL NULL
DELETE FROM Student WHERE SCode>7
SELECT * FROM Student
打印:
SCode SName SAddress SGrade SEmail SSex
1 张青才 上海 6 123456@hpe.com 1
2 张爱国 NULL NULL NULL NULL
3 张发财 NULL NULL NULL NULL
5 赵云 NULL NULL NULL NULL
6 马超 NULL NULL NULL NULL
7 小明 北京 6 NULL NULL
--更新数据行
UPDATE Student SET SSex=0 WHERE SSex=1
SELECT * FROM Student
打印:
SCode SName SAddress SGrade SEmail SSex
1 张青才 上海 6 123456@hpe.com 0
2 张爱国 NULL NULL NULL NULL
3 张发财 NULL NULL NULL NULL
5 赵云 NULL NULL NULL NULL
6 马超 NULL NULL NULL NULL
7 小明 北京 6 NULL NULL
UPDATE Student SET SAddress='长沙' WHERE SAddress='上海'
SELECT * FROM Student
打印:
SCode SName SAddress SGrade SEmail SSex
1 张青才 长沙 6 123456@hpe.com 0
2 张爱国 NULL NULL NULL NULL
3 张发财 NULL NULL NULL NULL
5 赵云 NULL NULL NULL NULL
6 马超 NULL NULL NULL NULL
7 小明 北京 6 NULL NULL
CREATE TABLE Scores(
Name NVARCHAR(20) NOT NULL,
Scores INT NOT NULL
)
INSERT INTO Scores(Name,Scores)
VALUES ('张三',90),('李四',95),('王五',96)
SELECT * FROM Scores
打印:
Name Scores
张三 90
李四 95
王五 96
UPDATE Scores SET Scores=Scores-5 WHERE Scores>90
SELECT * FROM Scores
打印:
Name Scores
张三 90
李四 90
王五 91
再执行一次:
打印:
Name Scores
张三 90
李四 90
王五 86