AND
、IN
、LIKE
,以及 BETWEEN
都属于什么类型的类别?BEGIN TRY SELECT 'Foo' AS Result; END TRY BEGIN CATCH SELECT 'Bar' AS Result; END CATCH
SELECT Students.first_name, Students.last_name, Departments.office_location FROM Students, Departments;
SELECT Students.first_name, Students.last_name, Departments.office_location FROM Students JOIN Departments ON Students.department = Departments.department;
SELECT Students.first_name, Students.last_name, Departments.office_location FROM Students JOIN Departments;
SELECT Students.first_name, Students.last_name, Departments.office_location FROM Students ON Students.department = Departments.department;
TRUNCATE TABLE
DELETE
MERGE
DROP
SELECT GameType, MaxPlayers, count(*) AS NumberOfGames FROM Games GROUP BY MaxPlayers, GameType ORDER BY MaxPlayers, GameType;
SELECT GameType, MaxPlayers, count(*) AS NumberOfGames FROM Games GROUP BY GameType, MaxPlayers ORDER BY GameType;
SELECT GameType, count(Players) AS MaxPlayers, NumberOfGames FROM Games GROUP BY GameType, MaxPlayers ORDER BY GameType;
SELECT GameType, MaxPlayers, count(*) AS NumberOfGames FROM Games GROUP BY GameType ORDER BY MaxPlayers;
DECLARE @UniqueID uniqueidentifier = NEWID();
SELECT @UniqueID AS Result;
WHERE team NOT 'Chemistry Cats';
WHERE team <> 'Chemistry Cats';
WHERE team != 'Chemistry Cats';
WHERE NOT team = 'Chemistry Cats';
WHERE
子句填空?WHERE LastName = A*
WHERE LastName = LIKE '%A%'
WHERE LastName LIKE 'A%'
WHERE LastName IN ('A*')
SELECT LIMIT(2) first_name, department, team FROM Students ORDER BY points ASC;
SELECT TOP(2) first_name, deprtment, team FROM Students ORDER BY points DESC;
SELECT TOP(2) WITH TIES first_name, department, team FROM Students ORDER BY points;
SELECT BOTTOM(2) first_name, department, team FROM Students ORDER BY points ASC;
这里表格的图片很重要,可以看到只有两个最低积分的值。其次,之前的答案是错误的,因为按照
DESC
排序将最高积分放在结果列表的开头,而TOP(2)
将获取前两个最高积分,而我们需要的是最低积分。
SELECT FLOOR(-1234.321)
UPDATE Students SET last_name = 'Smith' WHERE email = 'dfiggins@rouxacademy.com';
UPDATE Students SET last_name = 'Figgins' WHERE email = 'dfiggins@rouxacademy.com';
UPDATE Students SET last_name = 'Figgins' WHERE last_name = 'Smith' AND first-name = 'Donette';
UPDATE Students SET last_name = 'Smith' WHERE last_name = 'Figgins' AND first-name = 'Donette';
TRUNCATE FROM Products *;
DELETE FROM Products;
DELETE * FROM Products;
TRUNCATE TABLE Products;
SELECT 1 / 2 AS Result;
float
int
tinyint
bigint
SELECT 'abc\ def' AS Result;
SELECT TOP(1) first_name, last_name FROM Students ORDER BY NEWID();
SELECT TOP(1) RAND(first_name, last_name) FROM Student;
SELECT TOP(1) first_name, last_name FROM Student;
SELECT TOP(1) first_name, last_name FROM RAND(Student);
DECLARE @MyVariable int;
SET @MyVariable = 1;
GO
SELECT @MyVariable;
ALTER USER Sharon WITH DEFAULT_SCHEMA = Sales;
ALTER USER Sharon SET SCHEMA Sales;
CREATE SCHEMA Sales SET OWNER Sharon;
CREATE SCHEMA Sales AUTHORIZATION Sharon;
CROSS JOIN
,一个表有4行,另一个表有5行,结果会有多少行?WHERE
子句填空?SELECT ProductID, ProductName, SerialNumber FROM Products______ ;
WHERE SerialNumber LIKE '%10_3'
WHERE SerialNumber LIKE ('%10'+'_'+'3')
WHERE SerialNumber LIKE '%10"_"3'
WHERE SerialNumber LIKE '%10[_]3'
下划线将匹配任意单个字符,因此您需要用方括号括起来,否则它可能会返回以 '1013'、'10A3' 等结尾的序列号。
FROM
子句中多个表之间未指定连接类型时,默认假定什么类型的连接?INNER
RIGHT
LEFT
FULL
RIGHT JOIN
确保什么?Create table students(id int identity(1000,1), firstname varchar(20),
lastname varchar(30));
insert into students(firstname,lastname)values('mark','twain');
select * from students;
%OPTION% studentid firstname lastname 1 1001 mark twain
%OPTION% studentid firstname lastname 1 1 mark twain
%OPTION% studentid firstname lastname 1 1000 mark twain
%OPTION% studentid firstname lastname 1 null mark twain
CREATE TABLE Students ( StudentName varchar(50), Grade int );
SELECT StudentName FROM Students WHERE Grade = MAX(Grade);
SELECT TOP(1) StudentName FROM Students ORDER BY Grade;
SELECT TOP(1) WITH TIES StudentName FROM Students ORDER BY Grade DESC;
SELECT StudentName, MAX(Grade) FROM Students ORDER BY Grade DESC;
top(1)
with ties 会选择最高的等级和其他具有相同等级的学生(因为它们按等级排序),并匹配最高等级。
select bookid, boooktitle, bookauthor,quantityonhand from inventory.books;
select * from dbo.books
这里dbo
是一个模式,库存也是模式。如果我们想指定一个数据库,我们应该使用db_name.schema_name.table_name
INNER JOIN
的结果是什么?
TRUNCATE TABLE Students;
TRUNCATE * FROM Students;
DROP TABLE Students;
REMOVE * FROM Students;
CREATE TABLE
语句。将哪个选项放入空白处,以确保 BookISBN 列不包含任何重复值?CREATE TABLE Books ( BookID int PRIMARY KEY, BookISBN char(13) NOT NULL _____, BookTitle nvarchar(100) NOT NULL );
NO DUPLICATES
UNIQUE CONSTRAINT AK_Books_BookISBN
DUPLICATE CONSTRAINT (AK_Books_BookISBN)
CONSTRAINT AK_Books_BookISBN UNIQUE
CREATE TABLE Students ( StudentName varchar(50), Grade int );
SELECT StudentName
FROM Students
WHERE Grade = (SELECT MIN(Grade) FROM Student);
SELECT TOP(1) Grade FROM Students ORDER BY Grade;
SELECT MIN(Grade) FROM Students
SELECT MIN(Grade) FROM Students ORDER BY Grade;
解释: 列 Students.Grade
在 ORDER BY
子句中无效,因为它既不包含在聚合函数中,也不在 GROUP BY
子句中。
SELECT MIN(Grade) FROM Students GROUP BY Grade;
解释: 分组会返回按成绩分组的所有成绩列表。提示要求返回的是一个行。
UPDATE Students SET last_name='Smith', email = 'dsmith@rouxacademy.com' WHERE id='56295';
UPDATE Students SET last_name='Smith' AND email = 'dsmith@rouxacademy.com' WHERE id='56295';
UPDATE Students SET last_name='Smith' AND email = 'dsmith@rouxacademy.com' WHERE id=56295;
UPDATE Students SET last_name='Smith', email = 'dsmith@rouxacademy.com' WHERE id=56295;
DECLARE @Counter int;
SET @Counter = 1;
WHILE @Counter > 0
BEGIN
SET @Counter = @Counter +1;
END;
END WHILE
语句; UPDATES Students SET team = 'Philosophy Parrots' WHERE team = 'Philosophy Pandas';
UPDATES Students SET team =
Philosophy ParrotsWHERE team =
Philosophy Pandas;` UPDATES Students SET team = "Philosophy Parrots" WHERE team = "Philosophy Pandas";
UPDATES Students SET team = Philosophy Parrots WHERE team = Philosophy Pandas;
SELECT 123+'123' AS Result;
SELECT
语句的结果合并,并删除重复的行,你可以使用哪个关键字?CREATE TABLE MyTable (MyValue int); INSERT INTO MyTable VALUES (1); WHILE (SELECT MyValue FROM MyTable) < 5 BEGIN UPDATE My Table SET MyValue = MyValue + 1; END; SELECT MyValue AS Result FROM MyTable;
SELECT OrderID, SUM(LineTotal) AS SubTotal FROM Sales WHERE SUM(LineTotal) > 1000 GROUP BY OrderID ORDER BY OrderID;
WHERE
子句不能与聚合函数一起使用。 GROUP BY
和 ORDER BY
。 WHERE
子句应该使用 SubTotal
别名。 CREATE TABLE Books ( BookID int PRIMARY KEY, BookTitle nvarchar(100) NOT NULL, PublisherID int NOT NULL ); CREATE TABLE Publishers ( PublisherID int PRIMARY KEY, PublisherName nvarchar(50) );
ALTER TABLE Books ADD CONSTRAINT FK Books_PublisherID FOREIGN KEY (PublisherID) REFERENCES Publishers (PublisherID) ON UPDATE SET NULL
ALTER TABLE Books ADD CONSTRAINT FK Books_PublisherID FOREIGN KEY (PublisherID) REFERENCES Publishers (PublisherID) ON DELETE CASCADE
ALTER TABLE Books ADD CONSTRAINT FK_Books_PublisherID FOREIGN KEY (PublisherID) REFERENCES Publishers (PublisherID)
ALTER TABLE Publishers ADD CONSTRAINT FK_Publishers_PublisherID FOREIGN KEY (PublisherID) REFERENCES Books (PublisherID) CASCADE DELETE
ALTER SCHEMA Products TRANSFER Warehouse.Inventory;
ALTER TABLE Warehouse.Inventory TRANSFER Products.Inventory;
ALTER TABLE Warehouse.Inventory ADD SCHEMA Products;
ALTER SCHEMA Warehouse ADD TABLE Inventory;
CREATE TABLE People ( PersonID int NOT NULL, PersonName nvarchar(50), _______ );
INDEX ON PersonID (PRIMARY KEY PK_People)
ADD NONCLUSTERED PRIMARY KEY CONSTRAINT PK_People ON PersonID
CONSTRAINT PK_People PRIMARY KEY NONCLUSTERED (PersonID)
PRIMARY KEY CONSTRAINT (PersonID) NONCLUSTERED INDEX
SELECT TOP(1) first_name, last_name FROM Students ORDER BY NEWID();
SELECT TOP(1) RAND(first_name, last_name) FROM Student;
SELECT TOP(1) first_name, last_name FROM Student;
SELECT TOP(1) first_name, last_name FROM RAND(Student);
Z:\Backups
目录中创建一个简单的数据库备份。你应该使用哪个查询?BACKUP MyDatabase TO LOCATION = 'Z:\Backups\MyDatabase.bak';
CREATE BACKUP (DATABASE = 'MyDatabase' TO DISK = 'Z:\Backups\MyDatabase. bak');
BACKUP DATABASE MyDatabase ON 'Z:\Backups\MyDatabase.bak';
BACKUP DATABASE MyDatabase TO DISK = 'z:\Backups\MyDatabase.bak';
BEGIN TRAN myTransaction BEGIN LOG;
BEGIN TRAN myTransaction WITH LOG;
BEGIN TRAN myTransaction WITH MARK;
BEGIN TRAN WITH MARK myTransaction;
所有语句必须以分号结束。
所有语句必须操作数据表。
所有语句必须始终以大写字母书写。
所有语句必须包含多个变量。
UPDATE Students SET last_name='Smith', email = 'dsmith@rouxacademy.com' WHERE id='56295';
UPDATE Students SET last_name='Smith', email = 'dsmith@rouxacademy.com' WHERE id=56295;
UPDATE Students SET last_name='Smith' AND email = 'dsmith@rouxacademy.com' WHERE id=56295;
UPDATE Students SET last_name='Smith' AND email = 'dsmith@rouxacademy.com' WHERE id='56295';
SELECT 123+'abc' AS Result;
Conversion failed when converting the varchar value 'abc' to data type int.
INSERT INTO Account (acct,bal) VALUES ('12345', 100); UPDATE Account SET bal=bal+100; BEGIN; UPDATE Account SET bal=bal+100. ROLLBACK; SELECT bal FROM Account WHERE acct='12345'; );
你会收到一个错误,因为 ROLLBACK 删除了被更新的行。
SELECT first_name, email FROM Students WHERE department = Humanities;
SELECT first_name, email FROM Students WHERE department = "Humanities";
SELECT first_name, email FROM Students WHERE department = 'Humanities';
SELECT 'first_name', 'email' FROM 'Students' WHERE 'department' = "Humanities";
DROP TABLE Products.Inventory;
USE Products; DROP TABLE Inventory;
USE Products; DELETE Inventory;
USE Products.Inventory; DROP TABLE Inventory;
这个语句首先使用
USE
命令切换到 Products 数据库,然后使用DROP TABLE
命令删除 Inventory 表。
包含时区信息的日期和时间时,应该选择哪种数据类型?
SELECT 123+'123' AS Result;
CREATE TABLE MyNumbers (
MyDecimalColumn decimal(5,2) NOT NULL
);
INSERT INTO MyNumbers VALUES (123), (45);
SELECT * FROM MyNumbers;
DROP TABLE Products.Inventory;
USE Products; DROP TABLE Inventory;
USE Products; DELETE Inventory;
USE Products.Inventory; DROP TABLE Inventory;