常用SQL语句培训

常用SQL语句
2007-12-4
查询语句
select * from class;查询表class中的所有列. select class,teacher from class;查询表class中的列class,teacher
Select count(*) as count_all from class;返回表class中的总行数给结果集.
使用: select * from view_1 删除:drop view view_1
10
ON set QUOTED_IDENTIFIER ON
go
CREATE TRIGGER [trigger_1] ON [dbo].[class] AFTER DELETE
6
索引使用技巧与数据库性能调优.
查询语句中,对于字符串型的字段,一定要用单引号括起来,对于整型不要用引号,对于日期型的字段,目前暂无定论,是 否会对性能有影响.可进一步跟踪.
尽量不要用in子句,那样的话无法使用索引,导致查询效率低下,可以改用UNION来连接多个查询.这样可以提高效率.
多个查询条件,应该将过滤多的带索引的字段的条件放在前面. 查询条件中尽量用等号,不要用大于,小于等,那样可能会用不上索引. 在全部查询出所有结果时,要求带上条件1=1,可以避免使用索引,提高效率.
7
创建存储过程
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go CREATE PROCEDURE [dbo].[get_avage_age] AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. -- Add the parameters for the stored procedure here @class_name nchar(10), @CheckDate [datetime]
ORACLE: desc table_name
INFORMIX: dbschmea SQLSERVER:
4
修改表结构,删除表
Alter table class_bak add monitor varchar(10) ;:增加一列 Alter table class_bak alter COLUMN montior nvarchar(10) :修改一列 Alter table class_bak drop COLUMN monitor ;:删除一列 删除表: Drop table class_bak
5
索引
用于在查询数据时,加快查询速度, create UNIQUE index idx1_class on class(class) 在字段class上创建唯一索引,即插入时,该字段不允许重复.名称为 idx_class insert into class (class,teacher) values('gaoer','lisi'); 此插入语句执行第二次将会失败. 删除索引: drop index idx1_class on class 索引的重新生成,重新组织:当一个表经过多次修改,插入,删除后,需要重建索引,以便以后可提高查询效率.但重建的过 程是较为消耗资源的.在SCP等业务繁忙的机器上,一定要选择合适的时间段才能重建索引. ALTER INDEX idx_class on class REBUILD 重新生成索引将会删除并重新创建索引。这将根据指定的或现有的填充因子设置压缩页来删除碎片、回收磁盘空间, 然后对连续页中的索引行重新排序。 ALTER INDEX idx_class on class REORGANIZE 使用最少系统资源重新组织索引。
2
插入,修改,删除语句
插入: 指定字段名称及值的插入 Insert into class (class,studentnumber,teacher) values('gaoer',55,'abc'); 不指定字段名称的插入Insert into class values('chuyi','abc',55); 一次插入多条记录:只能执行多条insert语句. 从另一个表中读出数据插入当前的表 先创建一个新表:select * into class_bak from class where 1=2 insert into class_bak select * from class where class='gaoer‘ 修改:Update class set class='gaoerer' where class='gaoer‘ 删除:Delete from class where class='gaoerer'
1
查询语句(续)
select class,count(*) from student group by class :查询结果根据group by 分组. select class,count(*) from student group by class having count(*)=5 :对分组的结果再用条件过滤 select * from student where id<2 UNION (ALL) select * from student where age>19 :UNION:将两个查询语句的查询结果放在一起,如果有重复的行, 就删除,如果是UNION ALL:则重复的行不删除. 模糊匹配查询: select * from student where name like '%ang%' 整型,日期类型的字段可以指定范围.用between select * from student where born between '1980-05-04' and '2983-10-18' select * ,12 from student 返回结果中增加一列,且值均为12. select RTRIM(class)+RTRIM(teacher) AS name1,studentnumber from class :将两个字段先删除尾部的空格,再连接 起来返回. 其中:连接起来的字段名称返回时为name1 Select class.*,student.* from class,student where class.class=student.class :两个表的内容联合起来查询,字段 也可以用JOIN子句实现:select * from class JOIN student on class.class=student.class JOIN又分为内连接,外连接,左外连接,右外连接等,具体请查看相关的数据库的手册.
Drop procedure get_avage_age;
9
视图的创建,删除与使用
创建: create view view_1 as SELECT dbo.class.class, dbo.class.studentnumber, dbo.class.teacher, dbo.student.id, , dbo.student.age, dbo.student.english, FROM dbo.student.born, dbo.student.class AS Expr1 dbo.class INNER JOIN dbo.student ON dbo.student.class = dbo.class.class
select sum(studentnumber) as all_student_number from class :返回class表中studentnumber的总数给结果集 select avg(studentnumber) as avg_student_number from class :返回class中studentnumber的平均值给结果集 Select max(studentnumber) as max_studentnumber from class :求某个字段的最大值,最小值.min是最小值. select * from class where studentnumber=(Select max(studentnumber) from class):求的最大值可以作为条件被引用. Select * from class where studentnumber=50(>50,>=50,<50,<=50,<>50):返回studentnumber=50 (>50,>=50,<50,<=50, 不等于50):的记录 Select * from class where studentnumber<>50 and teacher='li‘ 两个查询条件用and表示与,or表示或.
AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; delete from dbo.student where dbo.student.class not in (select class from dbo.class) -- Insert statements for trigger here


SET NOCOUNT ON;
select avg(age) from student where class=@class_name and born<@CheckDate -- Insert statements for procedure here
合集下载

《SQL基础知识培训》课件

《SQL基础知识培训》课件

3. 数据库操作
创建数据库 了解如何创建新的数据库,设置数据库的属性和权限。 修改数据库 学习修改数据库的方法,如更改数据库名称、大小和字符集等。 删除数据库 了解删除数据库的步骤和注意事项,包括删除数据库时的数据备份和恢复。
4. 数据表操作
创建数据表 学习创建数据表的方法,包括定义表结构、字段类型和约束等。 修改数据表 了解如何修改数据表的结构、字段和约束条件。 删除数据表 学习删除数据表的步骤和影响,包括删除表时的数据丢失和数据还原。
2. SQL语法
SQL语句的基本语法格式 了解SQL语句的基本结构,包括SELECT、INSERT、UPDATE和DELETE语句等。 数据类型 掌握不同的数据类型,如文本、数字、日期等,以及它们的存储和操作方法。 数据库对象 学习数据库对象的概念,如表、视图、索引和触发器等,以及它们的作用和用法。
《SQL基础知识培训》PPT课 件
# SQL基础知识培训
1. 概述
什么是SQL? SQL是一种用于管理和操作关系型数据库的编程语言。 SQL的发展历程 SQL最早由IBM的科学家在20世纪70年代开发,现已成为广泛使用的标准。 SQL的应用领域 SQL广泛应用于各个行业的数据库管理、数据分析和业务应用开发中。
5. 数据操作
插入数据 学习如何向数据表中插入新的数据录。 修改数据 了解如何更新和修改已有的数据记录。 删除数据 学习如何删除数据表中的数据记录。 查询数据 掌握查询语句的编写,以检索和过滤数据库中的数据。
6. SQL高级应用
多表连接查询 了解如何在多个数据表之间建立连接,以实现复杂的查询操作。 子查询 学习如何将查询结果作为子查询,嵌套在主查询中进行数据过滤。 聚合函数 掌握聚合函数的用法,如SUM、AVG、COUNT和MAX/MIN等。 窗口函数 学习窗口函数的概念和用法,用于实现基于分组的聚合计算。

OracleSQL基础培训PPT课件93页

OracleSQL基础培训PPT课件93页
• 课程目标是完成课程后可进行项目中大部分Oracle SQL开发
• 适用对象
• 学习过标准SQL,未使用过Oracle数据库的读者 • 适用过SQL Server或其他数据库,未使用过Oracle数据库的读者
目录
课程介绍 SQL介绍 DML基础 DDL基础 DCL基础 TL基础
SQL介绍
目录
课程介绍 SQL介绍 DML基础 DDL基础 DCL基础 TL基础
课程介绍
• 教程概述
• 本教程假设读者已了解关系型数据库基本原理,明白表、视图、 主键、索引、外键、约束、关联等基本概念
• 本教程定位是Oracle SQL简明、实用教程,偏向于SQL开发,若 进一步学习Oracle数据库设计,请参阅其他教程或书籍文档
DML基础
• 逻辑运算符号
• AND 两个为真则结果为真 • OR 一个为真即为真 • NOT 取相反的逻辑值
DML基础
• SELECT语句
• 完整SELECT语句 • 基本SELECT语句 • ORDER BY从句 • DISTINCT从句 • WHERE从句 • AND条件 • OR条件 • AND、OR复合条件 • IN 与 NOT IN • BETWEEN 与 NOT BETWEEN • LIKE与NOT LIKE • EXISITS 与 NOT EXISITS • GROUP BY从句 • HAVING从句 • JOINS关联
• 示例
• SELECT * FROM suppliers WHERE (city = ‘Chicago’ AND name = ‘IBM’) OR (city = ‘Seattle’);
DML基础-SELECT语句-IN 与 NOT IN
• 用途

SQL基础培训教材课件pptx-2024鲜版

SQL基础培训教材课件pptx-2024鲜版

2024/3/27
17
03
数据库创建与管理操作
Chapter
2024/3/27
18
创建数据库及设置参数
01
选择数据库管理系 统(如MySQL、 Oracle、SQL Server等)
02
确定数据库名称、 存储位置、字符集 等参数
03
使用CREATE DATABASE语句创 建数据库
04
设置数据库参数, 如最大连接数、日 志文件大小等
03
注意事项
2024/3/27
04
确保插入的数据类型与表定义的数据类型一致。
05
对于自增列,无需指定值,数据库会自动生成。
06
对于非空列,必须指定值,否则会报错。 34
更新数据策略及最佳实践
更新指定列的数据:使用UPDATE语句,指定表名、要更 新的列名及新的值,同时可以通过WHERE子句指定更新 条件。
2024/3/27
25
索引优化查询性能
索引的作用
加快数据的检索速度,提高查 询效率。
索引的创建原则
根据查询需求和表结构特点, 选择合适的字段创建索引。
索引的维护
定期分析和优化索引,避免索 引过多或不合理导致性能下降。
2024/3/27
26
实例演示:设计并实现一个用户信息表
01
表结构设计
根据实际需求设计用户信息表的字 段和数据类型。
2
01
SQL概述与基础知识
Chapter
2024/3/27
3
SQL定义及发展历程
SQL(Structured Query Language)是结构化查询语 言的缩写,用于管理关系数据库管理系统(RDBMS)。

sql常用语句

sql常用语句

sql常用语句SQL,即结构化查询语言,是一种计算机语言,可以读取、插入、更新和删除数据库中的数据,还可以定义、操纵和控制数据库的结构。

因此,SQL语言是一种非常常用的数据库语言,在许多数据库产品中都有应用。

首先,让我们了解一些SQL语言最常用的语句:SELECT:SELECT是SQL中最常用的语句,它可以选择数据表中的特定的一些数据,或者按照特定的条件选择数据表中的数据。

INSERT:INSERT语句用来插入新的行到指定的表中,可以同时插入多行。

UPDATE:UPDATE语句用于更新数据表中的数据,可以根据一定的条件更新多行数据,也可以将已存在的数据更新为新的数据。

DELETE:DELETE语句用于从数据表中删除数据,可以根据特定条件移除多行数据,也可以移除整个表中的数据。

CREATE TABLE:CREATE TABLE以用来创建新的数据表,它可以用来定义表中存储的数据类型,以及约束表中字段之间的关系。

ALTER TABLE:ALTER TABLE可以用来更改表结构,可以添加或删除数据表中的字段,也可以更改表中字段的属性。

DROP TABLE:DROP TABLE以用来删除数据表,可以将整个表删除,也可以将指定的列删除。

另外,SQL还提供了一些用于操纵数据的内建函数,如字段的求和、最大值、最小值、平均值等。

例如,SUM函数用于求指定字段的总和;AVG函数用于求指定字段的平均值;COUNT函数用于统计指定字段满足特定条件的记录数。

还有一些SQL语句,可以用来定义不同类型的数据结构,如数据表、视图、索引、存储过程、触发器等。

这些语句的使用可以极大地提高数据库的性能,并且使用它们可以确保数据的安全性和一致性。

此外,要操作SQL,需要通过SQL语句编辑器来输入SQL语句,并使用SQL服务器来执行SQL语句。

有许多SQL语句编辑器可以在各种操作系统上使用,如MS Access、MySQL、SQL Server等;而SQL 服务器则是实现SQL语句功能的核心部件。

常用的sql

常用的sql
58. 一张表,一旦分组 完成后,查询后只能得到组相关的信息。
59. 组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准)
60. 在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据
61. 在selecte统计函数中的字段,不能和普通的字段放在一起;
18.drop table tabname
19.6、说明:增加一个列
20.Alter table tabname add column col type
21.注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
22.7、说明:添加主键: Alter table tabname add primary key(col)
31.插入:insert into table1(field1,field2) values(value1,value2)
32.删除:delete from table1 where 范围
33.更新:update table1 set field1=value1 where 范围
34.查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
102. exec sp_executesql @sql
103.
104.注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引)

SQl数据库快速入门必须掌握的四大基本语句

SQl数据库快速入门必须掌握的四大基本语句

SQl数据库‎快速入门必须‎掌握的四大基‎本语句做一个系统的‎后台,基本上都少不‎了增删改查,作为一个新手‎入门,我们必须要掌‎握SQL 四条‎最基本的数据‎操作语句:Insert‎,Select‎,Update‎和Delet‎e!下面对这四个‎语句进行详细‎的剖析:熟练掌握SQ‎L是数据库用‎户的宝贵财富‎。

在本文中,我们将引导你‎掌握四条最基‎本的数据操作‎语句—SQL的核心‎功能—来依次介绍比‎较操作符、选择断言以及‎三值逻辑。

当你完成这些‎学习后,显然你已经开‎始算是真正S‎Q L入门了。

在我们开始之‎前,先使用CRE‎A TE TABLE语‎句来创建一个‎表。

DDL语句对‎数据库对象如‎表、列和视进行定‎义。

它们并不对表‎中的行进行处‎理,这是因为DD‎L语句并不处‎理数据库中实‎际的数据。

这些工作由另‎一类SQL语‎句—数据操作语言‎(DML)语句进行处理‎。

SQL中有四‎种基本的DM‎L操作:INSERT‎,SELECT‎,UPDATE‎和DELET‎E。

由于这是大多‎数SQL用户‎经常用到的,我们有必要在‎此对它们进行‎一一说明。

在图1中我们‎给出了一个名‎为EMPLO‎Y EES的表‎。

其中的每一行‎对应一个特定‎的雇员记录。

请熟悉这张表‎,我们在后面的‎例子中将要用‎到它。

INSERT‎语句用户可以用I‎N S ERT语‎句将一行记录‎插入到指定的‎一个表中。

例如,要将雇员Jo‎hn Smith 的‎记录插入到本‎例的表中,可以使用如下‎语句:INSERT‎INTO EMPLOY‎E ES VALUES‎('Smith','John','1980-06-10','Los Angles‎',16,45000);通过这样的I‎N SERT语‎句,系统将试着将‎这些值填入到‎相应的列中。

这些列按照我‎们创建表时定‎义的顺序排列‎。

SQl语句学习专题

QQ;82044420SQL语句集锦--语句功能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据--数据定义CREATE TABLE --创建一个数据库表DROP TABLE --从数据库中删除表ALTER TABLE --修改数据库表结构CREATE VIEW --创建一个视图DROP VIEW --从数据库中删除视图CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引CREATE PROCEDURE --创建一个存储过程DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域ALTER DOMAIN --改变域定义DROP DOMAIN --从数据库中删除一个域--数据控制GRANT --授予用户访问权限DENY --拒绝用户访问REVOKE --解除用户访问权限--事务控制COMMIT --结束当前事务ROLLBACK --中止当前事务SET TRANSACTION --定义当前事务数据访问特征--程序化SQLDECLARE --为查询设定游标EXPLAN --为查询描述数据访问计划OPEN --检索查询结果打开一个游标FETCH --检索一行查询结果CLOSE --关闭游标PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句DESCRIBE --描述准备好的查询---局部变量declare @id char(10)--set @id = '10010001'select @id = '10010001'---全局变量---必须以@@开头--IF ELSEdeclare @x int @y int @z intselect @x = 1 @y = 2 @z=3if @x > @yprint 'x > y' --打印字符串'x > y'else if @y > @zprint 'y > z'else print 'z > y'--CASEuse panguupdate employeeset e_wage =casewhen job_level = ’1’ then e_wage*1.08 when job_level = ’2’ then e_wage*1.07 when job_level = ’3’ then e_wage*1.06 else e_wage*1.05end--WHILE CONTINUE BREAKdeclare @x int @y int @c intselect @x = 1 @y=1while @x < 3beginprint @x --打印变量x 的值while @y < 3beginselect @c = 100*@x + @yprint @c --打印变量c 的值select @y = @y + 1endselect @x = @x + 1select @y = 1end--WAITFOR--例等待1 小时2 分零3 秒后才执行SELECT 语句waitfor delay ’01:02:03’select * from employee--例等到晚上11 点零8 分后才执行SELECT 语句waitfor time ’23:08:00’select * from employee***SELECT***select *(列名) from table_name(表名) where column_name operator valueex:(宿主)select * from stock_information where stockid = str(nid)stockname = 'str_name'stockname like '% find this %'stockname like '[a-zA-Z]%' --------- ([]指定值的范围)stockname like '[^F-M]%' --------- (^排除指定范围)--------- 只能在使用like关键字的where子句中使用通配符)or stockpath = 'stock_path'or stocknumber < 1000and stockindex = 24not stock*** = 'man'stocknumber between 20 and 100stocknumber in(10,20,30)order by stockid desc(asc) --------- 排序,desc-降序,asc-升序 order by 1,2 --------- by列号stockname = (select stockname from stock_information where stockid = 4)--------- 子查询--------- 除非能确保内层select只返回一个行的值,--------- 否则应在外层where子句中用一个in限定符select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_nameselect stockname , "stocknumber" = count(*) from table_name group by stockname--------- group by 将表按行分组,指定列中有相同的值having count(*) = 2 --------- having选定指定的组select *from table1, table2where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示table1.id =* table2.id -------- 右外部连接select stockname from table1union [all] ----- union合并查询结果集,all-保留重复行select stockname from table2***insert***insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")value (select Stockname , Stocknumber fromStock_table2)---value为select语句***update***update table_name set Stockname = "xxx" [where Stockid = 3]Stockname = defaultStockname = nullStocknumber = Stockname + 4***delete***delete from table_name where Stockid = 3truncate table_name ----------- 删除表中所有行,仍保持表的完整性 drop table table_name --------------- 完全删除表***alter table*** --- 修改数据库表结构alter table database.owner.table_name add column_name char(2) null .....sp_help table_name ---- 显示表已有特征create table table_name (name char(20), age smallint, lname varchar(30))insert into table_name select ......... ----- 实现删除列的方法(创建新表)alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束***function(/*常用函数*/)***----统计函数----AVG --求平均值COUNT --统计数目MAX --求最大值MIN --求最小值SUM --求和--AVGuse panguselect avg(e_wage) as dept_avgWagefrom employeegroup by dept_id--MAX--求工资最高的员工姓名use panguselect e_namefrom employeewhere e_wage =(select max(e_wage)from employee)--STDEV()--STDEV()函数返回表达式中所有数据的标准差--STDEVP()--STDEVP()函数返回总体标准差--VAR()--VAR()函数返回表达式中所有值的统计变异数--VARP()--VARP()函数返回总体变异数----算术函数----/***三角函数***/SIN(float_expression) --返回以弧度表示的角的正弦COS(float_expression) --返回以弧度表示的角的余弦TAN(float_expression) --返回以弧度表示的角的正切COT(float_expression) --返回以弧度表示的角的余切/***反三角函数***/ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角ATAN2(float_expression1,float_expression2)--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角DEGREES(numeric_expression)--把弧度转换为角度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型EXP(float_expression) --返回表达式的指数值LOG(float_expression) --返回表达式的自然对数值LOG10(float_expression)--返回表达式的以10 为底的对数值SQRT(float_expression) --返回表达式的平方根/***取近似值函数***/CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型FLOOR(numeric_expression) --返回<=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型ABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型SIGN(numeric_expression) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型--与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型PI() --返回值为π即3.1415926535897936RAND([integer_expression]) --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数----字符串函数----ASCII() --函数返回字符表达式最左端字符的ASCII 码值CHAR() --函数用于将ASCII 码转换为字符--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值LOWER() --函数把字符串全部转换为小写UPPER() --函数把字符串全部转换为大写STR() --函数把数值型数据转换为字符型数据LTRIM() --函数把字符串头部的空格去掉RTRIM() --函数把字符串尾部的空格去掉LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置SOUNDEX() --函数返回一个四位字符码--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异--0 两个SOUNDEX 函数返回值的第一个字符不同--1 两个SOUNDEX 函数返回值的第一个字符相同--2 两个SOUNDEX 函数返回值的第一二个字符相同--3 两个SOUNDEX 函数返回值的第一二三个字符相同--4 两个SOUNDEX 函数返回值完全相同QUOTENAME() --函数返回被特定字符括起来的字符串/*select quotename('abc', '{') quotename('abc')运行结果如下----------------------------------{{abc} [abc]*/REPLICATE() --函数返回一个重复character_expression 指定次数的字符串/*select replicate('abc', 3) replicate( 'abc', -2)运行结果如下----------- -----------abcabcabc NULL*/REVERSE() --函数将指定的字符串的字符排列顺序颠倒REPLACE() --函数返回被替换了指定子串的字符串/*select replace('abc123g', '123', 'def')运行结果如下----------- -----------abcdefg*/SPACE() --函数返回一个有指定长度的空白字符串STUFF() --函数用另一子串替换字符串指定位置长度的子串----数据类型转换函数----CAST() 函数语法如下CAST() (<expression> AS <data_ type>[ length ])CONVERT() 函数语法如下CONVERT() (<data_ type>[ length ], <expression> [, style])select cast(100+99 as char) convert(varchar(12), getdate())运行结果如下------------------------------ ------------199 Jan 15 2000----日期函数----DAY() --函数返回date_expression 中的日期值MONTH() --函数返回date_expression 中的月份值YEAR() --函数返回date_expression 中的年份值DATEADD(<datepart> ,<number> ,<date>)--函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期DATEDIFF(<datepart> ,<number> ,<date>)--函数返回两个指定日期在datepart 方面的不同之处DATENAME(<datepart> , <date>) --函数以字符串的形式返回日期的指定部分DATEPART(<datepart> , <date>) --函数以整数值的形式返回日期的指定部分GETDATE() --函数以DATETIME 的缺省格式返回系统当前的日期和时间----系统函数----APP_NAME() --函数返回当前执行的应用程序的名称COALESCE() --函数返回众多表达式中第一个非NULL 表达式的值COL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值COL_NAME(<table_id>, <column_id>) --函数返回表中指定字段的名称即列名DATALENGTH() --函数返回数据表达式的数据的实际长度DB_ID(['database_name']) --函数返回数据库的编号DB_NAME(database_id) --函数返回数据库的名称HOST_ID() --函数返回服务器端计算机的名称HOST_NAME() --函数返回服务器端计算机的名称IDENTITY(<data_type>[, seed increment]) [AS column_name])--IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中/*select identity(int, 1, 1) as column_nameinto newtablefrom oldtable*/ISDATE() --函数判断所给定的表达式是否为合理日期ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换ISNUMERIC() --函数判断所给定的表达式是否为合理的数值NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值NULLIF(<expression1>, <expression2>)--NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值阅读全文(22168) | 回复(36) | 引用(1)精妙SQL语句晴天发表评论于2004-10-26 11:16:00精妙SQL语句说明:复制表(只复制结构,源表名:a 新表名:b)SQL: select * into b from a where 1<>1说明:拷贝表(拷贝数据,源表名:a 目标表名:b)SQL: insert into b(a, b, c) select d,e,f from b;说明:显示文章、提交人和最后回复时间SQL: select a.title,ername,b.adddate from table a,(selectmax(adddate) adddate from table where table.title=a.title) b说明:外连接查询(表名1:a 表名2:b)SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c说明:日程安排提前五分钟提醒SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5说明:两张关联表,删除主表中已经在副表中没有的信息SQL:delete from info where not exists ( select * from infobz whereinfo.infid=infobz.infid )说明:--SQL:SELECT A.NUM, , B.UPD_DATE, B.PREV_UPD_DATEFROM TABLE1,(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATEFROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHANDFROM TABLE2WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X, (SELECT NUM, UPD_DATE, STOCK_ONHANDFROM TABLE2WHERE TO_CHAR(UPD_DATE,'YYYY/MM') =TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') || '/01','YYYY/MM/DD') - 1, 'YYYY/MM') ) Y,WHERE X.NUM = Y.NUM (+)AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND ) B WHERE A.NUM = B.NUM说明:--SQL:select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称='"&strdepartmentname&"' and 专业名称='"&strprofessionname&"' order by 性别,生源地,高考总成绩说明:从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)SQL:SELECT erper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS telyear,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS JAN, SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS FRI, SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS MAR, SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS APR, SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS MAY, SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS JUE, SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS JUL, SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS AGU, SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS SEP, SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT, SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS NOV, SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS DEC FROM (SELECT erper, a.tel, a.standfee, b.telfeedate, b.factration FROM TELFEESTAND a, TELFEE bWHERE a.tel = b.telfax) aGROUP BY erper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy')说明:四表联查问题:SQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....说明:得到表中最小的未使用的ID号SQL:SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleIDFROM HandleWHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)详细的请见原贴:/Expert/topic/1546/1546652.xml?temp=.3089716 个人主页 | 引用 | 返回回复:[分享]SQl语句学习专题晴天发表评论于2004-10-26 11:16:00: 我在ms sql中建了一个表,可由于种种原因有些记录重复了: 记录完全的一模一样。

常用的SQL语句

常用的SQL语句下面列举了一些我们在开发中常常会使用到的SQL语句,供大家参考学习。

1. 查询所有数据:SELECT * FROM table_name;2. 查询指定列数据:SELECT column1, column2 FROM table_name;3. 带条件查询:SELECT * FROM table_name WHERE condition;4. 带条件查询并排序:SELECT * FROM table_name WHERE condition ORDER BY column_name ASC/DESC;5. 带分组的查询:SELECT column1, COUNT(*) FROM table_name GROUP BY column1;6. 带分组和排序的查询:SELECT column1, COUNT(*) FROM table_name GROUP BY column1 ORDER BY COUNT(*) DESC;7. 带聚合函数的查询:SELECT AVG(column1), MAX(column2), MIN(column3) FROM table_name;8. 带子查询的查询:SELECT * FROM table_name WHERE column1 IN (SELECT column1 FROM other_table);9. 带连接条件的查询:SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column2;10. 带连接和排序条件的查询:SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column2 ORDER BY table1.column2 ASC;11. 带连接和分组条件的查询:SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column2 GROUP BY table1.column2;12. 带连接和聚合函数条件的查询:SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column2 GROUP BY table1.column2 HAVING AVG(table2.column3) > 0;13. 插入数据:INSERT INTO table_name (column1, column2) VALUES (value1, value2);14. 更新数据:UPDATE table_name SET column1 = value1 WHERE condition;15. 删除数据:DELETE FROM table_name WHERE condition;16. 清空表数据:TRUNCATE TABLE table_name;17. 创建表:CREATE TABLE table_name (column1 datatype, column2 datatype, ...);18. 修改表结构:ALTER TABLE table_name ADD column_name datatype;19. 删除表:DROP TABLE table_name;20. 查看表结构:DESCRIBE table_name;21. 查看表数据量:SELECT COUNT(*) FROM table_name;22. 查看表索引:SHOW INDEX FROM table_name;23. 创建索引:CREATE INDEX index_name ON table_name (column_name);24. 删除索引:DROP INDEX index_name ON table_name;25. 批量插入数据:INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4), ...;26. 批量更新数据:UPDATE table_name SET column1 = value1 WHERE condition, column2 = value2 WHERE condition, ...;27. 批量删除数据:DELETE FROM table_name WHERE condition, ...;28. 分页查询:SELECT * FROM table_name LIMIT offset, limit;29. 子查询嵌套查询:(SELECT column1 FROM other_table WHERE condition) IN (SELECT column1 FROM another_table WHERE condition);30. UNION操作符查询:SELECT * FROM table1 UNION SELECT * FROM table2。

sql 语句简易教程

sql 语句简易教程SQL语句简易教程1. 什么是SQL•SQL全称为Structured Query Language(结构化查询语言)•是一种用于管理关系型数据库的语言•可以使用SQL语句对数据库进行查询、插入、更新和删除操作2. SQL语句的基本结构•SQL语句由关键字、表名、字段、条件等组成•常见的SQL语句包括:SELECT、INSERT、UPDATE和DELETE SELECT语句•用于从数据库中查询数据•示例:SELECT * FROM 表名;SELECT 列名1, 列名2, ... FROM 表名;INSERT语句•用于向数据库中插入新数据•示例:INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);UPDATE语句•用于更新数据库中的现有数据•示例:UPDATE 表名 SET 列1 = 值1, 列2 = 值2 WHERE 条件; DELETE语句•用于从数据库中删除数据•示例:DELETE FROM 表名 WHERE 条件;3. SQL语句中的常见条件•条件用于过滤查询结果•常见的条件操作符有:=、<>、<、>、<=、>=等AND条件•用于同时满足多个条件•示例:SELECT * FROM 表名 WHERE 条件1 AND 条件2;OR条件•用于满足多个条件中的任意一个•示例:SELECT * FROM 表名 WHERE 条件1 OR 条件2;IN条件•用于指定某个字段的值在一组值中•示例:SELECT * FROM 表名 WHERE 列名 IN (值1, 值2, ...); LIKE条件•用于模糊匹配•示例:SELECT * FROM 表名 WHERE 列名 LIKE '关键词%';4. SQL语句中的常见操作排序•可以使用ORDER BY子句对查询结果进行排序•示例:SELECT * FROM 表名 ORDER BY 列名 ASC/DESC;分页•可以使用LIMIT子句对查询结果进行分页•示例:SELECT * FROM 表名 LIMIT 偏移量, 数量;聚合•可以使用聚合函数(如SUM、COUNT、AVG、MIN和MAX)对查询结果进行统计•示例:SELECT COUNT(*) FROM 表名;SELECT SUM(列名) FROM 表名;5. SQL语句的进阶用法•SQL语句还支持表连接、子查询、视图、索引等高级用法•可以进一步学习和探索这些用法以更好地应对复杂的数据操作需求以上是关于SQL语句简易教程的详细整理,希望对你学习SQL有所帮助。

SQL基本语句培训 思迅培训课件


Select top 1 * from bi_t_item_info
• 插入一条类别
insert into t_bd_item_cls(item_clsno,item_clsname,item_flag)
values
('22' ,'新类别', '0')
• 修改一条记录
Update t_bd_item_cls Set item_clsno=‘23’ Where item_clsno=‘22’
作业:1、查询修改过供应商的商品编码、名称、原供应商、新供 应商、销售数量、销售金额、操作日期
2、供应商销售汇总报表(供应商编号、供应商名称、销售 金额、销售成本、毛利)
谢谢支持 请评分:
from t_bd_item_info a,t_bd_item_cls b, t_bd_supcust_info c where a.item_clsno=b.item_clsno and a.main_supcust=c.supcust_no
• 商品销售类别汇总报表
SELECT substring(c.item_clsno, 1, 2) as item_clsno_grandfather, b.item_clsname, sum(a.sale_qty) as sale_qty, sum(a.sale_amt) as sale_amt, sum(a.ret_qty) as ret_qty, sum(a.ret_amt) as ret_amt,
• Count SELECT COUNT("栏位") FROM 表名
• Group By SELECT "栏位1", SUM("栏位2") FROM 表名GROUP BY " 栏位1"
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档