sql数据库查询语句怎么写?
关于sql数据库的查询语句
你的连接条件是什么呢?
sql数据库查询语句怎么写?
sql数据库查询语句怎么写?
用左联接,只能出来:
1 A
2 B
3 (null)
4 (null)
select aa.aa , bb.bbfrom aa left outer join bb
on aa.id = bb.id
sql查询语句(sql查询语句怎么写)
select的命令比较多了,常用的是select表的列名from表名/视图[where条件groupby字段orderby表的列名asc/desc],当然也可以实现多表关联,selectfroma,bwherea.列名=b.列名;
当然select可以嵌套,但必须数据库支持,oracle和mysql5.0以上都支持了,如selectfrom(selectfrom表名)a,select的嵌套是比较复杂,可以实现n重嵌套的。
select还有特殊的用法就是selectinto表名selectfrom表名
即为表的,好像sqlserver支持这个的。
知道的就这么多了,应该还有其他的了。
SQL查询语句
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
急,谁能帮我把这些语句写出来,我加分呀~~~谢了~~
在Northwind数据库中
1、从产品表Products当中查询列产品名称(ProductName),
产品库存价值(UnitPrUnitsInStock),并且使用汉字作为查询列的别名
2、查询表Orders当中,定单日期(OrderDate)为7月份的定单
3、查询表Employees中员工的年龄和工龄
4、查询表Employees中员工的FisrtName以M开头,LastName以’an’结束的员工信息
5、查询表Employees中员工的FisrtName以N或S开头的员工信息.
6、查询表Customers中City值为London或Berlin或Madrid的客户信息
7、查询表Customers中Region列为Null的客户公司名称(CompanyName),
名称(ContactName),客户地址(Address)
8、查询表Employees的姓名(由LastName和FirstName组成),所在城市(City), 年龄和工龄,
并且要求员工的年龄按降序排列,员工的工龄按升序排列.
9、检索单价在10.00到21.00之间所有产品的产品名称和单价
10、products表存储的是产品的信息
要求:查询products表中所有产品单价的平均值
11、在Order Details表查询定购总数量多于1200的产品ID和定购数量
12、查询products表中每类产品(CategoryID表示类别)的单价平均值,要求查看类别ID,单价平均值,并只筛选出单价平均值超过20的数据
解析:
在Northwind数据库中
1、从产品表Products当中查询列产品名称(ProductName),
产品库存价值(UnitPrUnitsInStock),并且使用汉字作为查询列的别名
select ProductName as 产品名称, UnitPrUnitsInStock as 产品库存价值 from Products
2、查询表Orders当中,定单日期(OrderDate)为7月份的定单
select from Orders where OrderDate
3、查询表Employees中员工的年龄和工龄
select 年龄,工龄 from Employees
4、查询表Employees中员工的FisrtName以M开头,LastName以’an’结束的员工信息
select from Employees where FisrtName like "M%" and LastName like "%an"
5、查询表Employees中员工的FisrtName以N或S开头的员工信息.
select from Employees where FisrtName like "N%" or FisrtName like "S%"
6、查询表Customers中City值为London或Berlin或Madrid的客户信息
select from Customers where City="London" or City="Berlin" or City="Madrid"
7、查询表Customers中Region列为Null的客户公司名称(CompanyName),
名称(ContactName),客户地址(Address)
select CompanyName,ContactName,Address from Customers where Region=Null
8、查询表Employees的姓名(由LastName和FirstName组成),所在城市(City), 年龄和工龄,
并且要求员工的年龄按降序排列,员工的工龄按升序排列.
select LastName,FirstName,City,年龄,工龄 from Employees order by 年龄 desc,工龄 asc
9、检索单价在10.00到21.00之间所有产品的产品名称和单价
select 产品名称,单价 from products where 单价>=10.00 and 单价<=21.00
10、products表存储的是产品的信息
要求:查询products表中所有产品单价的平均值
select g (单价) from products
11、在Order Details表查询定购总数量多于1200的产品ID和定购数量
select ID,定购数量 from Order Details where 定购总数量>1200
12、查询products表中每类产品(CategoryID表示类别)的单价平均值,要求查看类别ID,单价平均值,并只筛选出单价平均值超过20的数据
select g(单价),ID from products group by CategoryID
select from products where g(CategoryID)>20
SQL数据库语句查询
--读取库中的所有表名 select name from sysobjects where xtype='u' --读取指定表的所有列名 select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名') 获取数据库表名和字段 sqlserver中各个系统表的作用 sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库 字符集与排序顺序 sysconfigures 主数据库 配置选项 syscurconfigs 主数据库 当前配置选项 sysdatabases 主数据库 中的数据库 syslanguages 主数据库 语言 syslogins 主数据库 登陆帐号信息 sysoledbusers 主数据库 链接登陆信息 sysprocesses 主数据库 进程 sysremoogins主数据库 远程登录帐号 syscolumns 每个数据库 列 sysconstrains 每个数据库 限制 sysfilegroups 每个数据库 文件组 sysfiles 每个数据库 文件 sysforeignkeys 每个数据库 外部关键字 sysindexs 每个数据库 索引 syenbers 每个数据库 角色成员 sysobjects 每个数据库 所有数据库对象 syspermissions 每个数据库 权限 systypes 每个数据库 用户定义数据类型 select 列名=name from syscolumns where id=object_id(N'要查的表名')
用sql语句怎么查一个表的信息
1、 查询所有列。
sql语句:SELECT FROM user。
2、查询指定列
sql语句:SELECT nickname, mobile, FROM user
3、将查询结果按字段的值进行排序
sql语句:SELECT FROM emp ORDER BY deptno, sal DESC; (按序号升序,并按价格降序)
4、比较查询
sql语句:select Sname as 姓名,Sage as 年龄 from student where Sage<20;
5、字符匹配(like % _ )。
查询所有包含“鸡”的菜品的名称和编号。
sql语句:select name as 菜品名,pr as 价格 from food where name like '%鸡%';
SQL查询语句
SQL查询语句大全
SQL语句无论是种类还是数量都是繁多的,很多语句也是经常要用到的,SQL查询语句就是一个典型的例子,无论是高级查询还是低级查询,SQL查询语句的需求是频繁的。那么SQL查询语句有哪些?下面跟我一起来看看吧!
一、简单查询语句
1. 查看表结构
SQL>DESC emp;
2. 查询所有列
SQL>SELECT FROM emp;
3. 查询指定列
SQL>SELECT empmo, ename, mgr FROM emp;
SQL>SELECT DISTINCT mgr FROM emp; 只显示结果不同的项
4. 查询指定行
SQL>SELECT FROM emp WHERE job='CLERK';
5. 使用算术表达式
SQL>SELECT ename, sal13+nvl(comm,0) FROM emp;
nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm; comm中无值,则nvl(comm,1)=0。
SQL>SELECT ename, sal13+nvl(comm,0) year_sal FROM emp; (year_sal为别名,可按别名排序)
SQL>SELECT FROM emp WHERE hiredate>'01-1月-82';
6. 使用like作符(%,_)
%表示一个或多个字符,_表示一个字符,[charlist]表示字符列中的任何单一字符,[^charlist]或者[!charlist]不在字符列中的任何单一字符。
SQL>SELECT FROM emp WHERE ename like 'S__T%';
7. 在where条件中使用In
SQL>SELECT FROM emp WHERE job IN ('CLERK','ANALYST');
8. 查询字段内容为空/非空的语句
SQL>SELECT FROM emp WHERE mgr IS/IS NOT NULL;
9. 使用逻辑作符号
SQL>SELECT FROM emp WHERE (sal>500 or job='MANAGE') and ename like 'J%';
10. 将查询结果按字段的值进行排序
SQL>SELECT FROM emp ORDER BY deptno, sal DESC; (按部门升序,并按薪酬降序)
二、复杂查询
1. 数据分组(max,min,g,sum,count)
SQL>SELECT MAX(sal),MIN(age),AVG(sal),SUM(sal) from emp;
SQL>SELECT FROM emp where sal=(SELECT MAX(sal) from emp));
SQL>SELEC COUNT() FROM emp;
2. group by(用于对查询结果的分组统计) 和 hing子句(用于限制分组显示结果)
SQL>SELECT deptno,MAX(sal),AVG(sal) FROM emp GROUP BY deptno;
SQL>SELECT deptno, job, AVG(sal),MIN(sal) FROM emp group by deptno,job hing AVG(sal)<2000;
对于数据分组的总结:
a. 分组函数只能出现在选择列表、hing、order by子句中(不能出现在where中)
b. 如果select语句中同时包含有group by, hing, order by,那么它们的顺序是group by, hing, order by。
c. 在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须出现在group by子句中,否则就是会出错。
使用group by不是使用hing的前提条件。
3. 多表查询
SQL>SELECT e.name,e.sal,d.dname FROM emp e, dept d WHERE e.deptno=d.deptno order by d.deptno;
SQL>SELECT e.ename,e.sal,s.grade FROM emp e,salgrade s WHER e.sal BETWEEN s.losal AND s.hisal;
4. 自连接(指同一张表的连接查询)
SQL>SELECT er.ename, ee.ename mgr_name from emp er, emp ee where er.mgr=ee.empno;
5. 子查询(嵌入到其他sql语句中的select语句,也叫嵌套查询)
5.1 单行子查询
SQL>SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM emp where ename='SMITH');查询表中与ith同部门的人员名字。因为返回结果只有一行,所以用“=”连接子查询语句
5.2 多行子查询
SQL>SELECT ename,job,sal,deptno from emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno=10);查询表中与部门号为10的工作相同的员工的姓名、工作、薪水、部门号。因为返回结果有多行,所以用“IN”连接子查询语句。
in与exists的区别: exists() 后面的子查询被称做相关子查询,它是不返回列表的值的。只是返回一个ture或false的结果,其运行方式是先运行主查询一次,再去子查询里查询与其对 应的结果。如果是ture则输出,反之则不输出。再根据主查询中的每一行去子查询里去查询。in()后面的子查询,是返回结果集的,换句话说执行次序和 exists()不一样。子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表去。符合要求的输出,反之则不输出。
5.3 使用ALL
SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ALL (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MAX(sal) FROM emp WHERE deptno=30);查询工资比部门号为30号的所有员工工资都高的员工的姓名、薪水和部门号。以上两个语句在功能上是一样的,但执行效率上,函数会高 得多。
5.4 使用ANY
SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ANY (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MIN(sal) FROM emp WHERE deptno=30);查询工资比部门号为30号的任意一个员工工资高(只要比某一员工工资高即可)的员工的姓名、薪水和部门号。以上两个语句在功能上是 一样的,但执行效率上,函数会高得多。
5.5 多列子查询
SQL>SELECT FROM emp WHERE (job, deptno)=(SELECT job, deptno FROM emp WHERE ename='SMITH');
5.6 在from子句中使用子查询
SQL>SELECT emp.deptno,emp.ename,emp.sal,t_gsal.gsal FROM emp,(SELECT emp.deptno,g(emp.sal) gsal FROM emp GROUP BY emp.deptno) t_gsal where emp.deptno=t_gsal.deptno AND emp.sal>t_gsal.gsal ORDER BY emp.deptno;
5.7 分页查询
数据库的每行数据都有一个对应的行号,称为rownum.
SQL>SELECT a2. FROM (SELECT a1., ROWNUM rn FROM (SELECT FROM emp ORDER BY sal) a1 WHERE ROWNUM<=10) a2="" where="" rn="">=6;
指定查询列、查询结果排序等,都只需要修改里层的子查询即可。
5.8 用查询结果创建新表
SQL>CREATE TABLE mytable (id,name,sal,job,deptno) AS SELECT empno,ename,sal,job,deptno FROM emp;
5.9 合并查询(union 并集, intersect 交集, union all 并集+交集, minus集)
SQL>SELECT ename, sal, job FROM emp WHERE sal>0 UNION(INTERSECT/UNION ALL/MINUS) SELECT ename, sal, job FROM emp WHERE job='MANAGER';
合并查询的执行效率远高于and,or等逻辑查询。
5.10 使用子查询插入数据
SQL>CREATE TABLE myEmp(empID number(4), name varchar2(20), sal number(6), job varchar2(10), dept number(2)); 先建一张空表;
SQL>INSERT INTO myEmp(empID, name, sal, job, dept) SELECT empno, ename, sal, job, deptno FROM emp WHERE deptno=10; 再将emp表中部门号为10的数据插入到新表myEmp中,实现数据的批量查询。
5.11 使用了查询更新表中的数据
SQL>UPDATE emp SET(job, sal, comm)=(SELECT job, sal, comm FROM emp where ename='SMITH') WHERE ename='SCOTT';
SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。由于它具有功能丰富、使用方便灵活、语言简洁易学等突出的优点,深受计算机工业界和计算机用户的欢迎。1980年10月,经美国标准局(ANSI)的数据库委员会X3H2批准,将SQL作为关系数据库语言的美国标准,同年公布了标准SQL,此后不久,标准化组织(ISO)也作出了同样的决定。
SQL从功能上可以分为3部分:数据定义、数据纵和数据控制。
SQL的核心部分相当于关系代数,但又具有关系代数所没有的许多特点,如聚集、数据库更新等。它是一个综合的、通用的、功能极强的关系数据库语言。其特点是:
1、数据描述、纵、控制等功能一体化。
2、两种使用方式,统一的语法结构。SQL有两种使用方式。一是联机交互使用,这种方式下的SQL实际上是作为自含型语言使用的。另一种方式是嵌入到某种高级程序设计语言(如C语言等)中去使用。前一种方式适合于非计算机专业人员使用,后一种方式适合于专业计算机人员使用。尽管使用方式不向,但所用语言的语法结构基本上是一致的。
3、高度非过程化。SQL是一种语言(4GL),用户只需要提出“干什么”,无须具体指明“怎么干”,像存取路径选择和具体处理作等均由系统自动完成。
4、语言简洁,易学易用。尽管SQL的'功能很强,但语言十分简洁,核心功能只用了9个动词。SQL的语法接近英语口语,所以,用户很容易学习和使用。
功能
SQL具有数据定义、数据纵、和数据控制的功能。
1、SQL数据定义功能:能够定义数据库的模式结构,即外模式、全局模式和内模式结构。在SQL中,外模式又叫做视图(View),全局模式简称模式(Schema),内模式由系统根据数据库模式自动实现,一般无需用户过问。
2、SQL数据纵功能:包括对基本表和视图的数据插入、删除和修改,特别是具有很强的数据查询功能。
3、SQL的数据控制功能:主要是对用户的访问权限加以控制,以保证系统的安全性。
语句结构
结构化查询语言包含6个部分:
1、数据查询语言(DQL: Data Query Language):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其它类型的SQL语句一起使用。
2、数据作语言(DML:Data Manipulation Language):其语句包括动词INSERT、UPDATE和DELETE。它们分别用于添加、修改和删除。
3、事务控制语言(TCL):它的语句能确保被DML语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。
4、数据控制语言(DCL):它的语句通过GRANT或REVOKE实现权限控制,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
5、数据定义语言(DDL):其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREATE TABLE 或 DROP TABLE);为表加入索引等。
6、指针控制语言(CCL):它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的作。
语言特点
SQL风格统一
SQL可以完成数据库生命周期中的全部活动,包括定义关系模式、录入数据、建立数据库、査询、更新、维护、数据库重构、数据库安全性控制等一系列作,这就为数据库应用系统开发提供了良好的环境,在数据库投入运行后,还可根据需要随时逐步修改模式,且不影响数据库的运行,从而使系统具有良好的可扩充性。
高度非过程化
非关系数据模型的数据纵语言是面向过程的语言,用其完成用户请求时,必须指定存取路径。而用SQL进行数据作,用户只需提出“做什么”,而不必指明“怎么做”,因此用户无须了解存取路径,存取路径的选择以及SQL语句的作过程由系统自动完成。这不但大大减轻了用户负担,而且有利于提高数据性。
面向的作方式
SQL采用作方式,不仅查找结果可以是元组的,而且一次插入、删除、更新作的对象也可以是元组的。
以同一种语法结构提供两种使用方式
SQL既是自含式语言,又是嵌入式语言。作为自含式语言,它能够地用于联机交互的使用方式,用户可以在终端键盘上直接输入SQL命令对数据库进行作。作为嵌入式语言,SQL语句能够嵌入到高级语言(如C、C#、JAVA)程序中,供程序员设计程序时使用。而在两种不同的使用方式下,SQL的语法结构基本上是一致的。这种以统一的语法结构提供两种不同的作方式,为用户提供了极大的灵活性与方便性。
语言简洁,易学易用
SQL功能极强,但由于设计巧妙,语言十分简洁,完成数据定义、数据纵、数据控制的核心功能只用了9个动词:CREATE、ALTER、DROP、SELECT、INSERT、UPDATE、DELETE、GRANT、REVOKE。且SQL语言语法简单,接近英语口语,因此容易学习,也容易使用。 ;
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。