重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在进行数据管理时,使用SSMS进行数据维护有可视化、方便的优点,但是在批量维护或重复维护数据时,每次都需要使用SSMS不但不方便,而且容易出错。通过编写SQL语句来维护数据库便于解决重复或批量维护数据的难题。
创新互联主营潮安网站建设的网络公司,主营网站建设方案,手机APP定制开发,潮安h5微信小程序定制开发搭建,潮安网站营销推广欢迎潮安等地区企业咨询
SQL是Structured Query Language的缩写,即结构化查询语言。SQL广泛地被采用说明了它的优势,它使全部用户,包括应用程序员、数据库管理员和终端用户受益匪浅。
SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航功能。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL语句可以接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的输出作为另一条SQL语句的输入。
SQL可用于所有用户的数据库活动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其他类型的终端用户。SQL为许多任务提供了命令,包括:
T-SQL语言主要由以下几部分组成:
数据操纵语言:用来查询、插入、删除和修改数据库中的数据,如select、insert、update、delete;
数据定义语言:用来建立数据库、数据库对象和定义其列,大部分是以CREATE开头的命令,如CREATE、ALTER、DROP;
- 数据控制语言(Data Control Language,DCL):用来控制数据库组件的存取许可,存取权限等,如GRANT、REVOKE;
在SQL Server Management中对表数据进行插入、更新或删除比较简单,除此之外,也可以使用T-SQL语句实现对表数据的插入、更新或删除等操作。
使用INSERT语句将数据插入表中
INSERT [INTO] <表名> [列名] VALUES <值列表>
其中:
在插入数据的时候,需要注意以下事项:
每次插入一整行数据,不可能只插入半行或几列数据;
数据值的数目必须与列数相同,每个数据值的数据类型,精度和小数位数也必须与相应的列匹配;
INSERT语句不能为标识列指定值,因为它的值是自动增长的;
对于字符类型的列,当插入数据的时候,需要使用单引号;
如果在设计表的时候指定某列不允许为空,则该列必须插入数据,否则将报告错误信息;
插入的数据项要求符合CHECK约束的要求;
- 尽管可以不指定列名,但是应养成好习惯,明确指定插入的列和对应的值;
create database benet;
use benet;
create table 学生统计表 (
编号 int identity (1,1) not null,
姓名 nvarchar(3) not null,
性别 nvarchar(2) not null,
年龄 varchar (3) null,
身份证号码 varchar(18) primary key,
出生日期 datetime not null,
意向科目 nvarchar(5) null,
学费 money not null check(学费 >=0 and 学费 <=10000),
);
select * from 学生统计表;
insert into 学生统计表 (姓名,性别,年龄,身份证号码,出生日期,意向科目,学费) values ('张三','男','21','111111111111111111','2001/11/27','数学',7000);
insert into 学生统计表 (姓名,性别,身份证号码,出生日期,学费) values ('丽丽','女','222222222222222222','2003/9/24',8000);
insert into 学生统计表 (姓名,性别,身份证号码,出生日期,学费) values ('马三','男','333333333333333333','2005/08/12',6500);
select * from 学生统计表;
使用UPDATE语句更新表中的数据,语法如下:
UPDATE <表名> SET <列名=更新值> [WHERE <更新条件>]
其中:
update 学生统计表 set 年龄=37 where 姓名='马三';
update 学生统计表 set 学费=5000,意向科目='语文' where 姓名='马三';
DELETE FROM <表名> [WHERE <删除条件>]
示例如下:
delete from 学生统计表 where 姓名='张三';
DELETE FROM <表名>
示例如下:
delete from 学生统计表;
Truncate Table语句用来删除表中的所有行,功能上类似于没有WHERE子句的DELETE语句,Truncate Table语法格式如下:
Truncate Table <表名>
示例如下:
Truncate Table 学生统计表;
Truncate Table语句于DELETE语句的区别如下:
Truncate Table语句不带WHERE子句,只能将整个表数据清空。而DELETE语句可以带WHERE子句,允许按条件删除某些记录;
Truncate Table语句不记录事务日志,而DELETE语句无论删除多少记录,都会每删除一行就记录一条事务日志。所以使用Truncate Table语句删除数据后是无法通过事务日志恢复的;
Truncate Table语句删除表中所有行,标识列会重置为0,而DELETE语句不会重置标识列;
- Truncate Table语句不能用于有外键约束引用的表,这种情况下,需要使用DELETE语句;
综上所述,Truncate Table语句执行速度更快,在清空大数据量表作业时,DBA常用此语句。但是在执行此语句前要确保数据可以删除,否则无法恢复。
SQL语言中最主要、最核心的部分是它的查询功能。查询语句用来对已经存在于数据库中的数据按照特定的组合,条件表达式或次序进行检索。数据库中的查询是使用SELECT语句来完成的。
T-SQL中的查询基本格式是由SELECT子句,FROM子句和WHERE子句组成的查询块
SELECT <列名> FROM <表名> WHERE <查询限定条件>
在SQL server中,select语句的语法如下:
SELECT select_list
[ INTO new_table_name ]
FROM table_name
[WHERE search_conditions ]
[GROUP BY group_by_expression] [HAVING search_conditions]
[ORDER BY order_expression [ASC|DESC] ]
以上各项参数说明如下:
表达式是符号和运算符的一种组合,并且可以对它求值得到单个数据值,简单表达式可以是一个常数、变量、列或标量函数。可以用运算符把两个或多个简单表达式连接成一个复杂表达式。
SQL Server中的表达式可以包含下列一个或多个参数:
常量:表示单个指定数据值的符号。一个常量由一个或多个字母、数字字符(字母a~z、A~Z,数字0~9)或符号(!、@、#等)组成。字母、日期和时间数据类型的常量需要用单引号括起来,二进制字符串和数字常量则不需要;
列名:表中列的名称,表达式中仅允许使用列的名称;
{一元运算符}:仅有一个操作数的运算符,其中“+”表示正数,“-”表示负数,“~”表示补救运算符;
- {二元运算符}:将两个操作数组合执行操作的运算符。二元运算符可以是算术运算符、赋值运算符(=)、位运算符、比较运算符、逻辑运算符、字符串串联(或连接)运算符(+)或一元运算符。
示例如下:
select * from 学生统计表 where 学费 > 6500;
select * from 学生统计表 where 学费 >= 8000;
select * from 学生统计表 where 学费 < 6000;
select * from 学生统计表 where 学费 <= 7000;
select * from 学生统计表 where 学费 <> 7000;
select * from 学生统计表 where 学费 between 6500 and 8500;
select * from 学生统计表 where 学费 in (8000,7500,3000);
select * from 学生统计表 where 年龄 is null;
通配符经常与LIKE运算符一起配合使用完成模糊查询。可以使用LIKE和通配符来完成对表的一些特殊约束。
示例如下:
select * from 学生统计表 where 姓名 like '李%';
select * from 学生统计表 where 姓名 like '李__'
select * from 学生统计表 where 姓名 like '杜_'
select * from 学生统计表 where 姓名 like '[杜-王]三';
select * from 学生统计表 where 姓名 like '杜[^三六]';
AND和OR运算符是连接条件表达式,NOT否定条件。AND连接两个条件,并且仅当两个条件都为真时才返回True。OR也连接两个条件,但只要其中任意一个为真就返回True。
示例如下:
select * from 学生统计表 where 姓名='丽丽' and 学费=5000;
select * from 学生统计表 where 姓名='张三' or 学费=8760;
select * from 学生统计表 where not 学费=8000;
select top 3 * from 学生统计表;
select 姓名 as name,身份证号码 as idcard from 学生统计表;
select * from 学生统计表 order by 学费 desc;
select * from 学生统计表 order by 学费 asc;
select distinct 意向科目 from 学生统计表;
SELECT不仅仅只能查询,结合INTO关键字或将SELECT作为INSERT的子句,都可以实现生成新数据的功能。
SELECT使用INTO关键字可以从一个表中选择一些数据插入新表中
select * into new1 from 学生统计表;
通过将SELECT作为INSERT的子句,也可以将现有表中的数据添加到新表中,与上一个方法不同的是,这个新表需要事先创建好,并且具有SELECT子句查询结果对应的列,查询结果对应的数据个数、顺序和数据类型也要保持一致。
示例如下:
insert into new2 (姓名,性别,年龄,身份证号码) select 姓名,性别,年龄,身份证号码 from 学生统计表 where 学费>=7500
UNION关键字用于将多个不同的数据或查询结果合并成一个新的结果集。不同的数据或查询结果要求数据个数、顺序、数据类型都一致。
insert into new2 (姓名,性别,年龄,身份证号码)
select '娟娟','女','31','444444444444444444');
select '杜五','男','27','555555555555555555');
select '李二的','男','18','666666666666666666');
select 姓名,性别,年龄,身份证号码 from 学生统计表
create table products
(
编号 int identity (1,1) primary key,
名称 nvarchar(10) not null,
种类 nvarchar(10) not null,
成本 money not null check (成本 >=0 and 成本 <=60),
出厂日期 date not null,
);
insert into products values
('西瓜','水果','4.1','2017/05/06'),
('芹菜','蔬菜','1.0','2017/04/01'),
('番茄','蔬菜','2.9','2017/04/01'),
('黄瓜','蔬菜','2.2','2017/05/09'),
('香蕉','水果','6.1','2017/05/23'),
('核桃','坚果','28.5','2017/06/02'),
('开心果','坚果','38.11','2017/06/21'),
('蓝莓','水果','50.2','2017/05/15');
insert into products values ('西瓜','水果','4.1','2017/05/06');
insert into products values ('芹菜','蔬菜','1.0','2017/04/01');
insert into products values ('番茄','蔬菜','2.9','2017/04/01');
insert into products values ('黄瓜','蔬菜','2.2','2017/05/09');
insert into products values ('香蕉','水果','6.1','2017/05/23');
insert into products values ('核桃','坚果','28.5','2017/06/02');
insert into products values ('开心果','坚果','38.11','2017/06/21');
insert into products values ('蓝莓','水果','50.2','2017/05/15');
select * from products;
select * from products where 成本 < 10;
update products set 成本=成本 +1 where 种类='蔬菜';
select * from products where 种类='蔬菜';
select * from products where 成本 > 3 and 成本 < 40 order by 成本 desc;
select * from products where 成本 in (4.1,6.1,28.5,38.11,50.2);
select distinct 种类 from products;
select 名称,种类,出厂日期 into products_new from products;
select * from products_new;
———————— 本文至此结束,感谢阅读 ————————