T-SQL 查询、修改数据表
T-SQL修改表数据
INSERT语句
语法:
INSERT
[TOP(expression) [PERCENT]]
[INTO]
{ <object> | rowset_function_limited
[ WITH ( <Table_Hint_Limited> [ ...n ] ) ] /*指定表提示*/
| view_name } /*视图名*/
{
[(column_list) ] /*指定列名*/
[<OUTPUT Clause> ]
{VALUES /*指定列名的取值*/
{DEFAULT | NULL | expression}[1…n]) /*列值的构成形式*/
|derived_table|execute_statement } } /*结果集*/
|DEFAULT VALUES /*所有列均取默认值*/
例子:
/*插入单个元组*/
/*向student表中插入一个学生记录(‘200’,‘曾雷’,‘女’,‘1978-2-3’,‘05001’)*/
USE test
INSERT INTO student_1
VALUES(100,'曾雷','女','1995-2-3',20) /*查询student表,查看结果*/
select * from student_1
----------------------------------------------------------------------------------- /*向student表中插入一个学生记录(‘201’,‘孙浩’,‘男’,‘1977-8-4’,NULL)*/
INSERT INTO student_1(sno,sname,ssex,sbirthday,sage)
VALUES(200,'孙浩','男','1996-8-4',null) select * from student_1
delete from student_1 where sno=200 INSERT INTO student_1(sno,sname,ssex,sbirthday)
VALUES(200,'孙浩','男','1996-8-4')
----------------------------------------------------------------------------------- /*插入元组集合*/
/*将student_1表中的相关数据插入到student表中*/
select * from student
select * from student_1 insert into student(sno,sname,ssex,sage)
select sno,sname,ssex,sage
from student_1 /*向student表中添加两个新生*/
INSERT INTO student_1(sno,sname,ssex,sbirthday,sage)
VALUES(300,'王明','男','1996-8-4',19),(400,'赵强','男','1996-4-1',19)
----------------------------------------------------------------------------------- /*向自增列添加数据*/
create table testidentity(
id int identity,
words varchar(10)) insert into testidentity values('a') --标识列不指定
insert into testidentity values('b') --指定除了标识列外的列 set IDENTITY_INSERT testidentity on
insert into testidentity(id,words) values(10,'c') --指定标识列 set IDENTITY_INSERT testidentity off
insert into testidentity values('d') select * from testidentity
UPDATE语句
语法:
UPDATE{table_name|view_name}
SET column_name = {expression | DEFAULT | NULL}[1…n]
where where_clause
例子:
/*将sc表中的成绩小于60的加5。*/
UPDATE sc
SET grade=grade+5
WHERE grade<70 /*将张三选修1号课程的成绩置零。*/
UPDATE sc
SET grade=0
WHERE cno=1 and sno in
(select sno from student where sname='张三') /*将学号为1的学生的姓名改为张三十,年龄改小2岁。*/
UPDATE student
SET sname='张三十',sage=sage-2 --同时更新多列
WHERE sno=1 select * from student
----------------------------------------------------------------------------------- /*使用top表达式*/
UPDATE top(2) student
SET sage=sage-2 UPDATE top(50) percent student
SET sage=sage-2
DELETE语句
语法:
DELETE table_name
WHERE search_condition
例子:
/*删除student表中学号为200的记录*/
select * from student
select * from sc DELETE student
WHERE sno='' /*删除张三的选修1号课程的选课记录*/
DELETE sc
WHERE cno=1 and sno in
(select sno from student where sname='张三')
----------------------------------------------------------------------------------- /*TRANCATE*/
/*TRUNCATE TABLE table_name*/
/*一次删除表中所有数据,即清空表,
但表的结构及约束保持不变,且该操作不记录日志,无法恢复,使用时必须慬慎。*/ /*删除student_1表中的记录*/
TRUNCATE TABLE student_1 select * from student_1
T-SQL查询数据
SELECT 语句语法:
SELECT select_list
[INTO new_table]
FROM table_source
[WHERE search_condition]
[GROUP BY group_by_expression]
[HAVING search_condition]
[ORDER BY order_expression [ASC | DESC]]
简单查询例子:
/*查询列*/ /*查询student表中所有记录的sname、ssex和sage列*/
SELECT sname,ssex,sage
FROM student /*查询有选课记录的课程cno*/
select distinct cno --避免重复项
from sc /*查询有85分以上成绩的课程cno*/
SELECT DISTINCT cno
FROM sc
WHERE grade>85 /*查询student表的所有记录*/
SELECT *
FROM student SELECT sno as '学号',sname as '姓名',ssex as '性别'
FROM student /*返回部分结果top*/
select top(1) * from student
select top(1) * from student where ssex='女'
select top(1) with ties * from student order by sage
select top(50) percent * from student /*计算列*/
select sno,sname,2015-sage as '出生年月' from student
select sno,cno,grade*1.1 from sc
----------------------------------------------------- /*选择查询 查询sc表中成绩大于60的所有记录*/
SELECT *
FROM sc
WHERE grade>60 /*查询sc表中1号课程成绩大于60的所有记录*/
SELECT *
FROM sc
WHERE cno=2 and grade>60 /*查询score表中成绩在60~80之间的所有记录*/
SELECT *
FROM sc
WHERE grade between 60 and 80 /*查询sc表中成绩为85、86或88的记录*/
SELECT *
FROM sc
WHERE grade in(85,86,88) /*字符串匹配*/ /* % 匹配任意字符
_ 匹配单个字符
[] 匹配括号中的任意一个字符
[^]或[!]匹配没有出现在括号中的单个字符
escape换码字符 */ select * from student /*查询student表中姓张的或性别为“女”的学生记录*/
SELECT *
FROM student
WHERE sname like '张%'or ssex='女' /*查询student表中姓李的学生*/
SELECT *
FROM student
WHERE sname like '李%' SELECT *
FROM student
WHERE sname like '[李]%' SELECT *
FROM student
WHERE sname like '李_' SELECT *
FROM student
WHERE sname like '[^李]%' SELECT *
FROM student
WHERE sname not like '[李]%' SELECT *
FROM student
WHERE sname like '%[四]%' /*查询sc表中没成绩的记录*/
SELECT *
FROM sc
WHERE grade is null SELECT *
FROM sc
WHERE grade is not null /*查询结果排序*/
SELECT *
FROM sc
order by grade SELECT *
FROM sc
order by cno,grade desc /*分组查询*/
/*group by group_by_expression[with rollup|cube]*
having search_condition
with rollup 只返回第一个分组条件制定的列的统计行;
而with cube除返回group by制定的列外,还返回按组统计的行*/ SELECT cno,AVG(grade)
FROM sc
group by cno SELECT cno,AVG(grade)
FROM sc
group by cno
having AVG(grade)>60 SELECT cno,tno,AVG(grade)
FROM sc
group by cno,tno SELECT cno,tno,AVG(grade)
FROM sc
group by cno,tno with rollup select AVG(grade)
from sc
高级查询例子:
/*嵌套查询*/
use test /*使用IN或NOT IN*/
select sname
from student
where sno in
(select sno
from sc
where cno=2) select sname
from student
where sno not in
(select sno
from sc
where cno=2) /*比较运算符的子查询*/ select sno,grade
from sc sc1
where sc1.cno=1 and
sc1.grade=(select sc2.grade
from sc sc2
where sc2.cno=1 and sc2.sno=1) select * from sc select sno,grade
from sc sc1
where sc1.cno=1 and
sc1.grade>(select sc2.grade
from sc sc2
where sc2.cno=1 and sc2.sno=1) select sno
from sc
where cno=1 and
grade>all(select grade from sc where sno=1) select sno
from sc
where cno=1 and
grade>(select max(grade) from sc where sno=1) select student.sno,sname,cno,grade
from sc as a,student
where student.sno=a.sno and --不相关子查询
grade>(select avg(grade)
from sc b
where b.cno=a.cno) /*exists*/
SELECT sname
FROM student
WHERE EXISTS
(SELECT *
FROM sc
WHERE student.sno=sc.sno and sc.cno=2) SELECT sname
FROM student
WHERE not EXISTS
(SELECT *
FROM sc
WHERE student.sno=sc.sno and sc.cno=2) /*多层嵌套查询
查询最高分的学生姓名*/ select *
from student
where not exists
(select *
from course
where not exists
(select *
from sc
where sc.sno=student.sno and sc.cno=course.cno)) select sname
from student
where sno in
(select sno
from sc
where grade=
(select max(grade)
from sc))
go select * from sc
select * from student /*DELETE、UPDATE和INSERT语句中的子查询*/
------------------------------------------------------------ /*联接查询*/
use test /*查询学生的姓名,选课号及成绩*/ select sname,cno,grade
from student,sc
where student.sno=sc.sno select sname,cname,grade
from student,sc,course --多表连接
where student.sno=sc.sno and sc.cno=course.cno select sname,cno,grade
from student inner join sc on(student.sno=sc.sno) --内连接 select student.sname,sc.cno,sc.grade
from student left join sc on (student.sno=sc.sno) --左向外连接 select student.sname,sc.cno,sc.grade
from student right join sc on (student.sno=sc.sno) --右向外连接 select student.sname,sc.cno,sc.grade
from student full outer join sc on (student.sno=sc.sno) --完全外部连接 select student.sno,sc.sno,sc.cno,sc.grade
from student cross join sc --交叉连接 select student.sno,sc.sno,sc.cno,sc.grade
from student cross join sc --带限定条件的交叉连接
where student.sno<2 select c1.cno,c2.cname
from course c1,course c2 --自连接
where c1.cpno=c2.cno
-------------------------------------------------------------------------- /*无法使用ntext、text或image列上直接连接表,
但是使用substring函数在ntext、text或image列上间接联接表,如*/ select *
from student join sc
on substring(student.mytext,1,2)=substring(sc.mytext,1,2)
------------------------------ /*使用UNION运算符组合多个结果
查询所有作者和客户的号码和名称*/ select sno,sname from student where sno=1
union
select sno,sname from student where sno=2
go
--------------------------- /*在查询的基础上创建新表
将查询得到的学生学号、姓名、课程和分数输入到新建的表score1中,
再显示该新表的记录*/ select student.sno,avg(grade) as 平均成绩
into avggrade --该表自动生成
from student inner join sc on (student.sno=sc.sno)
group by student.sno select * from avggrade drop table avggrade
T-SQL 查询、修改数据表的更多相关文章
- mysql中通过sql语句查询指定数据表的字段信息
mysql数据库在安装完成时,自动创建了information_schema.mysql.test这三个数据库.其中,information_schema记录了创建的所有数据库的相关信息,因此可以 ...
- ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法
ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法 语法 第一种: 通过使用Oracle语句块 --指定文档所有部门都能查看 declare cursor TABLE_DEPT and ...
- MYSQL中约束及修改数据表
MYSQL中约束及修改数据表 28:约束约束保证数据的完整性和一致性约束分为表级约束和列级约束约束类型包括: NOT NULL(非空约束) PRIMARY KEY(主键约束) UNI ...
- Oracle修改数据表
(1)修改数据表中某个字段值为空: update 表明 别名 set 别名.字段名 例子:update JWT_JYWF t set t.jdsbh=''(2)设置数据表中某个字段值和rownu ...
- MySQL(三) —— 约束以及修改数据表
约束: 1. 约束保证数据的完整性和一致性: 2. 约束分为表级约束和列级约束: 3. 约束类型包括:NOT NULL, PRIMARY KEY, UNIQUE KEY, DEFAULT, FOREI ...
- 数据库之mysql篇(3)—— mysql创建/修改数据表/操作表数据
创建数据表:create table 数据表名 1.创建表规范 create table 表名( 列名 数据类型 是否为空 自动排序/默认值 主键/外键/唯一键, 列名 数据类型 ...
- SQL Server2016导出数据表数据
SQL Server2016导出数据表数据 高文龙关注0人评论3914人阅读2017-09-22 08:41:56 SQL Server2016导出数据表数据 我们前面已经介绍了很多关于SQL Ser ...
- MySQL修改数据表存储引擎的3种方法介绍
这篇文章主要介绍了MySQL修改数据表存储引擎的3种方法介绍,分别是直接修改.导出导入.创建插入3种方法, 可以参考下 MySQL作为最常用的数据库,经常遇到各种各样的问题.今天要说的就是表存储引 ...
- mysql之约束以及修改数据表
数据约束的分类: ———————————————————————————————————————————————————— 外键约束的要求解析: //在my文件中的这句话代表着搜索引擎,如果不是的就需 ...
- MySQL 修改数据表中的字段的字符编码
1.查询 MySQL 的版本: SELECT VERSION(); 2.查询 MySQL 当前使用的字符集: SHOW VARIABLES LIKE '%character%'; 3.查询指定数据库的 ...
随机推荐
- mysql-2 mysql客户端
mysql 官方客户端 MySQL-Workbench 下载链接http://dev.mysql.com/downloads/workbench/ 具体安装步骤就不写了,直接一直下一步就可以了. 下 ...
- linux基础-第九单元 利用vi编辑器创建和编辑正文文件
vi编辑器简介 什么是vi vi编辑器的操作模式 vi编辑器的3种基本模式 在vi编辑器中光标的移动 移动光标位置的键与光标移动间的关系 进入插入模式 从命令行模式进入插入模式的命令 在命令行模式下删 ...
- proteus怎么仿真?
加入hex 文件 双击 单片机芯片 AT89C51 弹出对话框,选择好 用keil 编译好的 hex 文件,晶振 12 即可. 运行
- seq
Linux 中seq 命令的用法 用于产生从某个数到另外一个数之间的所有整数 用法: seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数 ...
- WPF之全局快捷键
目录 1.WPF快捷键实现方式 2.全局快捷键设置界面 3.Windows API调用 4.注册全局快捷键 5.快捷键触发 WPF快捷键实现方式 WPF快捷键实现主要有自定义快捷键命令和全局快捷键两种 ...
- Python+excel实现的简单接口自动化 V0.1
好久没写博客了..最近忙着工作以及新工作的事.. 看了下以前写的简单接口自动化,拿出来总结下,也算记录下学习成果 先来贴一下最后的结果,结果是写在原来的excel中 执行完毕后,会将结果写入到“状态” ...
- Google类VR设备知识
前言 本文所指的google类vr设备是指: 谷歌的Cardboard.三星Gear VR.暴风魔镜等这样的手机VR盒子,而并不是HTC Vive这类. 人眼立体感知能力 人的左右眼看到的东西是有差别 ...
- FMS 客户端带宽计算、带宽限制
FMS 客户端带宽计算.带宽限制 1. 带宽计算 FMS内置了带宽检测的特性(被称作"native bandwidth detection"),要进行带宽检测,客户端只要在成功连接 ...
- python pip install mysql-connector-python
sudo pip install mysql-connector-python 报错信息:Collecting mysql-connector-python Could not find a vers ...
- jmeter 函数助手里的P,property的使用
1.函数助手里的 p及property的使用 ${__P(init,2)} , ${__property(init,start,200)} 可以自行定义变量名称,及变量的默认值 P 变量名为init, ...