T-SQL

CREATE DATABASE语句的常用语法格式如下 :

CREATE DATABASE database_name
ON
{ [ PRIMARY ]  ( NAME = logical_file_name ,
        FILENAME = 'os_file_name' ,
        [ , SIZE = size] 
        [ , MAXSIZE = { max_size | UNLIMITED } ] 
        [ , FILEGROWTH = growth_increment ]
) [ ,...n ] 
LOG ON 
   {  ( NAME = logical_file_name ,
        FILENAME = 'os_file_name' ,
        [ , SIZE = size] 
        [ , MAXSIZE = { max_size | UNLIMITED } ] 
        [ , FILEGROWTH = growth_increment ]
) [ ,...n ] 

Create database语句中参数说明:
database_name:新数据库的名称。
ON :指定用来存储数据库数据部分的磁盘文件(数据文件)。
LOG ON :指定显式定义用来存储数据库日志的磁盘文件(日志文件)。
NAME logical_file_name: 指定文件的逻辑名称。
FILENAME :指定操作系统(物理)文件名称。
SIZE :指定文件的大小。
MAXSIZE :指定文件可增大到的最大大小。
FILEGROWTH :指定文件的自动增量。也可以指定百分比。
命令:
exec sp_helpdb:可以查看该服务器上所有数据库或指定单个数据库的基本信息。如图4-9所示存储过程查看所有数据库。 使用sp_helpdb JdglSys命令可以查看单个数据库的详细信息。
sp_helpdb 数据库名称 :查询单个数据库详细信息
sp_helpfile :显示当前的数据库关联的文件的名称和属性
sp_helpfilegroup:查看所有文件组或某一个的详细信息
sp_spaceused:显示由整个数据库保留和使用的磁盘空间。
数据库修改:

ALTER DATABASE database_name
{ADD FILE <filespec>[,…n][TO FILEGROUP{filegroup_name}]
|ADD LOG FILE <filespec>[,…n]
|REMOVE FILE logical_file_name [WITH DELETE]
|MODIFY FILE < filespec >
|MODIFYname= new_database_name
|ADD filegroup filegroup_name
|MODIFY filegroup filegroup_name DEFAULT
|REMOVE filegroup filegroup_name
}

数据库分离:sp_detach_db
数据库附加:

CREATE DATABASE JdglSys
ON
(
FILENAME = ' C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\JdglSys_Data.mdf'
)
FOR ATTACH
GO

数据库收缩:

DBCC SHRINKDATABASE(database_name | database_id | 0  [ , target_percent ] )

其中:database_name | database_id | 0 :要收缩的数据库的名称或ID。如果指定0,则使用当前数据库。
target_percent :数据库收缩后的数据库文件中所需的剩余可用空间百分比。
数据库删除:

DROP DATABASE database_name[,…n];

例如:使用DROP DATABASE语句删除数据库Studentdb。
语句为: DROP DATABASE Studentdb;

数据库备份:

BACKUP DATABASE database_name 
  TO <backup_device> [ ,...n ] 
   [ WITH DIFFERENTIAL ][;]
备份事务日志的语句为:
BACKUP LOG database_name 
  TO <backup_device> [ ,...n ] 
 [ WITH  NO_TRUNCATE]
 [;]

<backup_device> :指定用于备份操作的逻辑备份设备名或物理备份设备。
WITH DIFFERENTIAL:指定数据库备份或文件备份应该只包含上次完整备份后更改的数据库或文件部分。
WITH NO_TRUNCATE:指定不截断日志。
完整备份和差异备份

表的操纵:
用户自定义数据类型:

 sp_addtype [ @typename = ] type, [ @phystype = ]  
          'system_data_type' [ , [ @nulltype = ] 'null_type' ] ;


CREATE TYPE IDNUMBER FROM char(17) NOT NULL
    各参数说明如下:
    @typename:为要创建的数据类型名称。
    @phystype:是SQL Server 提供的系统数据类型。
    @nulltype:指定是否允许为空值。
首先在【查询编辑器】中输入下面的Transact-SQL脚本:
EXEC SP_ADDTYPE AccountType,'VARCHAR(20)','NOT NULL'
EXEC SP_ADDTYPE PasswordType,'VARCHAR(10)','NOT NULL'
EXEC SP_ADDTYPE ClassType,'CHAR(1)','NOT NULL'
EXEC SP_ADDTYPE EMLType,'VARCHAR(20)','NULL'
接下来在【查询编辑器】中输入下面的Transact-SQL语句:
CREATE TABLE Account
(AccountName AccountType,
 Password PasswordType,
 AccountType ClassType,
 EML EMLType)

建立表:

 CREATE TABLE [database_name.][owner.]table_name
 ( column_name  data_type { [ NULL | NOT NULL ] }  [, . . .n] )
[ ON { filegroup |default”}]
        各参数说明如下:
        CREATE TABLE:创建表命令,关键字用大写字母来表示。
         database_name.:指定新建表所属的数据库名称,若不指定则在当前数据库中创建新表。
         owner:指定数据库所有者的名称,它必须是        database_name所指定的数据库中现有的用户ID。
         table_name:是新建表的名称。
         column_name:是表中的列名,其在表内必须是唯一的。
         data_type:指定列的数据类型。
          NULL | NOT NULL:允许列的取值为空或不为空,默认情况为NULL[, . . .n]:表明重复以上内容,即允许定义多个列。
        ON { filegroup |default” }:指定存储表的文件组。如果指定了 filegroup,则该表将存储在命名的文件组中,数据库中必须存在该文件组。如果指定了“default”,或缺省 ON子句,则表存储在默认文件组中。   

表修改:

  ALTER TABLE table_name
 {[ALTER COLUMN column_name new_data_type [ NULL | NOT NULL ]] 
|ADD[<column_definition>] [,…n]
|DROP COLUMN column_name [, . . .n]
}
        各参数说明如下:
        ALTER TABLE:修改表命令。
        table_name:要修改的表名称。
        ALTER COLUMN子句:用于说明修改表中指定列的属性。
        new_data_type:指定被修改列的新数据类型。
       ADD子句:向表中添加新的列。新列的定义方法与CREATE TABLE语句中定义列的方法相同。
       DROP 子句:从表中删除指定的列。

表数据输入:

  INSERT [ INTO ] table_name [ (column1, column) ]
         VALUES (value1 ,value2…)

修改表数据:

 UPDATE table_name
        SET column_name=column_value[, . . .n]
        [WHERE condition]
        其中: UPDATE:修改记录关键字;
                   table_name:指定要修改数据的表名;
                SET column_name=column_value:指定要修改的列及该列改变后的值;
         WHERE condition:指定被修改的记录应满足的条件。当省略该子句时,表明所有的记录都执行SET指定的修改。

删除记录:

   DELETE [FROM] table_name
          [WHERE condition]
          其中,
          DELETE:删除记录关键字。
          table_name:要删除记录的表名。
          WHERE condition:指定删除记录应满足的条件。若省略该项,则删除表中所有记录,仅剩下表结构,此时就成了空表。       

清空表数据:

  TRUNCATE TABLE table_name

[EXECUTE] sp_help table_name
参数说明如下:
EXECUTE:调用系统存储过程的关键字。
sp_help:为系统存储过程,可用来查看系统表、用户表或视图的有关列对象的其他属性信息。
table_name:指定要查看信息的表名。
删除表:

 DROP TABLE语法格式如下:
        DROP TABLE table_name
        其中,
        DROP TABLE:删除表命令。
        table_name:表明要删除的表名。

约束设置:
建表的同时添加约束

CREATE TABLE table_name 
        (column_name data_type (NULL | NOT NULL[ [CONSTRAINT constraint_name ] 
          {
          PRIMARY KEY [ CLUSTERED | NONCLUSTERED ]
          | UNIQUE [ CLUSTERED | NONCLUSTERED ]          | [FOREIGN KEY ] {(column_name[,…n])}  REFERENCES ref_table [ ( ref_column ) ]          | DEFAULT constraint_ expression
          | CHECK   ( logical_expression )     } 
          ] [ ,... ]

table_name:是创建约束的表的名称;
CONSTRAINT:是可选关键字,表示 PRIMARY KEY、 NOT NULL、UNIQUE、FOREIGN KEY 或 CHECK 约束定义的开始。
constrain_name:新建约束的名称。
column_name:是表中列的名称;
data_type:指定列的数据类型;
ref_table:是 FOREIGN KEY 约束所引用的表;
ref_column:是引用表中的一列或多列的名称;
constant_expression:是用作列的默认值的表达式,可以是NULL或者是系统函数;
logical_expression:是用于CHECK约束的返回TRUE或FALSE的逻辑表达式。
在创建好的表上添加约束:

ALTER TABLE table_name
         ADD CONSTRAINT constraint_name
         PRIMARY KEY  [CLUSTERED|NONCLUSTERED]     {(column[,…n])}

外键约束:

ALTER TABLE 学生基本信息
        ADD CONSTRAINT fk_xsbh         FOREIGN KEY (班号) REFERENCES 班级 (班号)

查看和删除约束:

可以使用存储过程sp_helpconstraint来查看指定表上的所有约束的类型、名 称、创建者和创建时间等信息。语法如下:
      sp_helpconstraint [ @objname = ] 'table'     参数[@objname =] 'table':返回其约束信息的表名
删除:      
ALTER TABLE table_name
        DROP CONSTRAINT constraint_name[,…n] 
        其中,
        table_name为需要删除约束的表的名称;
        constraint_name要删除的约束的名称。

默认值建立:

   CREATE DEFAULT default_name
        AS default_description 
        其中, default_name:表示新建立的默认名称
                     default_description:是常量表达式,可以包含常量、内置函数或数学表达式,指定 默认值。

默认值绑定:

  将默认绑定到表的某列上或用户自定义的数据类型上,是通过执行系统存储过程sp_bindefault来实现的。其语法如下:
        [EXECUTE] sp_bindefault ' 默认名称 ' , ' 表名.字段名 ' | ' 自定义数据类型名'

解除绑定:

 用户可以通过执行sp_unbindefault系统存储过程,将默认从表中的某列或用户自定义的数据类型上解绑。其语法如下:
        [EXECUTE] sp_unbindefault ' 表名.字段名' | ' 自定义数据类型名' 

删除默认值:

解绑后的默认就可以通过DROP DEFAULT命令删除,其语法:    
        DROP DEFAULT default_name[,…n] 
         一个DROP DEFAULT命令可同时删除多个默认,各默认名之间用逗号分隔。

规则建立:

 CREATE RULE rule_name 
        AS condition_expression
        各参数说明如下:
        rule_name:表示新建立的规则名称
        condition_expression:是定义规则的条件。在条件表达式中包含一个变量,变量的前面必须冠以@符号。

规则绑定:

 执行系统存储过程sp_bindrule可以将规则绑定到表的某列上。其语法如下:
        [EXECUTE] sp_bindrule ' 规则名称 ' , ' 表名.字段名 ' | ' 自定义数据类型名'       

解除绑定:

用户可以通过执行sp_unbindrule 系统存储过程,将规则从表中的某列或用户自定义的数据类型上解绑。其语法如下:
         [EXECUTE] sp_unbindrule ' 表名.字段名' | ' 自定义数据类型名'    

删除:

解绑后的规则就可以通过DROP RULE命令删除,其语法如下:
        DROP  RULE  规则名称[,…n]

表的查询:

SELECT语句的语法
        SELECT语句的基本语法格式如下:
        SELECT select_list  
        [INTO new_table_name]  
        FROM table_source 
        [WHERE search_conditions]  
        [GROUP BY group_by_expression]
        [HAVING search_ conditions]  
        [ORDER BY order_ expression [ASC|DESC]]

其中,
SELECT子句——用于指定查询结果集中的列。
select_list :为结果集选择的列。用*表示当前表或视图的所有列。
INTO子句——创建新表并将查询结果插入新表中。
new_table_name :为保存查询结果的新表名。
FROM子句——用于指定查询的数据源。
table_source :指定用于查询的表或视图、派生表和联接表等。
WHERE子句——用于指定查询条件。
search_conditions:为条件表达式,可以是关系表达式或逻辑表达式。
GROUP BY子句——将查询结果按指定的表达式分组。
group_by_expression:是对其执行分组的表达式,group
by_expression 也称为分组列。
group_by expression 可以是列或引用列的非聚合表达式。
HAVING子句——指定满足条件的组才予以输出。 HAVING通常与GROUP BY子句一起使用。
search_condition:为输出组应满足的条件。
ORDER BY——指定结果集的排列顺序。
order
expression:指定要排序的列。可以将排序列指定为列名或列的别名,也可以指定一个表示该名称或别名在选择列表中所处位置的非负整数。列名和别名可由表名或视图名加以限定。也可指定多个排序列。
ASC:指定递增顺序。从最低值到最高值对指定列中的值进行排序。
DESC:指定递减顺序。从最高值到最低值对指定列中的值进行排序。
空值被视为最小的可能值。
说明字段:
为了增加查询结果的可读性,可以在SELECT子句中增加一些说明字段。
【例7.3】查询“学生基本信息”表中的姓名和学号,增加说明字段“学号为”。
代码如下:
SELECT 姓名, ‘学号为:’,学号 FROM 学生基本信息
使用别名:
在默认情况下,数据查询结果中所显示的字段名就是在创建表时使用的列名,若对于新增字段,或者要临时改变输出的字段名,此时必须另外指定别名。
指定别名的三种方法:
“字段名称 AS 别名”
“字段名称 别名”
“别名=字段名称”
说明:别名在使用时可以用单引号括起来,也可以不用。
使用字段表达式:
在SELECT语句后面可以是字段表达式,字段表达式不仅可以是算术表达式,还可以是字符串常量和函数等。
【例7.5】显示“学生基本信息”表中所有学生姓名和年龄。
分析:在学生基本信息表的结构中,没有年龄这个字段,只有出生日期这个字段,但年龄可通过当前的年份减去出生的年份计算得到。
代码如下:
SELECT 姓名,year(getdate())-year(出生日期) as 年龄 FROM 学生基本信息
其中,
GETDATE():取系统的当前日期;
YEAR(date):取指定日期中的年份。
消除结果的重复数据行:
在数据表中往往有些记录的字段值是重复,在实际应用中经常需要去掉重复的记录,DISTINCT就可以完成这样的任务。
【例7.6】查询“学生基本信息”表中所有学生所属的班号。
代码如下:
SELECT DISTINCT 班号 FROM 学生基本信息
子句使用:
1.使用WHERE子句
由于T-SQL是一种集合处理语言,因此数据修改或者数据检索都将会对表中所有记录起作用,若只想查询表中满足特定条件的记录,应使用WHERE子句限定查询的范围。
WHERE子句的条件表达式有关系表达式、逻辑表达式和特殊表达式三种。
1)关系表达式
用关系运算符将两个表达式连接在一起的式子即为关系表达式,关系表达式的返回值为逻辑值TRUE或FALSE,关系表达式的格式为:
<表达式1> <关系运算符> <表达式2>
说明:
① 在关系表达式字符型数据之间的比较是对字符的ASCII码值进行比较。所有字符都有一个ASCII码值与之对应。
② 字符串的比较是从左向右依次进行的。
特殊表达式
使用ORDER BY子句
通常情况下,SQL Server数据库中的数据行在显示时是无序的,它按照数据行插入数据库时的顺序排列,因此查询的结果也是无序的。
若要求数据行按一定的顺序显示,如升序或降序,可以有两种方法对查询结果进行排序显示:一种是建立索引(索引内容见本章第9课);另一种是使用ORDER BY子句,这是一种比较灵活方便的方法。
使用聚合函数
对表数据进行查询时,经常需要对结果进行计算和统计,例如,统计学生数,求平均成绩等。SQL Server提供了一些聚合函数,用来完成一定的统计功能。
聚合函数
使用分组汇总子句
聚合函数返回的只是一个单个的汇总数据,而要显示分组的汇总数据,就必须使用GROUP BY子句。
【例7.20】在“选课”表中按课程号进行分组,并汇总每一组课程的平均成绩。
代码如下:
SELECT 课程号, AVG(成绩) AS平均分
FROM 选课
GROUP BY 课程号
如果GROUP BY子句中指定了多个字段,则表示基于这些字段的惟一组合来进行分组。在该分组过程中,首先按第一字段进行分组并按升序排列,然后再按第二字段进行分组并按升序排列,依次类推,最后在分好的组中进行汇总。因此当指定的字段顺序不同时,返回的结果也不同。
注意事项:
在数据汇总时也可以使用WHERE子句,当同时存在GROUP BY子句、HAVING选项和WHERE子句时,其执行顺序为先WHERE,后GROUP BY,再HAVING,即先用WHERE子句过滤不符合条件的数据记录,接着用GROUP BY子句对余下的数据记录按指定字段分组,最后再用HAVING选项排除一些组。
使用GROUP BY子句需要注意以下几点:
① SELECT子句中的任何非聚合表达式中的每个表列或视图列都必须包括在 GROUP BY 子句的列表中。
② GROUP BY后面的列名称为分组列,列表中一般不允许出现复杂的表达式,分组列中的每个重复值,将被汇总为一行。
③如果组合列包含 Null 值,则所有的Null值被分为一组。
④GROUP BY 子句不能对结果集进行排序。
多表查询:
1.连接谓词
可以在SELECT语句的WHERE子句中使用比较运算符,给出连接条件对表进行连接,对这种表示形式称为连接谓词表示形式。其基本格式为:
 [<表名1.>]<字段名1><运算符><表名2.><字段名2>
连接谓词中的两个字段称为连接字段,它们的数据类型必须是可比的,连接谓词中的比较符可以是<、<=、=、>、>=、!=、<>等。
当比较运算符不为“=”时,就是非等值连接;当比较运算符为“=”时,就是等值连接;若在等值连接中去除结果表中相同的字段名,则为自然连接;若有多个连接条件,则为复合条件连接。若一个表与自身进行连接,称为自连接。
2.以JOIN关键字指定的连接
以JOIN关键字进行连接,使表的连接运算能力有了显著增强,可以将多个表连接起来,连接格式为:
<first_table><join_type><second_table>ON<search_condition>
其中,
first_table,second_table:为需要连接的表;
ON:用于指定连接条件。
join_type:表示连接类型,使用格式为:
[ INNER | { LEFT | RIGHT | FULL } [ OUTER ][< join_hint>]| CROSS ] JOIN
其中,INNER JOIN表示内连接,OUTER JOIN表示外连接,join_hint是连接提示。 CROSS JOIN表示交叉连接。
1)内连接
内连接指按照ON所指定的连接条件合并两个表,返回满足条件的行。
2)外连接
在通常的连接操作中,只有满足连接条件的行才能作为结果输出。但有些情况也需要输出不满足连接条件的记录。例如,需要以学生基本信息表为主,列出每个学生的基本情况和学习情况,若某个学生没有选课,那么就输出其基本情况,其选课信息为空即可。这时就需要使用外连接。
外连接的结果集不但包含满足连接条件的行,还包括相应表中的所有行。
①左外连接(LEFT OUTER JOIN)
左外连接是结果表中除了包含满足连接条件的记录外,还包含左表中不满足连接条件的记录。左外连接的语法格式为:
SELECT column_name
FROM table_name1 LEFT [OUTER] JOIN table_name2
ON table_name1.column_name= table_name2.column_name
其中,OUTER关键字可以省略。
②右外连接(RIGHT OUTER JOIN)
右外连接是结果表中除了包含满足连接条件的记录外,还包含右表中不满足连接条件的记录。右外连接的语法格式为:  
SELECT column_name
FROM table_name1 RIGHT [OUTER] JOIN table_name2
ON table_name1.column_name= table_name2.column_name
其中,OUTER关键字可以省略。
③完全外连接(FULL OUTER JOIN)
完全外连接是结果表中除了包含满足连接条件的记录外,还包含两个表中不满足连接条件的记录。注意,左(右)表中不满足条件的记录与右(左)表记录拼接时,右(左)表的相应列上填充NULL值。完全外连接的语法格式为:
SELECT column_name
FROM table_name1 FULL [OUTER] JOIN table_name2
ON table_name1.column_name= table_name2.column_name
其中,OUTER关键字可以省略。
3)交叉连接
交叉连接又称非限制连接,也叫广义笛卡尔积。两个表的广义笛卡尔积是两表中记录的交叉乘积,结果集的列为两个表属性列的和。
其语法格式为:
SELECT column_name FROM table_name1 CROSS JOIN table_name2
其中,CROSS JOIN为交叉表连接关键字。
【例8.11】对“学生基本信息”表与“班级”表进行交叉连接查询。
代码如下:
SELECT 学号,姓名,性别,学生基本信息.系部代码,学生基本信息.班号,班级.班号,班级.专业代码 FROM 学生基本信息 CROSS JOIN 班级
交叉连接的结果会产生一些没有意义的记录,并且进行该操作非常耗时,因此该运算实际很少使用。
联合查询:
联合查询也称集合查询。是一种将两个或更多查询的结
果,通过并、交、差等集合运算合并为单个结果集的一种查询
方法。在SQL Server 2008中,用于联合查询的运算符有
UNION(求并)、INTERSECT(求交)和EXCEPT(求差)。
1. UNION运算符
UNION运算符是求并操作,能够将两个或更多查询结果顺序连接,合并为单个结果集,该结果集包含联合查询中的所有查询的全部行。
语法格式:
SELECT 语句1
{UNION <SELECT 语句2> } [, . . .n]
语法说明如下:
①参加UNION操作的所有查询中的列数和列的顺序必须相同,对应的数据类型也必须相同。
②系统将自动去掉并集的重复记录。
③最后结果集的字段名来自第一个SELECT语句。
2. INTERSECT运算符
INTERSECT运算符是求交操作,能够将两个或更多查询结果的交集作为联合查询的结果集,该结果集包含两个或更多查询均返回的所有非重复值。 语法格式:
SELECT 语句1 {INTERSECT<SELECT 语句2> } [, . . .n]
其语法说明与UNION运算相同。
3. EXCEPT运算符
EXCEPT运算符是求差操作,从左查询中返回右查询没有找到的所有非重复值,作为联合查询的结果集,该结果集包含两个或更多查询均返回的所有非重复值。
语法格式:
SELECT 语句1
{ EXCEPT<SELECT 语句2> } [, . . .n]
其语法说明与UNION运算相同。
子查询:
子查询是一个SELECT查询,它返回单个值且嵌套在SELECT、INSERT、UPDATE、DELETE语句或其他子查询中。
任何允许使用表达式的地方都可以使用子查询。子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择。
子查询能够将比较复杂的查询分解为几个简单的查询,而且子查询可以嵌套,嵌套查询的执行过程是:首先执行内部查询,查询出的数据并不被显示,而是传递给外层语句,并作为外层语句的查询条件来使用。
1.带有IN或NOT IN的子查询
在嵌套查询中,子查询的结果通常是一个集合。运算符IN或NOT IN是嵌套查询中使用最频繁的运算符,用于进行一个给定值是否在子查询结果集中的判断,其语法格式为:
表达式 [NOT] IN(子查询)
说明:当表达式与子查询的结果表中的某个值相等时,IN谓词返回TRUE,否则返回FALSE,若使用了NOT,则返回的值刚好相反。
【例8.16】在“学生基本信息”表、“选课”表与“课程”表中查询选修了“西方经济学”课程的学生情况。
代码如下:
SELECT *
FROM 学生基本信息
WHERE 学号 IN
(SELECT 学号 FROM 选课 WHERE 课程号=
(SELECT 课程号 FROM 课程
WHERE 课程名=‘西方经济学’) )
2.带有比较运算符的子查询
带有IN运算符的子查询返回的结果是集合,而带有比较运算符(=、<>、>、>=、<、<=、!>、!<)的子查询可以返回单值结果,可以看作是IN子查询的扩展。其语法格式为:
表达式 {< | <= | = | > | >= | != | <> | !< | !> } { ALL | ANY } (子查询)
其中,ALL和ANY说明对比较运算符的限制。
ALL指定表达式要与子查询的结果集中的每个值都进行比较,当表达式与每个值都满足比较的关系时,才回返TRUE,否则返回FALSE。
ANY表示表达式只要与子查询结果集中的某个值满足比较的关系时,就返回TRUE,否则返回FALSE。
3.带有EXISTS运算符的子查询
使用EXISTS运算符后,子查询不返回任何数据,主要用于测试子查询的结果是否为空表。若子查询的结果集不为空,则EXISTS返回TRUE,否则返回FALSE。EXISTS还可与NOT结合使用,即NOT EXISTS,其返回值与EXISTS则刚好相反,其语法格式为:
[ NOT ] EXISTS (子查询)
4.在查询的基础上创建新表
使用SELECT 的INTO子句可以创建新表来保存查询结果。新表可以是一个永久表或一个临时表。
【例8.21】在“学生基本信息”表与“班级”表中查询学生姓名和班级名,将结果行插入到新表“学生_班级”中。
代码如下:
SELECT 姓名,班级名称 INTO 学生_班级
FROM 学生基本信息,班级
WHERE 学生基本信息.班号=班级.班号

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nightelves11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值