当前位置:文档之家› sql查询语句

sql查询语句

sql查询语句
sql查询语句

数据定义语言DDL

create 数据库对象的创建

alter 修改数据库对象

drop 删除数据库对象

truncate 清空表数据

数据操纵语言DML

insert 插入操作

update 更新操作

delete 删除操作

数据查询语言DQL

select 查询操作

事务控制语句DCL

commit 提交数据

rollback 数据回滚

savepoint保存点

数据类型

数字:

number(n) 数字( 最长n位)

number(n , m) 浮点数( 总长n为, 小数点后m位) 例:number(7,2) 表示最大数为99999.99

字符串:

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:用别名控制列头显示

selectename || ', ' || job || ', ' || salary OUT_PUT from emp;

as 复制表

例子:把emp_yyy表的内容复制到新建的emp_xxx表中;

SQL > create table emp_xxx

as

select * 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_xxxwhere 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 , 发年终奖金额为bonus

2) 如果bonus是null , 发年终奖金额为salary * 0.5

3) 如果bonus和salary都是null, 发100元安慰一下

select ename , bonus , salary , coalesce( bonus , salary*0.5 , 100 ) bonus f rom

emp_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 * 1.1 ,'Programmer' , salary * 1.05 , 'clerk' , salary * 1.02 , 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(a.table_name) from user_tables a join user_objects b on a.table_name = b.object_name where b.created

分组查询:

group by

group by 列名:表示按指定列分组查询

例子:按部门计算每个部门的最高和最低薪水分别是多少?

selectdeptno , 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;

例子:每个部门的统计信息:

selectdeptno, 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元的部门数据, 没有部门的不算在内?

selectdeptno , avg(nvl(salary , 0)) avg_s from emp_xxx where deptno is not null group by deptno having avg(nvl(salary , 0)) > 5000 ;

例子:薪水总和大于20000元的部门数据?

selectdeptno , sum(salary) sum_s from emp_xxx where deptno is not null group by deptno having sum(salary) > 20000 ;

日期函数

常用日期格式

yyyy四位数字年如:2011

year 全拼的年如:twenty fifteen

month 全拼的月如:November或11月( 中文)

mm 两位数字月如:11

mon 简拼的月如:nov( 中文没有简拼)

dd两位数字日

day 全拼的星期如:tuesday

dy简拼的星期如:tue

am 上午/下午如:am/pm

sqlplus中日期的默认格式是:DD-MON-RR 日-月-年

日期函数sysdate

例子:获取系统当前时间

select sysdate from dual ;-- dual为虚表

例子:计算员工入职多少天

selectename , hiredate , ( sysdate - hiredate ) days from emp_xxx ;

日期数据相减, 得到两个日期之间的天数差, 不足一天用小数表示。可以用round函数处理一下。

selectename , hiredate , round( sysdate - hiredate ) days from emp ;

计算员工入职多少个月?

select ename , hiredate , round( months_between( sysdate , hiredate ) ) months from emp_xxx ;

add_months

例子:计算12个月之前的时间点

select add_months(sysdate, -12) from dual;

last_day(sysdate)

例子:计算本月的最后一天

select last_day(sysdate) from dual;

to_char(日期数据, 格式)

转换函数to_char(日期数据, 格式): 把日期数据转换为字符数据

例子:把时间数据按指定格式输出

select to_char( sysdate , 'yyyy-mm-dd hh24:mi:ss ' ) from dual ;

例子:把时间数据按指定格式输出

selectto_char( sysdate , 'year month dd day dy ' ) from dual ;

selectto_char( sysdate , 'yyyy/mm/dd' ) from dual ;

to_date()

例子:按指定时间格式插入数据

insert into emp_xxx( empno , ename , hiredate ) values( 1012 , 'amy ' , to_date( '2011-10-10 ' , 'yyyy-mm-dd ' ) ) ;

小结:转换函数to_date()和to_char()

to_date()和to_char()是时间处理的函数

to_date将字符串数据按指定格式转换为日期数据

to_char将日期数据按指定格式转换为字符串数据

子查询

(1)

例子:查询最高薪水的是谁?

selectenamefrom emp_xxx where salary = (select max(salary) from emp_xxx ) ; selectename from emp_xxx where salary = ( select min(salary) from emp_xxx ) ; (2)

例子:谁的薪水比张无忌高?

select ename from emp_xxx where salary > ( select salary from emp_xxx where ename = '张无忌' ) ;

例子:研发部有哪些职位?

select distinct job from emp_xxx where deptno = ( select deptno from dept_xxx where dname = 'developer' ) ;

All

例子:查询谁的薪水比所有叫张无忌的薪水都高?

select ename from emp_xxx where salary > ALL( select salary from emp_xxx where ename = '张无忌' ) ;

Any

例子:哪些人的薪水比仸何一个叫张无忌的员工工资高?(大于最小值)select ename from emp_xxx where salary > ANY( select salary from emp_xxx where

ename = '张无忌' ) ;

in

例子:每个部门拿最高薪水的是谁?

selectename, salary, job, deptno from emp_xxx where (deptno, salary) in ( select deptno, max(salary) from emp_xxx where deptno is not null group by deptno ) ; having 子查询

例子:哪个部门的人数比部门30的人数多?

selectdeptno , count(*) from emp_xxx group by deptno having count(*) > ( select count(*) from emp_xxx where deptno = 30 ) ;

关联子查询

子查询中不再是独立的Sql语句, 需要依赖主查询传来的参数, 这种方式叫关联子查询

例子:哪些员工的薪水比公司的平均薪水低?

selectename, salary from emp_xxx where salary < ( select avg(nvl(salary,0)) from emp_xxx ) ;

Exists关键字

例子:哪些人是其他人的经理?( 查找有下属的员工)

selectename from emp_xxx a where exists (select 1 from emp_xxx where mgr = a.empno) ;

?exists关键字判断子查询有没有数据返回, 有则为ture , 没有则为false ?Exists不关心子查询的结果, 所以子查询中select后面写什么都可以本例中我们写常量“1”

?sql执行顺序从主查询开始, 把主查询中的empno数据传入子查询, 作为条件中的参数

方法2:普通子查询

selectename from emp_xxx where empno in ( select distinct mgr from emp_xxx) ;

例子:哪些部门没有员工?

selectdeptno, dname from dept_xxx d where not exists (select 1 from

emp_xxxwhere deptno = d.deptno) ;

查询语句的基本格式

函数:

组函数

与单行函数如round()、to_date()、to_char()、coalesce()等不同, 单行函数是每行数据返回一行结果, 组函数是多行数据返回一行结果。

count / avg / sum / max / min

记得:组函数忽略空值

sum()

例子:计算员工的薪水总和是多少?

select sum(salary) sum_salary from emp_xxx;

max()

min()

avg()

注意:

组函数:count / avg / sum / max / min 如果函数中写列名, 默认忽略空值avg / sum 针对数字的操作

max / min 对所有数据类型都可以操作

例子:计算最早和最晚的员工入职时间

Select max(hiredate),min(hiredate) from emp_xxx;

单行函数

字符函数:upper / lower / initcap/length / lpad / rpad / replace / trim

1) upper 转换为大写

2) lower 转换为小写

3) initcap转换为首字母大写

4) length 取长度

5) lpad左补丁

6) rpad右补丁

7) replace 字符替换

8) trim 去除前后的空格

Lpad()

例子:将ename字段设置为10个长度, 如果不够左边用“*”号补齐

select lpad( ename , 10 , '*' ) from emp_xxx ;

rpad()

例子:将ename字段设置为10个长度 , 如果丌够右边用“#”号补齐selectrpad( ename , 10 , '#' ) from emp_xxx ;

mod()

例子:求salary对5000取模

select salary , mod( salary , 5000 ) from emp_xxx ;

集合操作

数据库中的查询语句的结果集( ResultSet ):集合A和集合B

集合A: {1,2,3,4,5}

集合B: {1,3,5,7,9}

A与B的合集: {1,2,3,4,5,7,9}

A与B的交集: {1,3,5}

A与B的差集: A-B {2,4}

两个结果集必须结构相同

当列的个数、列的顺序、列的数据类型一致时 , 我们称这两个结果集结构相同只有结构相同的结果集才能做集合操作

2) 合集 union 和 union all

union 和 union all的区别

union去掉重复记录 , union all不去重

union排序 , union all不排序

在满足功能的前提下 , 优选union all

3) 交集 intersect

4) 差集 minus( 两个集合做减法 )

union 去重, 排序

select ename, salary from emp_xxx where deptno = 10 union select ename, salary from emp_xxx where salary > 6000

union all 不去重, 不排序

select ename, salary from emp_xxx where deptno = 10 union all select ename, salary from emp_xxx where salary > 6000

交集intersect

select ename, salary from emp_xxx where deptno = 10 intersect select ename, salary from emp_xxx where salary > 6000;

差集minus

select ename, salary from emp_xxx where deptno = 10 minus select ename, salary from emp_xxx where salary > 6000 ;

表间关联查询

主键:该表唯一不重复的属性;

外键:是另一张表的主键,起到了链接两张表的作用;

内连接

join关键字用于连接两个表, 语法如下:表1 join 表2 on 条件

例子:selectename , dname , location from emp_xxx e join dept_xxx d on e.deptno = d.deptno ;

表1 join 表2 on 条件

1) 表1叫做驱动表, 表2叫做匹配表

2) 等值连接方式下, 驱动表和匹配表位置可以互换, 不影响结果集

3) 执行方式:不论谁做驱动表, 都会遍历驱动表, 在匹配表中查找匹配数据外连接

1) 左外连接语法结构:表1 left outer join 表2 on 条件

2) 右外连接语法结构:表1 right outer join 表2 on 条件

3) 外连接的特征:

如果驱动表在匹配表中找不到匹配记录, 则匹配一行空行

外连接的结果集= 内连接的结果集+ 驱动表在匹配表中匹配不上的记录和空值

外连接的本质是驱动表中的数据一个都不能少

left outer join以左边的表为驱动表

right outer join以右边的表为驱动表

例子:列出员工的姓名和他所在部门的名字, 把没有员工的部门也查出来selecte.empno , ename , d.deptno , d.dname , d.location from emp_xxx e left outer join dept_xxx d on e.deptno = d.deptno ;

selecte.empno , ename , d.deptno , d.dname , d.location from dept_xxx d right outer join emp_xxx e on e.deptno = d.deptno ;

全外连接

selecte.empno , e.ename , d.deptno , d.dname from emp_xxx e full outer join dept_xxx d on e.deptno = d.deptno

复制表

(1)复制全表

create table 表名as 查询语句;

(2)只复制结构, 不复制数据

(3)复制一部分数据

rownum关键字

rownum是Oracle数据库提供的, 代表行号。

例子:向新表中插入指定记录数的数据, 比如前8条

insert into emp_bak1 ( select * from emp_xxx where rownum<= 8 ) ;

注意:复制表的时候, 不复制约束条件

update( 更新数据)

语法结构:

update 表名set 列名= 新的列值, 列名= 新的列值. …. where 条件;

注意:

更新( update )数据表时, 注意条件, 如果不加条件, 修改的是全部表记录rollback回退, commit确认

例子:将员工号为1012的员工薪水改为3500 , 职位改为Programmer updateemp_xxx set salary = 3500 , job = 'Programmer' where empno = 1012 ;

delete( 删除数据)

语法结构:

delete [from] 表名where 条件;

注意:

如果删除语句中不加where条件, 将删掉表中的全部记录rollback回退,commit 确认drop table会删除表结构和数据;truncate删除表数据, 保留表结构。drop 和truncate都不可以回退。delete仅删除数据, 可以回退

?SQL> delete emp_bak1 where empno = 1002 ;

?SQL> delete emp_bak1 where deptno = 10 ;

?SQL> delete emp_bak1 ; --删除emp_bak1表中所有数据

SQL>commit ;

rename关键字

例子:rename emp_bak2 to emp_bak1 ; -- 把emp_bak2改名为emp_bak1 rowid关键字

rowid是Oracle数据库的伪列, 可以看作是一条数据在数据库中的物理位置rowid是Oracle数据库独有的

例子:删除重复数据

SQL查询语句大全集锦(超经典)

SQL查询语句大全集锦 MYSQL查询语句大全集锦 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 复制内容到剪贴板 代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: 复制内容到剪贴板 代码:SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: 复制内容到剪贴板 代码:SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题:

复制内容到剪贴板 代码:SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: 复制内容到剪贴板 代码:SELECT TOP 2 * FROM `testtable` 复制内容到剪贴板 代码:SELECT TOP 20 PERCENT * FROM `testtable` (二) FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, 它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: 复制内容到剪贴板 代码:SELECT `username`,citytable.cityid FROM `usertable`,`citytable` WHERE usertable.cityid=citytable.cityid在FROM子句中可用以下两种格式为表或视图指定别名: 复制内容到剪贴板 代码:表名 as 别名 表名别名例如上面语句可用表的别名格式表示为: 复制内容到剪贴板

数据库SQL查询语句大全

经典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 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 only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 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 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!

数据库SQL查询语句大全修订稿

数据库S Q L查询语句 大全 公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]

经典SQL查询语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 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 definitio n only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 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 tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A:UNION 运算符

SQL搜索语句

SQL查询语句大全集锦 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: 代码:SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: 代码:SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题: 代码:SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n 是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: 代码:SELECT TOP 2 * FROM `testtable` 代码:SELECT TOP 20 PERCENT * FROM `testtable` (二) FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应

数据库经典SQL语句大全

数据库经典SQL语句大全 篇一:经典SQL语句大全 下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk','testBack', 'c:mssql7backupMyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表

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 only 5、说明: 删除新表: tabname 6、说明: 增加一个列: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 tabname(col?.) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。

sql查询语句大全

SQL查询语句大全 《SQL语句的基本语法》 一.Select语句的完整语法为: Select[ALL|DISTINCT|DISTINCTROW|TOP] {*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]} FROM tableexpression[,…][IN externaldatabase] [Where…] [GROUP BY…] [HAVING…] [ORDER BY…] [WITH OWNERACCESS OPTION] 说明: 用中括号([])括起来的部分表示是可选的,用大括号({})括起来的部分是表示必须从中选择其中的一个。 1 FROM子句 FROM子句指定了Select语句中字段的来源。FROM子句后面是包含一个或多个的表达式(由逗号分开),其中的表达式可为单一表名称、已保存的查询或 由 INNER JOIN、LEFT JOIN 或 RIGHT JOIN 得到的复合结果。如果表或查询存储在外部数据库,在IN 子句之后指明其完整路径。 例:下列SQL语句返回所有有定单的客户: Select orderID,Customer.customerID FROM orders Customers Where orders.CustomerID=Customers.CustomeersID 2 ALL、DISTINCT、DISTINCTROW、TOP谓词 (1) ALL 返回满足SQL语句条件的所有记录。如果没有指明这个谓词,默认为ALL。 例:Select ALL FirstName,LastName FROM Employees (2) DISTINCT 如果有多个记录的选择字段的数据相同,只返回一个。 (3) DISTINCTROW 如果有重复的记录,只返回一个 (4) TOP显示查询头尾若干记录。也可返回记录的百分比,这是要用 TOP N PERCENT子句(其中N 表示百分比) 例:返回5%定货额最大的定单 Select TOP 5 PERCENT* FROM [ order Details] orDER BY UnitPrice*Quantity*(1-Discount) DESC 3 用 AS 子句为字段取别名 如果想为返回的列取一个新的标题,或者,经过对字段的计算或总结之后,产生了一个新的值,希望把它放到一个新的列里显示,则用AS保留。 例:返回FirstName字段取别名为NickName Select FirstName AS NickName ,LastName ,City

SQL语句大全实例

SQL语句实例 表操作 例 1 对于表的教学管理数据库中的表STUDENTS ,可以定义如下:CREATE TABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL SNAME CHAR (8) NOT NULL AGE NUMERIC(3,0) SEX CHAR(2) BPLACE CHAR(20) PRIMARY KEY(SNO)) 例 2 对于表的教学管理数据库中的表ENROLLS ,可以定义如下: CREATE TABLE ENROLLS (SNO NUMERIC(6,0) NOT NULL CNO CHAR(4) NOT NULL GRADE INT PRIMARY KEY(SNO,CNO) FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO) FOREIGN KEY(CNO) REFERENCES COURSES(CNO) CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100))) 例 3 根据表的STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。 CREATE TABLE GIRL

AS SELECT SNO, SNAME, AGE FROM STUDENTS WHERE SEX=' 女'; 例 4 删除教师表TEACHER 。 DROP TABLE TEACHER 例 5 在教师表中增加住址列。 ALTER TABLE TEACHERS ADD (ADDR CHAR(50)) 例 6 把STUDENTS 表中的BPLACE 列删除,并且把引用BPLACE 列的所有视图和约束也一起删除。 ALTER TABLE STUDENTS DROP BPLACE CASCADE 例7 补充定义ENROLLS 表的主关键字。 ALTER TABLE ENROLLS ADD PRIMARY KEY (SNO,CNO) ; 视图操作(虚表) 例9 建立一个只包括教师号、姓名和年龄的视图FACULTY 。( 在视图定义中不能包含ORDER BY 子句) CREATE VIEW FACULTY AS SELECT TNO, TNAME, AGE FROM TEACHERS 例10 从学生表、课程表和选课表中产生一个视图GRADE_TABLE ,它包括学生姓名、课程名和成绩。 CREATE VIEW GRADE_TABLE AS SELECT SNAME,CNAME,GRADE FROM STUDENTS,COURSES,ENROLLS WHERE STUDENTS.SNO =ENROLLS.SNO AND https://www.doczj.com/doc/bb2197796.html,O=https://www.doczj.com/doc/bb2197796.html,O 例11 删除视图GRADE_TABLE DROP VIEW GRADE_TABLE RESTRICT 索引操作 例12 在学生表中按学号建立索引。 CREATE UNIQUE INDEX ST ON STUDENTS (SNO,ASC) 例13 删除按学号所建立的索引。 DROP INDEX ST 数据库模式操作

SQL数据库查询语句范例

推荐一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和Where子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。Select nickname,email FROM testtable Where n ame=’张三’ (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列例如,下面语句显示testtable表中所有列的数据:Select * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如:Select nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: Select 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 Select语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINC T选项时,对于所有重复的数据行在Select返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如: Select TOP 2 *FROM testtable Select TOP 20 PERCENT * FROM testtable (二) FROM子句 FROM子句指定Select语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和cityta ble表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: Select username,citytable.cityid FROM usertable,citytable Where usertable.cityid=citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名 as 别名表名别名

oracle 经典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 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 only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 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 tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1

SQL数据库语句大全大全(完全整理版)

SQL语句大全--语句功能 --数据操作 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 --定义当前事务数据访问特征 --程序化SQL DECLARE --为查询设定游标 EXPLAN --为查询描述数据访问计划 OPEN --检索查询结果打开一个游标

50个经典SQL查询语句

--一个题目涉及到的50个Sql语句 --(下面表的结构以给出,自己在数据库中建立表.并且添加相应的数据,数据要全面些. 其中Student表中,SId为学生的ID) ------------------------------------表结构-------------------------------------- --学生表tblStudent(编号StuId、姓名StuName、年龄StuAge、性别StuSex) --课程表tblCourse(课程编号CourseId、课程名称CourseName、教师编号TeaId) --成绩表tblScore(学生编号StuId、课程编号CourseId、成绩Score) --教师表tblTeacher(教师编号TeaId、姓名TeaName) --------------------------------------------------------------------------------- --1、查询“001”课程比“002”课程成绩高的所有学生的学号; Select StuId From tblStudent s1 Where (Select Score From tblScore t1 Where t1.StuId=s1.stuId And t1.CourseId='001')> (Select Score From tblScore t2 Where t2.StuId=s1.stuId And t2.CourseId='002') --2、查询平均成绩大于60分的同学的学号和平均成绩; Select StuId,Avg(Score) as AvgScore From tblScore Group By StuId Having Avg(Score)>60 --3、查询所有同学的学号、姓名、选课数、总成绩; Select StuId,StuName, SelCourses=(Select Count(CourseId) From tblScore t1 Where t1.StuId=s1.StuId), SumScore=(Select Sum(Score) From tblScore t2 Where t2.StuId=s1.StuId) From tblStudent s1 --4、查询姓“李”的老师的个数; Select Count(*) From tblTeacher Where TeaName like '李%' --5、查询没学过“叶平”老师课的同学的学号、姓名; Select StuId,StuName From tblStudent Where StuId Not In ( Select StuID From tblScore sc Inner Join tblCourse cu ON sc.CourseId=cu.CourseId Inner Join tblTeacher tc ON cu.TeaId=tc.TeaId Where tc.TeaName='叶平' ) --6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名; Select StuId,StuName From tblStudent st Where (Select Count(*) From tblScore s1 Where s1.StuId=st.StuId And

语句大全SQL语句大全

语句大全-SQL语句大全 SQL语句大全。SQL即结构化查询语言。 是一种特殊目的的编程语言。是一种数据库查询和程序设计语言。用于存取数据以及查询。更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。SQL语句无论是种类还是数量都是繁多的。很多语句也是经常要用到的。SQL查询语句就是一个典型的例子。无论是高级查询还是低级查询。SQL查询语句的需求是最频繁的。 中文名,SQL语句大全。作用于,数据库。具体,编程语言。相关学科,数据库原理。设计教程。 基础。创建之前判断该数据库是否存在if exists drop database databaseNamegoCreate DATABASE databasenameon primary-- 默认就属于primary文件组,可省略log ondrop

database databasename--- 创建备份数据的deviceUSE masterEXEC sp_addumpdevice ‘disk’, ‘testBack’, ‘c:\mssql7backup\MyNwind_’--- 开始备份BACKUP DATABASE pubs TO testBackcreate table tabname,col2 type2 ,..)--primary key为主键identity表示递增数量根据已有的表创建新表:A:gouse 原数据库名goselect * into 目的数据库名.dbo.目的表名from 原表名B:create table tab_new as select col1,col2… from tab_old definition onlycreate sequence SIMON_SEQUENCEminvalue 1 -- 最小值maxvalue 999 -- 最大值start with 1 -- 开始值increment by 1 -- 每次加几cache 20;drop table tabname--这是将表连同表中信息一起删除但是日志文件中会有记录delete from table_name-这是将表中信息删除但是会保留这个表Alter table table_name add column_name column_type --在表中增加一列。 内的内容为可选项Alter table

SQL查询语句例子

数据表的查询(select) select 字段列表[as 别名], * from 数据表名 [where 条件语句] [group by 分组字段] [order by 排序字段列表desc] [LIMIT startrow,rownumber] 1、Select 字段列表From 数据表 例:①、select id,gsmc,add,tel from haf (* 表示数据表中所有字段) ②、select 单价,数量,单价*数量as 合计金额from haf (As 设置字段的别名) 2、Select …from …Where 筛选条件式 筛选条件式:①、字符串数据:select * from 成绩单Where 姓名='李明' ②、万用字符:select * from 成绩单Where 姓名like '李%' select * from 成绩单Where 姓名like '%李%' select * from 成绩单Where 姓名like '%李_' ③、特殊的条件式: ⑴= / > / < / <> / >= / <= ⑵AND(逻辑与) OR(逻辑或) NOT(逻辑非) ⑶Where 字段名称in(值一,值二) ⑷Where 字段名称Is Null / Where 字段名称Is Not Null 3、Select …from …group by 字段 SQL函数: SELECT sex,count(id) as women from `user` group by 'sex'; 函数名描述函数名描述 AVG平均值Count计数 MAX最大值MIN最小值 Sum求和

SQL语句大全实例

选课系统SQL语句实例 1. 表操作 (1) 2. 视图操作(虚表)—— (2) 3. 索引操作 (3) 4. 数据库模式操作 (3) 5. 单表操作 (3) 6. 多表操作 (4) 7. 表达式与函数的使用 (6) 8. 相关子查询 (7) 9. 关系代数运算 (8) 10. SQL 的数据操纵 (9) 11. SQL 的数据控制 (10) 1.表操作 例1 对于表的教学管理数据库中的表STUDENTS ,可以定义如下: CREATE TABLE STUDENTS

(SNO NUMERIC (6, 0) NOT NULL SNAME CHAR (8) NOT NULL AGE NUMERIC(3,0) SEX CHAR(2) BPLACE CHAR(20) PRIMARY KEY(SNO)) 例2 对于表的教学管理数据库中的表ENROLLS ,可以定义如下: CREATE TABLE ENROLLS (SNO NUMERIC(6,0) NOT NULL CNO CHAR(4) NOT NULL GRADE INT PRIMARY KEY(SNO,CNO) FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO) FOREIGN KEY(CNO) REFERENCES COURSES(CNO) CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100))) 例3 根据表的STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。 CREATE TABLE GIRL AS SELECT SNO, SNAME, AGE FROM STUDENTS WHERE SEX=' 女'; 例4 删除教师表TEACHER 。 DROP TABLE TEACHER 例5 在教师表中增加住址列。 ALTER TABLE TEACHERS ADD (ADDR CHAR(50)) 例6 把STUDENTS 表中的BPLACE 列删除,并且把引用BPLACE 列的所有视图和约束也一起删除。 ALTER TABLE STUDENTS DROP BPLACE CASCADE 例7 补充定义ENROLLS 表的主关键字。 ALTER TABLE ENROLLS ADD PRIMARY KEY (SNO,CNO) ; 2.视图操作(虚表) 例9 建立一个只包括教师号、姓名和年龄的视图FACULTY 。( 在视图定义中不能包含ORDER BY 子句) CREATE VIEW FACULTY AS SELECT TNO, TNAME, AGE FROM TEACHERS

常用经典SQL语句大全完整版-权威人士总结出的-详解+实例

下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 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 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 only 5、说明: 删除新表:drop table tabname 6、说明: 增加一个列: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 tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明: 创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ?%value1%? ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc]

sql搜索语句大全

SQL语句大全 --语句功能 --数据操作 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 --从数据库中删除一个域 ***SELECT*** select *(列名) from table_name(表名) where column_name operator value example: select * from stock_information where stockid = str(nid) select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复 select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name select stockname , "stocknumber" = count(*) from table_name group by stockname --------- group by 将表按行分组,指定列中有相同的值 having count(*) = 2 --------- having选定指定的组 select *

相关主题
文本预览
相关文档 最新文档