sql查询语句

合集下载

SQL基础复习03--数据查询SQL语句(单表查询)

SQL基础复习03--数据查询SQL语句(单表查询)

SQL基础复习03--数据查询SQL语句(单表查询)参考教材《数据库系统:原理、设计与编程(MOOC版)》,陆鑫张凤荔陈安龙终于到查询这⼀块了。

3.4 数据查询SQL语句3.4.1 查询语句基本结构SELECT [ALL/DISTINCT] <⽬标列>[,<⽬标列>...][INTO <新表>]FROM <表名>[,<表名>...][WHERE <条件表达式>][GROUP BY <列名> [HAVING <条件表达式>]ORDER BY <列名> [ASC/DESC]];SELECT语句由多种字句组成:1. SELECT⼦句,⽤来指明从数据库表中需要查询的⽬标列。

ALL是默认操作,获取所有满⾜条件的数据⾏;DISTINCT⽤来去掉结果集中的重复数据⾏;<⽬标列>为被查询表的指定列名,可以有多个。

2. INTO⼦句,⽤来将被查询的结果集数据插⼊新表。

3. FROM⼦句,⽤来指定被查询的数据来⾃哪个表或哪些表。

多表⽤逗号分隔。

4. WHERE⼦句,⽤来给出查询的检索条件,多个条件之间可以⽤AND、OR进⾏连接。

5. GROUP BY⼦句,⽤来对查询结果进⾏分组,并进⾏分组统计等处理,在分组中,还可以使⽤HAVING关键词定义分组条件。

6. ORDER BY⼦句,⽤来对查询结果集进⾏排序。

ASC当然是升序,DESC是降序。

默认为ASC。

从SELECT语句的操作结果看,<⽬标列>实现对关系表的投影操作,WHERE <条件表达式>实现对关系表的元组选择操作。

当前Student表的全部数据:下⾯将会对该表进⾏⼀系列查询操作3.4.2 从单表读取指定列SELECT <⽬标列>[,<⽬标列>...]FROM <表名>;例3-191. 从Student表中读取学⽣的学号、姓名、专业三列数据:SELECT StudentID, StudentName, MajorFROM Student;GO2. 从Student表中查询所有列数据:SELECT *FROM Student;GO3. 只查Major数据:SELECT MajorFROM Student;GO倘若只想查出不同的专业名称,可以消除重复⾏,⽤DISTINCT:SELECT DISTINCT MajorFROM Student;GO3.4.3 从单表读取指定⾏SELECT *FROM <表名>WHERE <条件表达式>;例3-20从Student表中读取专业为“软件⼯程”,性别为“男”的学⽣数据:SELECT *FROM StudentWHERE Major='软件⼯程' AND StudentGender='男';GO3.4.4 从单表读取指定⾏和列SELECT <⽬标列> [,<⽬标列>...]FROM <表名>WHERE <条件表达式>;例3-21从Student表中读取专业为“软件⼯程”,性别为“男”的学⽣的学号、姓名、性别、专业四列的数据:SELECT StudentID, StudentName, StudentGender, MajorFROM StudentWHERE Major='软件⼯程' AND StudentGender='男';GO3.4.5 WHERE⼦句条件在WHERE⼦句条件中,可以⽤BETWEEN...AND关键词来限定列值范围,还可以⽤关键字LIKE与通配符来限定查询范围,NOT LIKE⽤于给出不在范围的条件。

SQL查询语句

SQL查询语句
FROM titles
WHERE ytd_sales>10000
) AS t
WHERE a.au_id=ta.au_id
AND ta.title_id=t.title_id
此例中,将SELECT返回的结果集合给予一别名t,然后再符:
<#为虚拟表,可一跨数据库创建!>
8.更改列表名显示的查询
select 字段名1 as ''A'',字段名2 as ''B'' from 表名
select "A"=字段名1,"B"=字段名2 from 表名
select 字段名1"A",字段名2"B" from 表名
Sum:计算总和
Stdev:计算统计标准偏差
Var:统计方差
13.汇总查询<Compute子句>
(1).compute:
Select 字段名列表 From 表名 [where 条件表达式] Compute 汇总表达式
Select cno,sno,degree From score Compute avg(degree)
①执行Where子句,从表中选取行;
②由Group By分组;
③执行Having子句选取满足的分组条件。
---------------------------------------{那我们如何对函数产生的值来设定条件呢?
举例来说,我们可能只需要知道哪些店的营业额有超过 $1,500。在这个情况下,
SELECT "栏位1", SUM("栏位2")

sql的语句类型

sql的语句类型

sql的语句类型
SQL语句主要分为以下几种类型:
1. 数据查询语句(SELECT):用于从数据库中检索数据,常用于查询表中的记录。

2. 数据插入语句(INSERT):用于向数据库的表中插入新的记录。

3. 数据更新语句(UPDATE):用于更新数据库表中的已有记录。

4. 数据删除语句(DELETE):用于从数据库表中删除记录。

5. 数据定义语句(CREATE、ALTER、DROP):用于创建、修改、删除数据库、表、列等数据库对象的语句。

6. 数据控制语句(GRANT、REVOKE):用于授予或撤销用户对数据库对象的权限。

7. 事务控制语句(COMMIT、ROLLBACK):用于管理事务的提交和回滚。

8. 视图操作语句(CREATE VIEW、ALTER VIEW、DROP VIEW):用于创建、修改、删除视图。

9. 索引操作语句(CREATE INDEX、ALTER INDEX、DROP INDEX):用于创建、修改、删除索引。

10. 其他特定数据库系统的语句:不同的数据库系统可能会有一些特定的语句,用于执行特定的操作,如存储过程、触发器等。

SQL查询语句大全

SQL查询语句大全

SQL查询语句大全语句功能1、数据操作Select --从数据库表中检索数据行和列Insert --向数据库表添加新数据行Delete --从数据库表中删除数据行Update --更新数据库表中的数据2、数据定义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 --从数据库中删除一个域3、数据控制GRANT --授予用户访问权限DENY --拒绝用户访问REVOKE --解除用户访问权限4、事务控制COMMIT --结束当前事务ROLLBACK --中止当前事务SET TRANSACTION --定义当前事务数据访问特征5、程序化SQLDECLARE --为查询设定游标EXPLAN --为查询描述数据访问计划OPEN --检索查询结果打开一个游标FETCH --检索一行查询结果CLOSE --关闭游标PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句DESCRIBE --描述准备好的查询6、局部变量declare @id char(10)--set @id = '10010001'select @id = '10010001'7、全局变量---必须以@@开头8、IF 语句declare @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'9、CASE 语句use 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.05end10、WHILE CONTINUE BREAK 语句declare @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 = 1end11、WAITFOR语句--例等待1 小时2 分零3 秒后才执行Select 语句waitfor delay ’01:02:03’select * from employee--例等到晚上11 点零8 分后才执行Select 语句waitfor time ’23:08:00’select * from employee12、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 stocksex = '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 table213、insert 语句insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")value (select Stockname , Stocknumber from Stock_table2)---value为select语句14、update语句update table_name set Stockname = "xxx" [where Stockid = 3]Stockname = defaultStockname = nullStocknumber = Stockname + 415、delete语句delete from table_name where Stockid = 3truncate table_name ----------- 删除表中所有行,仍保持表的完整性drop table table_name --------------- 完全删除表16、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约束17、常用函数----统计函数----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 间的随机浮点数18、字符串函数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() --函数用另一子串替换字符串指定位置长度的子串19、数据类型转换函数----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 200020、日期函数----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 的缺省格式返回系统当前的日期和时间21、系统函数----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 的值22、数学函数1.绝对值S:select abs(-1) valueO:select abs(-1) value from dual2.取整(大)S:select ceiling(-1.001) valueO:select ceil(-1.001) value from dual3.取整(小)S:select floor(-1.001) valueO:select floor(-1.001) value from dual4.取整(截取)S:select cast(-1.002 as int) valueO:select trunc(-1.002) value from dual5.四舍五入S:select round(1.23456,4) value 1.23460O:select round(1.23456,4) value from dual 1.23466.e为底的幂S:select Exp(1) value 2.7182818284590451O:select Exp(1) value from dual 2.718281827.取e为底的对数S:select log(2.7182818284590451) value 1O:select ln(2.7182818284590451) value from dual; 1 8.取10为底对数S:select log10(10) value 1O:select log(10,10) value from dual; 19.取平方S:select SQUARE(4) value 16O:select power(4,2) value from dual 1610.取平方根S:select SQRT(4) value 2O:select SQRT(4) value from dual 211.求任意数为底的幂S:select power(3,4) value 81O:select power(3,4) value from dual 8112.取随机数S:select rand() valueO:select sys.dbms_random.value(0,1) value from dual;13.取符号S:select sign(-8) value -1O:select sign(-8) value from dual -1----------数学函数14.圆周率S:Select PI() value 3.1415926535897931O:不知道15.sin,cos,tan 参数都以弧度为单位例如:select sin(PI()/2) value 得到1(SQLServer)16.Asin,Acos,Atan,Atan2 返回弧度17.弧度角度互换(SQLServer,Oracle不知道) DEGREES:弧度-〉角度RADIANS:角度-〉弧度---------数值间比较18. 求集合最大值S:select max(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select greatest(1,-2,4,3) value from dual19. 求集合最小值S:select min(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select least(1,-2,4,3) value from dual20.如何处理null值(F2中的null以10代替)S:select F1,IsNull(F2,10) value from TblO:select F1,nvl(F2,10) value from Tbl--------数值间比较21.求字符序号S:select ascii('a') valueO:select ascii('a') value from dual22.从序号求字符S:select char(97) valueO:select chr(97) value from dual23.连接S:select '11'+'22'+'33' valueO:select CONCAT('11','22')||33 value from dual 23.子串位置 --返回3S:select CHARINDEX('s','sdsq',2) valueO:select INSTR('sdsq','s',2) value from dual23.模糊子串的位置 --返回2,参数去掉中间%则返回7S:select patindex('%d%q%','sdsfasdqe') valueO:oracle没发现,但是instr可以通过第四霾问刂瞥鱿执问?BR>select INSTR('sdsfasdqe','sd',1,2) value from dual 返回624.求子串S:select substring('abcd',2,2) valueO:select substr('abcd',2,2) value from dual25.子串代替返回aijklmnefS:Select STUFF('abcdef', 2, 3, 'ijklmn') valueO:Select Replace('abcdef', 'bcd', 'ijklmn') value from dual26.子串全部替换S:没发现O:select Translate('fasdbfasegas','fa','我' ) value from dual27.长度S:len,datalengthO:length28.大小写转换 lower,upper29.单词首字母大写S:没发现O:select INITCAP('abcd dsaf df') value from dual30.左补空格(LPAD的第一个参数为空格则同space函数)S:select space(10)+'abcd' valueO:select LPAD('abcd',14) value from dual31.右补空格(RPAD的第一个参数为空格则同space函数)S:select 'abcd'+space(10) valueO:select RPAD('abcd',14) value from dual32.删除空格S:ltrim,rtrimO:ltrim,rtrim,trim33. 重复字符串S:select REPLICATE('abcd',2) valueO:没发现34.发音相似性比较(这两个单词返回值一样,发音相同)S:Select SOUNDEX ('Smith'), SOUNDEX ('Smythe')O:Select SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dualSQLServer中用Select DIFFERENCE('Smithers', 'Smythers') 比较soundex的差返回0-4,4为同音,1最高23、日期函数35.系统时间S:select getdate() valueO:select sysdate value from dual36.前后几日直接与整数相加减。

mssql 查询语法

mssql 查询语法

mssql 查询语法
MSSQL(Microsoft SQL Server)是一种关系型数据库管理系统,其查询语法与标准SQL(Structured Query Language)类似。

以下是常用的MSSQL查询语法:
1. SELECT语句:用于从表中检索数据。

示例:SELECT 列名1, 列名2 FROM 表名WHERE 条件;
2. INSERT语句:用于向表中插入新的行数据。

示例:INSERT INTO 表名(列名1, 列名2) VALUES (值1, 值
2);
3. UPDATE语句:用于更新表中现有行的数据。

示例:UPDATE 表名SET 列名1 = 新值1, 列名2 = 新值2 WHERE 条件;
4. DELETE语句:用于从表中删除行数据。

示例:DELETE FROM 表名WHERE 条件;
5. JOIN语句:用于合并多个表的数据。

示例:SELECT 列名FROM 表名1 INNER JOIN 表名2 ON 表名1.列名= 表名2.列名;
6. GROUP BY语句:用于对结果进行分组统计。

示例:SELECT 列名, COUNT(*) FROM 表名GROUP BY 列名;
7. ORDER BY语句:用于对结果进行排序。

示例:SELECT 列名FROM 表名ORDER BY 列名
ASC/DESC;
8. WHERE语句:用于筛选满足条件的数据。

示例:SELECT 列名FROM 表名WHERE 条件;
以上是一些常用的MSSQL查询语法,希望对您有帮助。

如果有更具体的问题,请提供详细信息以便给出更精确的答案。

数据库SQL查询语句大全

数据库SQL查询语句大全

经典SQL查询语句大全一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat'--- 开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_old definition only5、说明:删除新表drop table tabname6、说明:增加一个列Alter table tabname add column col type注:列增加后将不能删除。

DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

7、说明:添加主键:Alter table tabname add primary key(col)说明:删除主键: Alter table tabname drop primary key(col)8、说明:创建索引:create [unique] index idxname on tab name(col….) 删除索引:drop index idxname注:索引是不可更改的,想更改必须删除重新建。

数据库sql查询语句大全

数据库sql查询语句大全

数据库sql查询语句大全数据库SQL查询语句是用来从数据库中检索数据的命令。

以下是一些常见的SQL查询语句大全:1. SELECT语句,用于从数据库中选择数据。

例如,SELECT FROM 表名;2. WHERE子句,用于过滤数据,只返回满足特定条件的行。

例如,SELECT FROM 表名 WHERE 列名 = '条件';3. ORDER BY子句,用于对结果集按照指定列进行排序。

例如,SELECT FROM 表名 ORDER BY 列名;4. GROUP BY子句,用于对结果集按照指定列进行分组。

例如,SELECT 列名1, 列名2 FROM 表名 GROUP BY 列名1;5. HAVING子句,用于过滤分组后的数据。

例如,SELECT 列名1, COUNT(列名2) FROM 表名 GROUP BY 列名1 HAVING COUNT(列名2) > 10;6. JOIN子句,用于在多个表之间建立关联。

例如,SELECT FROM 表名1 INNER JOIN 表名2 ON 表名1.列名 = 表名2.列名;7. UNION操作符,用于合并两个或多个SELECT语句的结果集。

例如,SELECT 列名1 FROM 表名1 UNION SELECT 列名2 FROM 表名2;8. INSERT INTO语句,用于向数据库表中插入新记录。

例如,INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2);9. UPDATE语句,用于更新数据库表中的记录。

例如,UPDATE 表名 SET 列名 = 值 WHERE 条件;10. DELETE FROM语句,用于从数据库表中删除记录。

例如,DELETE FROM 表名 WHERE 条件;以上是一些常见的SQL查询语句,它们可以帮助用户从数据库中检索、过滤、排序、分组和更新数据。

当然,SQL语言还有很多其他的功能和语法,这些只是其中的一部分。

常用的SQL语句分析

常用的SQL语句分析

事务的回滚与提交
事务的回滚
在事务执行过程中如果出现错误或需要撤销事务中的所有更改,可以使用ROLLBACK 语句来回滚事务。
事务的提交
当事务中的所有操作都成功执行后,可以使用COMMIT语句来提交事务,使事务中的 所有更改永久生效。
事务的隔离级别
读未提交
最低的隔离级别,允许一个事务读取 另一个未提交的事务的数据。
读已提交
允许一个事务读取另一个已提交的事 务的数据。
可重复读
在一个事务中多次读取同一数据会看 到相同的数据,即使其他事务在此期 间修改了该数据。
串行化
最高的隔离级别,强制事务串行执行, 避免了其他并发事务的干扰,但可能 导致性能下降。
感谢您的观看
THANKS
年后的日期。
注意事项
日期函数的具体语法和可用选项 可能因数据库系统而异,需要查 阅具体数据库的文档。
06 SQL事务处理
事务的开始与结束
事务的开始
使用BEGIN或START TRANSACTION语 句来开始一个新的事务。
VS
事务的结束
使用COMMIT语句来提交事务,使事务 中的所有更改永久生效。如果需要撤销事 务中的所有更改,可以使用ROLLBACK语 句来回滚事务。
总结词:删除指定条 件下的单条记录
详细描述:使用 DELETE语句结合 WHERE子句,可以删 除满足特定条件的单 条记录。例如,从名 为"users"的表中删除 ID为5的用户记录
```sql
DELETE FROM users ``` WHERE id = 5;
删除多条记录
01
02
03
总结词:删除满足指定 条件的所有记录
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据定义语言DDLcreate 数据库对象的创建alter 修改数据库对象drop 删除数据库对象truncate 清空表数据数据操纵语言DMLinsert 插入操作update 更新操作delete 删除操作数据查询语言DQLselect 查询操作事务控制语句DCLcommit 提交数据rollback 数据回滚savepoint 保存点数据类型数字:number(n) 数字( 最长n位)number(n , m) 浮点数( 总长n为, 小数点后m位) 例:number(7,2) 表示最大数为字符串:char(n) 表示定长字符串( 方便查询)最长放入n个字符, 放入的数据如果不够n个字符则补空格, 无论如何都占n个字符长度。

varchar(n) 表示变长字符串( 节省空间)最长放入n个字符, 放入的数据是几个长度就占多大空间varchar2(n) Oracle自己定义的变长字符串日期date 日期三种SQL语句总结建表create table 表名(列名1 列类型,列名2 列类型,…..);插入数据insert into 表名values(列值, ……);查询select * from 表名;Sql语句中函数的使用nvl(d1 , d2)作用:如果d1为null则用d2替代,nvl函数的两个参数可以是数字、字符或日期, 但两个参数的数据类型必须一致。

例子:查询emp表中所有员工的工资,若工资为空,则返回0;Select nvl(salary,0)from emp ;“||” 符号“||” 符号表示两个数据串接起来, 类似于Java中的两个字符串之间的+号;例子:连接职员表中的职员名字、职位、薪水,列之间用逗号连接,列头显示成OUT_PUT 提示1: 字符串连接符|| 提示2:用别名控制列头显示select ename || ', ' || job || ', ' || salary OUT_PUT from emp;as 复制表例子:把emp_yyy表的内容复制到新建的emp_xxx表中;SQL > create table emp_xxxasselect * from emp_yyy ;distinct关键字注意:distinct必须( 只能)跟在select后边例子:显示出职员表中的不重复的职位;select distinct job from emp;lower()函数将字符数据转换为小写( 如果不知道职位的大小写形式, 可以使用lower函数, 忽略大小写)例子:查找职位为“analyst”的员工Select * from emp where lower(job)=‘analyst’;upper()函数将数据转换为大写例子:忽略大小写, 查找职位为“analyst”的员工select * from emp_xxx where upper(job) = 'ANALYST' ;between …and…在区间中:between 低值and 高值闭区间:[低值, 高值]例子:薪水大于5000并且小于10000的员工数据in( 列表)例子:列出职位是Manager或者Analyst的员工模糊匹配like %“% ”表示0到多个字符, 跟like配合使用“_”下划线表示一个字符例子:列出职位中第二个字符是a的员工数据s elect * from emp_xxx where job like '_a%' ;count(1)例子:查询数据库中有多少个名字中包含'EMP' 的表select count(1) from user_tables where table_name like '%EMP%' ;SQL> select count(1) from emp_xxx where hiredate is not null;等同于SQL> select count(hiredate) from emp_xxx;--注意:count函数忽略空值count(*)例子:查询数据库中有多少个名字中以'S_' 开头的表select count(*) from user_tables where table_name like 'S\_%' escape '\' ;如果要查询的数据中有特殊字符( 比如_或% ), 在做模糊查询时, -- 需要加上\符号表示转义, 并且用escape短语指明转义字符\;is null例子:查询哪些员工没有奖金is not null例子:哪些员工有奖金select * from emp_xxx where bonus is not null ;薪水不在5000至8000的员工select * from emp_xxx where salary not between 5000 and 8000 ;not in (list)例子:不是部门20和部门30的员工select * from emp_xxx where depno not in( 20 , 30 ) ;round( 数字, 小数点后的位数)用于数字的四舍五入例子:计算金额的四舍五入trunc()trunc( 数字, 小数点后的位数)用于截取,如果没有第二个参数, 默认是0 例子:计算金额, 末尾不做四舍五入函数coalesce()coalesce( 参数列表)函数的作用:返回参数列表中第一个非空参数, 参数列表中最后一个值通常为常量例子:计算员工的年终奖金要求:1) 如果bonus不是null , 发年终奖金额为bonus2) 如果bonus是null , 发年终奖金额为salary *3) 如果bonus和salary都是null, 发100元安慰一下select ename , bonus , salary , coalesce( bonus , salary* , 100 ) bonus fromemp_xxx ;返回参数列表中第一个非空数据最后一个参数通常是常量decode函数decode()函数是Oracle中等价于case when语句的函数, 作用同case语句相同。

decode函数语法如下:decode(判断条件, 匹配1 , 值1 , 匹配2 , 值2 , …, 默认值) 表达的意思是:如果判断条件= 匹配1 , 则返回值1 判断条件= 匹配2 , 则返回值2例子:根据员工的职位, 计算加薪后的薪水数据要求:和case语句相同1) 如果职位是Analyst:加薪10%2) 如果职位是Programmer:加薪5%3) 如果职位是clerk:加薪2%4) 其他职位:薪水不变select ename , salary , job , decode( job , 'Analyst' , salary * ,'Programmer' , salary * , 'clerk' , salary * , salary) new_salary from emp_xxx ;order by例子:薪水由低到高排序( 升序排列)select * from emp_xxx order by salary asc;--正序排列, asc可以省略空值被看做最大--desc( descend )降序排列不可省略select * from emp_xxx order by salary desc;数据字典1) user_tables 用户所有的数据表2) user_constraints 用户所有的约束条件3) user_objects 用户所有的对象( 表、视图、索引等)4) all_tables 用户能访问的数据表包括自己的和别的用户允许自己访问的5) all_constraints 用户能访问的约束条件6) all_objects 用户能访问的对象( 表、视图、索引等)7) 数据字典的格式如:user_XXX: 用户自己的对象all_XXX:用户能访问的对象dba_XXX:数据库所有的对象1) user_tables字段table_name 表名例子:当前帐户( scott)下有多少个表select count(1) from user_tables;例子:scott帐户下有多少个名字中包含emp的表select count(1) from user_tables where lower(table_name) like '%emp%';2) user_objects字段created 表的创建时间例子:1年12月07日后创建的表, 删除过时的表。

例子2:计算五个月之前创建的数据表的个数select count from user_tables a join user_objects b on = where < add_months(sysdate, -5);分组查询:group bygroup by 列名:表示按指定列分组查询例子:按部门计算每个部门的最高和最低薪水分别是多少select deptno , max(salary) max_s , min(salary) min_s from emp_xxx group by deptno ;例子:计算每个部门的薪水总和和平均薪水select deptno, max(salary),min(salary),sum(salary),avg(nvl(salary,0)) from emp_xxx group by deptno;例子:每个部门的统计信息:select deptno, max(salary) max_s , min(salary) min_s , sum(salary) sum_s ,avg(nvl(salary , 0)) avg_s , count(*) emp_num from emp_xxx group by deptno ;例子:按职位分组, 每个职位的最高、最低薪水和人数select job , max(salary) max_s , min(salary) min_s , count(*) emp_num from emp_xxx group by job order by emp_num注意:select后出现的列, 凡是没有被组函数包围的列, 必须出现在group by 短语中having子句having子句用于对分组后的数据进行过滤。

注意区别where是对表中数据的过滤;having 是对分组得到的结果数据进一步过滤例子:平均薪水大于5000元的部门数据, 没有部门的不算在内select deptno , avg(nvl(salary , 0)) avg_s from emp_xxx where deptno is not null group by deptno having avg(nvl(salary , 0)) > 5000 ;例子:薪水总和大于20000元的部门数据select deptno , sum(salary) sum_s from emp_xxx where deptno is not null group by deptno having sum(salary) > 20000 ;日期函数常用日期格式yyyy 四位数字年如:2011year 全拼的年如:twenty fifteenmonth 全拼的月如:November或11月( 中文)mm 两位数字月如:11mon 简拼的月如:nov( 中文没有简拼)dd 两位数字日day 全拼的星期如:tuesdaydy 简拼的星期如:tueam 上午/下午如:am/pmsqlplus中日期的默认格式是:DD-MON-RR 日-月-年日期函数sysdate例子:获取系统当前时间select sysdate from dual ;-- dual为虚表例子:计算员工入职多少天select ename , hiredate , ( sysdate - hiredate ) days from emp_xxx ;日期数据相减, 得到两个日期之间的天数差, 不足一天用小数表示。

相关文档
最新文档