SQL
沐煜歆羡
这个作者很懒,什么都没留下…
展开
-
删除姓名、年龄重复的记录
Id name age salary 1 yzk 80 1000 2 yzk 80 2000 3 tom 20 20000 4 tom 20 20000 5 im 20 20000 a. 使用Distinct 去重: SELECT DISTINCT Name FROM Persons(Distinct 只能去除结果集中一模一样的数据) b. 获取不重复数据思考1: SELECT Name, age FROM Persons GROUP BY原创 2021-01-19 20:15:34 · 230 阅读 · 0 评论 -
横表、纵表转换
纵表结构 TableA Name Course Grade 张三 语文 75 张三 数学 80 张三 英语 90 李四 语文 95 李四 数学 55 横表结构 TableB Name 语文 数学 英语 张三 75 80 90 李四 95 55 0 a. 先理解: select Name,(case Course when ‘语文‘ then Grade else 0 end) as 语文, (case Course when ‘数学‘ then Grade else 0 end) as 数学, (case原创 2021-01-19 20:14:40 · 123 阅读 · 0 评论 -
综合查询(成绩管理)
Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 a. 查询“001”课程比“002”课程成绩高的所有学生的学号 select a.S# from (select s#,score from SC where C#=‘001’) a,(select s#,score from SC where C#=‘002’) b where a.score>b.sco原创 2021-01-19 20:13:05 · 228 阅读 · 0 评论 -
综合练习(图书管理)
CARD 借书卡: (CNO 卡号,NAME 姓名,CLASS 班级) BOOKS 图书: (BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY 库存册数 ) BORROW 借书记录: (CNO 借书卡号,BNO 书号,RDATE 还书日期 备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。 要求实现如下处理: a. 写出自定义函数,要求输入借书卡号能得到该卡号所借书金额的总和 CREATE FUNCTION getSUM (@C原创 2021-01-14 08:54:43 · 627 阅读 · 0 评论 -
综合练习(活期存款)
活期存款中,“储户”通过“存取款单”和“储蓄所”发生联系。假定储户包括:账号,姓名,电话,地址,存款额;“储蓄所”包括:储蓄所编号,名称,电话,地址(假定一个储户可以在不同得储蓄所存取款),问题:创建一个触发器TR1完成下面内容,当向“存取款单”表中插入数据时,如果存取标志=1则应该更改储户表让存款额加上存取金额,如果存取标志=0则应该更改储户表让存款额减去存取金额,如果余额不足显示余额不足错误。 CREATE TABLE CREATE TRIGGER tr1 on qukuan after insert原创 2021-01-14 08:52:51 · 387 阅读 · 0 评论 -
写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的
a. select top 10 * from A where id not in (select top 30 id from A) 演变步骤: 1)select top 30 id from T_FilterWords–取前条 2)select * from T_FilterWords where id not in (select top 30 id from T_FilterWords)–取id不等于前三十条 3)select top 10 * from T_FilterWords b. selec原创 2021-01-14 08:51:33 · 162 阅读 · 1 评论 -
综合查询(条件查询、嵌套查询、多表查询)
表一:student_info 学号 姓名 性别 出生年月 家庭住址 备注 0001 张三 男 1981-8-9 北京 NULL 表二:curriculum 课程编号 课程名称 学分 0001 计算机基础 2 0002 C语言 2 表三:grade 学号 课程编号 分数 0001 0001 80 0001 0002 90 a. 条件查询 在GRADE表中查找80-90份的学生学号和分数 select 学号,分数 from grade where 分数 between 80 and 90 在GRADE 表中原创 2021-01-14 08:48:04 · 266 阅读 · 1 评论 -
说出一些数据库优化方面的经验?
a. 扩展:索引内部原理可以想象成 Dictionary,插入、删除、更新的速度慢了,加上索引也多占用了空间,查询的速度快了。加上索引以后速度提升非常明显。 b. 在经常检索的字段上(selectfromPerson whereName=@Name)使用索引提高查询速度。 (2)select 中只 列出必要的字段,而不是。 c. 避免隐式类型转换造成的全表扫描,在索引上使用函数也会造成全表扫描(因 为索引只是为字段建立的,一旦使用表达式或者函数,那么索引就是失效了,当然也可以使用“函数索引”、 “表 达式索原创 2021-01-14 08:45:10 · 57 阅读 · 0 评论 -
什么叫视图?游标是什么?
a. 视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。 b. 游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要 ...原创 2021-01-14 08:40:24 · 72 阅读 · 0 评论 -
事务的特性是什么?
a. 原子性 事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行 b. 一致性 事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。 c. 隔离性 由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它原创 2021-01-11 08:16:57 · 109 阅读 · 0 评论 -
什么是事务?什么是锁?
a. 事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。 b. 为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。 c. 锁:在所以的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。 ...原创 2021-01-11 08:16:15 · 74 阅读 · 0 评论 -
触发器的作用?
a. 触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。 b. 它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。 c. 可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发 ...原创 2021-01-11 08:15:44 · 245 阅读 · 0 评论 -
索引的作用?和它的优点缺点是什么?
a. 索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。 b. 它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。 c. 索引可以是唯一的,创建索引允许指定单个列或者是多个列。 d. 缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小 ...原创 2021-01-11 08:15:14 · 120 阅读 · 0 评论 -
说一下SQLServer中索引的两种类型?
a. 聚簇(或者叫做聚集,cluster)索引和非聚簇索引。 b. 字典的拼音目录就是聚簇(cluster)索引,笔画目录就是非聚簇索引。这样查询“G到M的汉字”就非常快,而查询“6划到8划的字”则慢。聚簇索引是一种特殊索引,它使数据按照索引的排序顺序存放表中。聚簇索引类似于字典,即所有词条在字典中都以字母顺序排列。聚簇索引实际上重组了表中的数据,所以你只能在表中建立一个聚簇索引。当数据按值的范围查询时,聚簇索引就显得特别有用。因为所有SQLServer都必需先找到所查询范围的第一行,然后依次下去,直到该范原创 2021-01-11 08:14:37 · 124 阅读 · 0 评论 -
数据库三范式是什么?
a. 第一范式:字段不能有冗余信息,所有字段都是必不可少的 b. 第二范式:满足第一范式并且表必须有主键 c. 第三范式:满足第二范式并且表引用其他的表必须通过主键引用原创 2021-01-11 08:14:02 · 61 阅读 · 0 评论 -
SQL语句的增删改查(详细)
一、增:有2种方法 1.使用insert插入单行数据: 语法:insert [into] <表名> [列名] values <列值> 例:insert into Strdents (姓名,性别,出生日期) values (‘王伟华’,‘男’,‘1983/6/15’) 注意:如果省略表名,将依次插入所有列 2.使用insert,select语句将现有表中的 数据添加到已有的新表中 语法:insert into <已有的新表> <列名> sel转载 2020-12-31 22:08:47 · 1923 阅读 · 0 评论 -
四种简单的sql语句(增删改查语句)
一、插入语句 insert into [table] ([column],[column],[column]) values(?,?,?) 二、删除语句 delete from [table] where column = ? 三、修改语句 update [table] set column = ? where column = ? 四、查询语句 1)查询单条记录的所有字段 select * from [table] where [column] = ? 2)查询所有记录的所有字段 select * fro转载 2020-12-31 22:05:04 · 2848 阅读 · 0 评论 -
SQL基础练习
create database stu_db --创建数据库Students on primary --默认就属于Primary 主文件组 ( Name = ‘stu_db’, --主数据库文件的逻辑名 Filename = ‘H:\SQL\stu_db.mdf’, --主数据库文件的物理名 Size = 5MB, --主数据库文件的初始大小 MaxSize = 50MB, --主数据库文件的增长最大值 FileGrowth = 10% --主数据库文件的增长率 )log on ( –日志文件的具原创 2020-12-29 22:32:12 · 109 阅读 · 0 评论 -
SQL基础练习
use master go drop database my_DB go create database my_DB –on primary –( –name=‘my_DB’ –filename=‘H:\SQL\my_DB.mdf’ –) go use my_DB go create table dept ( DEPTNO int not null , DNAME varchar(14), LOC varchar (13) ) GO create table EMP ( EMPNO int not nul原创 2020-12-29 22:31:08 · 458 阅读 · 0 评论 -
SQL练习解答
CREATE TABLE STUDENT( Sno VARCHAR(255) NOT NULL, Sname VARCHAR(255), Ssex VARCHAR(255), Sage int, Sdept VARCHAR(255) ) SELECT * FROM STUDENT INSERT INTO STUDENT (SNO,SNAME,SSEX,SAGE,SDEPT) VALUES (‘9512101’,‘李勇’,‘男’,19,‘计算机系’), (‘9512102’,‘刘晨’,‘男’,20,‘计算机系转载 2020-12-25 13:09:43 · 498 阅读 · 0 评论 -
SQL基础
1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server — 创建 备份数据的 device USE master EXEC sp_addumpdevice ‘disk’, ‘testBack’, ‘c:\mssql7backup\MyNwind_1.dat’ — 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table原创 2020-12-25 13:04:50 · 58 阅读 · 0 评论