首页 > 数据库 >第十二单元 `T-SQL` 编程

第十二单元 `T-SQL` 编程

时间:2023-12-19 18:15:25浏览次数:30  
标签:第十二 INSERT Name dbo -- 编程 VALUES SQL Id

create database step2_unit12;
go
use step2_unit12;
go
-- 部门表
CREATE TABLE [dbo].[Department](
    [Id] [int] PRIMARY KEY IDENTITY(1,1) NOT NULL,
    [Name] [varchar](20) NULL
);
-- 职位表
CREATE TABLE [dbo].[Job](
    [Id] [int] PRIMARY KEY IDENTITY(1,1) NOT NULL,
    [Name] [varchar](20) NULL
);
-- 人员表
CREATE TABLE [dbo].[person](
    [Id] [int] PRIMARY KEY IDENTITY(1,1) NOT NULL,
    [Name] [varchar](50) NULL,
    [Sex] [varchar](10) NULL,
    [Age] [int] NULL
);
-- 工资表
CREATE TABLE [dbo].[Salary](
    [Id] [int] PRIMARY KEY IDENTITY(1,1) NOT NULL,
    [Sal] [money] NULL,
    [Comm] [money] NULL,
    [StaffId] [int] NULL
);
-- 员工表
CREATE TABLE [dbo].[Staff](
    [Id] [int] PRIMARY KEY IDENTITY(1,1) NOT NULL,
    [Name] [varchar](20) NOT NULL,
    [Hiredate] [datetime] NOT NULL,
    [DepartmentId] [int] NULL,
    [JobId] [int] NULL
);
SET IDENTITY_INSERT [dbo].[Department] ON 
​
INSERT [dbo].[Department] ([Id], [Name]) VALUES (1, N'技术部')
INSERT [dbo].[Department] ([Id], [Name]) VALUES (2, N'人资部')
INSERT [dbo].[Department] ([Id], [Name]) VALUES (3, N'市场部')
SET IDENTITY_INSERT [dbo].[Department] OFF
SET IDENTITY_INSERT [dbo].[Job] ON 
​
INSERT [dbo].[Job] ([Id], [Name]) VALUES (1, N'经理')
INSERT [dbo].[Job] ([Id], [Name]) VALUES (2, N'组长')
INSERT [dbo].[Job] ([Id], [Name]) VALUES (3, N'员工')
SET IDENTITY_INSERT [dbo].[Job] OFF
SET IDENTITY_INSERT [dbo].[person] ON 
​
INSERT [dbo].[person] ([Id], [Name], [Sex], [Age]) VALUES (1, N'高圆圆', N'女', 28)
INSERT [dbo].[person] ([Id], [Name], [Sex], [Age]) VALUES (2, N'王佳佳', N'女', 32)
INSERT [dbo].[person] ([Id], [Name], [Sex], [Age]) VALUES (3, N'杨硕', N'男', 25)
SET IDENTITY_INSERT [dbo].[person] OFF
SET IDENTITY_INSERT [dbo].[Salary] ON 
​
INSERT [dbo].[Salary] ([Id], [Sal], [Comm], [StaffId]) VALUES (1, 15000.0000, 10000.0000, 1)
INSERT [dbo].[Salary] ([Id], [Sal], [Comm], [StaffId]) VALUES (2, 15000.0000, 9000.0000, 2)
INSERT [dbo].[Salary] ([Id], [Sal], [Comm], [StaffId]) VALUES (3, 12000.0000, 8000.0000, 3)
INSERT [dbo].[Salary] ([Id], [Sal], [Comm], [StaffId]) VALUES (4, 8000.0000, 6000.0000, 4)
INSERT [dbo].[Salary] ([Id], [Sal], [Comm], [StaffId]) VALUES (5, 4000.0000, 3000.0000, 5)
INSERT [dbo].[Salary] ([Id], [Sal], [Comm], [StaffId]) VALUES (6, 9000.0000, 8000.0000, 6)
INSERT [dbo].[Salary] ([Id], [Sal], [Comm], [StaffId]) VALUES (7, 15000.0000, 12000.0000, 7)
INSERT [dbo].[Salary] ([Id], [Sal], [Comm], [StaffId]) VALUES (8, 12000.0000, 9000.0000, 7)
INSERT [dbo].[Salary] ([Id], [Sal], [Comm], [StaffId]) VALUES (9, 7000.0000, 2000.0000, 9)
INSERT [dbo].[Salary] ([Id], [Sal], [Comm], [StaffId]) VALUES (10, 9000.0000, 8000.0000, 10)
SET IDENTITY_INSERT [dbo].[Salary] OFF
SET IDENTITY_INSERT [dbo].[Staff] ON 
​
INSERT [dbo].[Staff] ([Id], [Name], [Hiredate], [DepartmentId], [JobId]) VALUES (1, N'王鑫', CAST(N'2014-02-01 00:00:00.000' AS DateTime), 1, 1)
INSERT [dbo].[Staff] ([Id], [Name], [Hiredate], [DepartmentId], [JobId]) VALUES (2, N'张磊', CAST(N'2015-09-03 00:00:00.000' AS DateTime), 2, 1)
INSERT [dbo].[Staff] ([Id], [Name], [Hiredate], [DepartmentId], [JobId]) VALUES (3, N'李鹏', CAST(N'2016-08-01 00:00:00.000' AS DateTime), 3, 2)
INSERT [dbo].[Staff] ([Id], [Name], [Hiredate], [DepartmentId], [JobId]) VALUES (4, N'王洋', CAST(N'2019-02-03 00:00:00.000' AS DateTime), 1, 3)
INSERT [dbo].[Staff] ([Id], [Name], [Hiredate], [DepartmentId], [JobId]) VALUES (5, N'吴潘', CAST(N'2018-10-01 00:00:00.000' AS DateTime), 2, 3)
INSERT [dbo].[Staff] ([Id], [Name], [Hiredate], [DepartmentId], [JobId]) VALUES (6, N'贾丹', CAST(N'2018-07-01 00:00:00.000' AS DateTime), 2, 2)
INSERT [dbo].[Staff] ([Id], [Name], [Hiredate], [DepartmentId], [JobId]) VALUES (7, N'李露', CAST(N'2016-09-01 00:00:00.000' AS DateTime), 3, 1)
INSERT [dbo].[Staff] ([Id], [Name], [Hiredate], [DepartmentId], [JobId]) VALUES (8, N'杨腾', CAST(N'2018-11-08 00:00:00.000' AS DateTime), 1, 2)
INSERT [dbo].[Staff] ([Id], [Name], [Hiredate], [DepartmentId], [JobId]) VALUES (9, N'孙艺', CAST(N'2018-12-26 00:00:00.000' AS DateTime), 3, 3)
INSERT [dbo].[Staff] ([Id], [Name], [Hiredate], [DepartmentId], [JobId]) VALUES (10, N'赵帅', CAST(N'2019-01-03 00:00:00.000' AS DateTime), 1, 3)
SET IDENTITY_INSERT [dbo].[Staff] OFF
 

 

1. T-SQL 命名规则

1,开头不能是数字,空格或特殊字符

2,首字符后可以包含 字母 数字 汉字 _ @ #

3,不能是系统保留字(关键字)

 

2. 变量

全局变量

整个系统都可以使用

@@ERROR   返回执行的上一个T-SQL语句的错误号,0 代表没有错误,非0 代表有错误
begin tran
    declare @a int = 1; 
    select @a/0
    select @@ERROR
commit

@@IDENTITY 返回插入到表的IDENTITY列的最后一个值
@@LANGUAGE返回当前所用语言的名称
@@MAX_CONNECTIONS返回Sql Server实例允许同时进行的最大用户连接数
@@ROWCOUNT返回上一次语句影响的数据行的行数
@@SERVERNAME返回运行Sql Server的本地服务器的名称
@@SERVICENAME返回Sql Server正在其下运行的注册表项的名称
@@TIMETICKS返回每个时钟周期的微秒数
@@TRANCOUNT返回当前连接的活动事务数
@@VERSION 返回当前安装的日期、版本和处理器类型

 

局部变量

注意:定义局部变量必须以@开头。只能在当前连接(会话)下使用

定义变量

--declare @变量名 变量类型= 变量值; 
--如
declare @name varchar(20)= '任我行';

 

局部变量赋值

  • select 赋值
    
    declare @age int= 0; -- 定义变量
    
    -- 直接赋值
    select @age = 20;
    
    -- 也可通过查询语句进行赋值
    select @age=Age from person where Name='高圆圆';
    set 赋值
    
    set @age = 20; -- 不可通过查询语句进行赋值
    declare @username nvarchar(50)='任我行'; --定义局部变量,并赋初始值
    set @username='张三'; --通过set赋值
    select @username='aaa'; --通过select 赋值
    select @username as 用户名; --通过select 输出并取别名
    print @username; --print 打印输出

     

案例

-- 查询高圆的年龄,如果年龄是1-10岁,则输出儿童,10-25 输出少年,25-40输出青年,40-60输出中年,其他老年
​
declare @age int=0;
select @age=Age from person where Name='高圆圆';
set @age=30; --给局部变量赋值
​
if @age<10
begin
    print '儿童';
end;
else if  @age<25
begin
    print '少年'
end;
else if  @age<40
begin
    print '青年'
end;
else if  @age<60
begin
    print '中年'
end;
else 
begin
    print '老年'
end;
 

 

3. 运算符

1. 算术运算符

运算符名称
+ 加法运算符
- 减法运算符
* 乘法运算符
/ 除法运算符
% 求余运算符

 

 

2. 比较运算符

运算符名称
= 等于
> 大于
< 小于
>= 大于等于
<= 小于等于

 

 

3. 逻辑运算符

运算符含义
ALL 如果一组比较都为true,那么就为true
AND 如果两个布尔表达式都为true,那就为true
Any 两个任意一个布尔表达式为true即为true
Between 如果操作数在这个范围,则为true
exists 如果查询包含一些行,则为true
in 如果表达式等于表达式中的某一个,则为true
like 如果操作数与一种模式想匹配则为true
not 对任何一个布尔运算符取反
or 两个布尔表达式一个为true,则为true
some 在一组比较中,有些为true, 那么就为true

 

4. 连接运算符

是连接运算符,可以将两个及以上个字符串拼接到一起

select 'abc'+'bdc';

select '10'+'10'; -- sqlserver 中没有隐式转换
-- 输出结果:1010


select 10+'10'; -- sqlserver 中没有隐式转换
-- 输出结果:20


select 10+'10a'; -- 报错,还是因为没有隐式转换

 

 

5. 运算符优先级

级别运算符
1 ~(位非)
2 *(乘 )、/ (除)、%(求余)
3 +(正)、-(负)、+(加),-(减),+(连接)、^(位异或)、&(位与)、|(位或)
4 =(等于)、>、< 、>=、<= 、!=、<>(不等于)、!>(不小于)、!<(不大于)
5 not
6 and
7 all、any、between、in、like、or、some
8 =(赋值)

 

  1. 查询出人员表中总的记录数给@MyCount局部变量赋值并输出

    declare @mycount int;
    select @mycount=count(Id) from person;
    select @mycount;

     

  2. 求出高圆圆与王佳佳的年龄总和

    declare @age1 int,@age2 int,@sum int;
    --declare @age2 int;
    --declare @sum int;
    select @age1 = Age from person where Name='高圆圆';
    select @age2 = Age from person where Name='王佳佳';
    
    
    set @sum=@age1+@age2;
    --select @sum=@age1+@age2;
    select @sum;
     

     

  3. 输出出“高圆圆 VIP”这样一条信息

    select Name,'VIP' as 等级 from person where Name='高圆圆'
    
    select Name+'     VIP' as VIP from person where Name='高圆圆'
     

     

  1. 查询出年龄大于25岁的人员信息

    Select * from person where age>25

     

     

  2. 查询出年龄大于25岁或者性别为女的人员信息

    Select * from person where age>25 or Sex='女'

     

 

6. 作业

  1. T-SQL编程实现123%7后得结果

  2. 题目2

    T-sql语句进行如下编程

    (1) 定义一个整形变量age

    (2) 给变量age赋值为10

    (3) 定义一个不超过8字符的变量name

    (4) 给name变量赋值为”张三”

    (5) 调用变量,输出最终结果 张三的年龄是10岁

 

配套视频链接:1. 索引的概述_哔哩哔哩_bilibili

 

标签:第十二,INSERT,Name,dbo,--,编程,VALUES,SQL,Id
From: https://www.cnblogs.com/xuyubing/p/17914369.html

相关文章

  • 2023-2024第一学期第十二周助教总结
    本次总结所属课程2023-2024第一学期计算机基础与程序设计本次作业要求作业要求作业提交情况提交情况一、作业提交情况:本周大部分同学可以做到按时提交作业,只有一小部分同学在作业截止时间内未能按时提交,希望这些同学可以重视每老师布置的作业,认真完成并按时提......
  • mysql8 WIN10密码重置处理
    1、设置权限:mysqld--console--skip-grant-tables--shared-memory2、管理运行CMD:mysql-urooy-p;无需认证,直接回车3、修改USER密码置空: usemysqlupdateusersetauthentication_string=''whereuser='root';4、退出mysql,执行命令:quit关闭以-con......
  • 连接数据库(mysql,orcle)
    链接mysql数据库前提:自行下载.jar包1、下载mysql-connector-java-5.1.28.jar驱动包,将包安装在Jmeter的\lib\ext目录下然后再在jmeter上点击打开导入mysql驱动包,( 添加一个线程组先)如下图所示:  添加配置元件中JDBCConnectionConfiguration  填写一下信息(注:写上vari......
  • Postgresql中PL/pgSQL代码块的语法与使用-声明与赋值、IF语句、CASE语句、循环语句
    场景PostGresSQL简介与Windows上的安装教程:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/113981563除了标准SQL语句之外,PostgreSQL还支持使用各种过程语言(例如PL/pgSQL、C、PL/Tcl、PL/Python、PL/Perl、PL/Java等)创建复杂的过程和函数,称为存储过程(Store......
  • MySQL运维11-Mycat分库分表之应用指定分片
    一、应用指定分片此规则是在运行阶段有应用自主决定路由到那个分片,根据提供的字段,然后按照指定的规则,截取该字段的部分子字符串当做分片的依据,该分别方法比较灵活,适用于某个字段有几个特殊的字符串拼接而成的这种场景,例如:一个学校的学号:小学部的学号以0开头,形式为:0xxxxx(......
  • Docker部署MySQL
    1、拉取MySQL镜像dockerpullmysql:5.72、查看镜像dockerimages3、创建存储MySQL数据信息的目录在根目录下创建/data/docker/mysql目录,用于存储mysql的数据信息mkdir/data/docker/mysql-p4、宿主机创建MySQL配置文件4.1、创建conf目录在/data/docker/mysql目录下......
  • mysql中释放表空间的几种方式
    https://blog.csdn.net/qq_42277412/article/details/133344922MySQL是一款常用的关系型数据库管理系统,当我们使用MySQL创建表的时候,我们可能会面临表空间不足的问题。那么在MySQL中,如何释放表空间呢?下面我们将介绍几种常用的方式。 1.TRUNCATETABLETRUNCATETABLEtable_n......
  • MySQL 8.0 OCP 125
    Choosethebestanswer.Youencounteredaninsufficientprivilegeerrorinthemiddleofalongtransaction.您在长事务中遇到了不足的权限错误。Thedatabaseadministratorisinformedandimmediatelygrantstherequiredprivilege:通知数据库管理员并立即授予所需......
  • MySQL绿色版安装
    绿色安装实施步骤地址: https://blog.csdn.net/qq_39135287/article/details/82117234 简略步骤:1.到官网下载绿色安装包(https://dev.mysql.com/downloads/mysql/)2.解压mysql包到指定的位置并新建data存放数据文件夹3.新建my.ini配置文件在解压文件中(配置文件修改如下3的地......
  • mysql 常见错误
    Datatruncation:Datatoolongforcolumn'subtitle2'atrow1报错:.MysqlDataTruncation:Datatruncation:Datatoolongforcolumn1、可能数据库中的字符集的编码与写代码的页面的编码不相符合;(一般为utf-8)2、可能数据库字段的长度太小,不满足要求;che......