SQL操作语句中的注意点

一 查询语句

1 distinct关键字消除重复行

当查询的结果数据中出现重复数据时,在查询条件中加上distinct关键字消除重复行;

如:select distinct Sno from SC;

2 like匹配的通配符%和_

% :代表任意长度(包括0)的字符串,例如:like‘a%b‘,表示以a开头,以b结尾的任意长度的字符串;

_ :代表任意单个字符,注意数据库的字符集为ASCII时一个汉字需要两个_,当字符集为GBK时只需要一个_,例如:like‘欧阳__‘;

注:当要查询的字符串本身就含有通配符%或_,这时就要用escape<‘换码字符‘>短语,对通配符进行转义了,例如:select  Cno,Ccredit from Course where Cname

like ‘DB\_Design‘ escape ‘\‘;   escape‘\‘表示“\”为换行字符,这样匹配串中紧跟在“\”后面的字符“_”不再具有通配符的含义,转义为普通的“_”字符

3  涉及空值的查询

当查询某个字段值为空的条件下,字段与字段值之间要用"IS",不能用"="代替,例如:  select   Sno,Cno from SC where Grade IS NULL;

4  有关升序降序

如:select * from Student order by Sdept, Sage desc;
查询结果按所在系的系号(Sdept)升序排列,同一系中的学生按年龄降序排列

5  关于聚集函数的一些注意

在聚集函数(如:count() sum() avg() max() min()等)遇到空值时,都跳过空值而只处理非空值。注意:where字句中是不能用聚集函数作为条件表达式的

6   group by分组条件中的having短语指定筛选条件

如果group by分组后,还要要求按一定的条件对这些组进行筛选,最终只输出满足指定条件的组,可以使用having短语指定筛选条件;

如:select Sno from SC group by Sno having count(*) > 3;       这里先用group by字句按Sno进行分组,然后再用聚集函数count 对每一组计数,having短语给出了选择组的条件,只有满足条件的组(即元组个数>3)才会被选出来

注意:where字句作用于基本表或视图,从中选择满足条件的元组。having短语作用于组,从中选择满足条件的组

7   关于嵌套查询的注意

嵌套查询是将一个查询块(子查询)嵌套在另一个查询块(父查询)的where字句或having短语的条件中的查询;

需要特别指出的是,子查询的select语句中不能使用order by字句,order by字句只能对最终查询结果排序

8   带有exists谓词的子查询

exists代表存在量词。所以带有exists谓词的子查询不返回任何数据,只产生逻辑真‘TRUE’,或逻辑假‘FALSE’。

例如:select Sname from Student where exists (select * from SC where Sno=Student.Sno and Cno=‘1‘);
由exists引出的子查询,其目标列表达式通常用*,因为带exists的子查询只返回真值或假值,给出别名无实际意义

9   集合查询

集合操作主要包括并操作UNION,交操作INTERSECT和差操作EXCEPT;

union的使用比较多,将多个查询结果合并起来,系统会自动去掉重复元组,如果要保留重复元组则用union all操作符;

intersect的使用是获取多个查询结果中相同的结果(即取交集)

except的使用是用前一个查询结果减去后一个查询结果(即取差集)

二 插入语句

1  插入子查询结果

子查询不仅可以嵌套在select语句中,也可以嵌套在insert语句中,用以生成要插入的批量数据

例如:insert into Dept_age(Sdept, Avg_age)  select Sdept, avg(Sage) from Student group by Sdept;

三 修改语句

1  修改表中所有数据的值

如:update Student set Sage=Sage+1;

四 模式的删除

删除模式语句:drop schema  <模式名> <cascade | restrict>

选择cascade(级联),表示在删除模式的同时把该模式中所有的数据库对象全部一起删除

选择restrict(限制),表示如果该模式中定义了下属的数据库对象(如:表,视图等),则拒绝该删除语句的执行。只有当该模式下没有任何下属的对象时才能执行drop schema语句

时间: 2024-10-14 14:06:12

SQL操作语句中的注意点的相关文章

数据库操作语句中变量的使用 - Delphi

delphi及sql的语句中,字符串都需要用单引号,为了处理方便以及安全考虑,我使用了参数,刚从网上搜的是这样的方式: cmd.Parameters.CreateParameter() 含有四个参数,麻烦不说,还总是出错,甚是烦人,后来查阅资料,改成下面的方式,就没那么多事了. sql:='UPDATE tb_register SET reg_username = :UN,reg_password = :PW,' +'reg_check = :CK,reg_readme = :RM,reg_me

Sql 查询语句中的类型转换

1: CAST ( (SalesAgreement.HTPrice / 10000) as decimal(18,2) ) as HTPrice 2: 转换货币如:10,000.00 select '¥'+convert(nvarchar,cast(1343432432434.8 as money),1) Sql 查询语句中的类型转换

[Sqlite] 移动嵌入式数据库Sqlite的日常SQL操作语句汇总

序言:     嵌入式数据库Sqlite的基本sql使用汇总,使用测试起来,与关系型数据库mysql在语法上有很多的相似之处,先准备测试数据: CREATE TABLE COMPANY(ID INT NOT NULL, NAME VARCHAR(20),AGE INT,ADDRESS VARCHAR(20),SALARY DECIMAL(7,2)); INSERT INTO "COMPANY" VALUES(1,'Paul',32,'California',20000); INSERT

[Sqlite] 移动嵌入式数据库Sqlite日报SQL操作语句汇总

前言:     嵌入式数据库Sqlite基本sql使用摘要.使用测试,与关系数据库mysql在语法上有非常多的类似之处,先准备測试数据: CREATE TABLE COMPANY(ID INT NOT NULL, NAME VARCHAR(20),AGE INT,ADDRESS VARCHAR(20),SALARY DECIMAL(7,2)); INSERT INTO "COMPANY" VALUES(1,'Paul',32,'California',20000); INSERT IN

Microsoft SQL - 操作语句

操作语句(Operation Statement) 操作数据库 创建数据库 关键字:create database 用于创建各种数据库对象(数据库.表.触发器.存储过程等) 格式如:create <对象类型> <对象名称> create database 数据库名称 on primary ( name='主文件名' , size=初始化大小 按kb.mb.gb.tb设置 , maxsize=最大容量 unlimited(无限)/ 按kb.mb.gb.tb设置 , filegrowt

SQL操作语句

SQL语句与Mysql的语句大体上比较相似.以下是sql server的一套练习题,是很好的数据库操作语句学习资料,学校的学习资料,在此整理了以下. 数据库exam:这是一个模拟电子商务,网上直销的数据,主要销售计算机配件.该数据库包含了订单数据.经销商基本数据.产品基本数据以及供应商基本数据等.该数据库共包含6个表,表名分别为:orders.distributors.suppliers.city.items和products.各个表的内容与格式如下: 表1 网上直销订单表格,表名为:order

关于sql查询语句中的别名

sql语句中给子查询或其他查询类型加别名的时候可能会报错 java.sql.SQLException: 无法转换为内部表示 原因是select返回类型的实体类中没有写该别名 原来的实体类 更改后的实体类

SQL 操作语句

SQL Server T-SQL高级查询 高级查询在数据库中用得是最频繁的,也是应用最广泛的. Ø 基本常用查询 --select select * from student; --all 查询所有 select all sex from student; --distinct 过滤重复 select distinct sex from student; --count 统计 select count(*) from student; select count(sex) from student

简单常用SQL操作语句

给大家整理了一些SQL SERVER的常用语句,这也是SQL数据库的一些基础课程,其中包括创建表.添加列等,感谢您一直对烈火的支持与帮助,我们会不断努力! 以下为SQL语句: 新建表: create table [表名] ( [自动编号字段] int IDENTITY (1,1) PRIMARY KEY , [字段1] nVarChar(50) default \'默认值\' null , [字段2] ntext null , [字段3] datetime, [字段4] money null ,