搜档网
当前位置:搜档网 › T-SQL查询语句(三):多表查询

T-SQL查询语句(三):多表查询

T-SQL查询语句(三):多表查询
T-SQL查询语句(三):多表查询

T-SQL查询语句(三):多表查询

Posted on 2008-10-07 19:57 罗一恒阅读(4161) 评论(2)编辑收藏

SQL查询语句《三》:多表查询(也叫连接查询,此处为基于两个表的连接查询)

如果一个查询需要对多个表进行操作就称为连接查询,连接查询的结果集或结果称为表之间的连接.

连接查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系数据库查询最主要的特征. select 表1.字段名1,表2.字段名2,...

from 表1,表2

where 连接条件

SQL-92标准所定义的FROM子句的连接语法格式为:

FROM 表名join_type 表名[ON (连接条件)]

连接操作中的ON (连接条件) 子句指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构

成。

连接查询分类:

1.自连接查询,对同一个表进行连接操作

2.内连接查询,<又分为:自然连接、等值连接、不等值连接三种>

3.外连接查询,<又分为:左外连接、右外连接、全外连接三种>

4.交叉连接查询,也作无条件查询。

5.联合查询

----------------------------

一。自连接查询:

一个表自己与自己建立连接称为自连接或自身连接。

进行自连接就如同两个分开的表一样,可以把一个表的某一行与同一表中的另一行连接起来。例:

查询选学“101”课程的成绩高于“9505201”号学生成绩的所有学生记录,

并按成绩从高到低排列。

select x.* from sclass x,sclass y

where https://www.sodocs.net/doc/9016225525.html,o=''101'' and x.degree>y.degree and y.sno=''9505201'' and https://www.sodocs.net/doc/9016225525.html,o=''101'' order by x.degree desc

----------------------------

二。内连接(INNER JOIN):

内连接是最常用的一种连接方式,它只返回两个数据集合之间匹配关系的那些行.

将位于两个互相交叉的数据集合中重叠部分以内的那些数据行连接起来.

内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,

并列出这些表中与连接条件相匹配的数据行。

根据所使用的比较方式不同,内连接查询操作列出与连接条件匹配的数据行,

它使用比较运算符比较被连接列的列值。

语法:

select 字段名列表from 表名[inner] join 表名on 连接条件[where 条件表达式]

例:

select 学生表.学号,学生表.姓名,学生表.班级代号,成绩表.课程代号,成绩表.课程成绩

from 学生表INNER JOIN 成绩表

on 学生表.学号=成绩表.学号

where 学生表.班级代号=''200201''

select x.sno,x.sname,https://www.sodocs.net/doc/9016225525.html,o,y.degree from student x

INNER join sclass y on x.sno=y.sno where x.sclass=''95文秘1'' 内连接分三种:

1、等值连接:

所谓等值连接,是指表之间通过“等于”关系连接起来,产生一个临时表,

然后对该临时表进行处理后生成最终结果。其查询结果中列出被连接表中的所有列,包括其中的重复列。

(1)查询所有学生的sno,cname,degree列:

SELECT x.sno,https://www.sodocs.net/doc/9016225525.html,ame,x.degree

FROM score x,course y

WHERE https://www.sodocs.net/doc/9016225525.html,o=https://www.sodocs.net/doc/9016225525.html,o

(2)查询“95033”班所选课程的平均分:

SELECT https://www.sodocs.net/doc/9016225525.html,o,avg(y.degree) as "平均分"

FROM student x,score y

WHERE x.class=''95033'' and x.sno=y.sno group by https://www.sodocs.net/doc/9016225525.html,o

(3)查询所有学生的student,score表信息:

select x.*,y.* from student x,score y where x.sno=y.sno

用等值连接列出authors和publishers表中位于同一城市的作者和出版社:SELECT * FROM authors AS a INNER JOIN publishers AS p ON a.city=p.city

2、不等值连接:

是指表之间的连接关系不是“等于”,而是其它关系。

这些运算符包括>、>=、<=、<、!>、!<和<>。

(1)查询所有学生的sno,cno,rank列:

select sno,cno,rank

from score,grade

where degree between low and upp order by rank

(2)

select x.sno,x.sname,https://www.sodocs.net/doc/9016225525.html,o,y.degree

from student x,score y

where x.sno!=y.sno

3、自然连接:

在等值连接中消除重复列就是自然连接。

(1)

select x.sno,x.sname,https://www.sodocs.net/doc/9016225525.html,o,y.degree

from student x,score

where x.sno=y.sno

用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和state):SELECT a.*?p.pub_id?p.pub_name?p.country

FROM authors AS a INNER JOIN publishers AS p ON a.city=p.city

----------------------------

三。外连接(OUTER JOIN):

与内连接不同的是,外连接不只列出与连接条件相匹配的行,

而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)

中所有符合搜索条件的数据行。

外连接是对内连接的扩充,除了将两个数据集合中重叠部分以内的那些数据行连接起来之外, 还可以根据要求返回左侧或右侧数据集合中非匹配的数据或全部的数据.

即左外连接(LEFT OUTER JOIN);

右外连接(RIGHT OUTER JOIN);

全部连接(FULL OUTER JOIN).

外连接返回的结果集中的一些数据看起来和内连接返回的数据完全一样,

但有一些数据也与内连接返回的数据不同,这些数据行的某些部分是来自于表中的数据,

另一部分是NULL值,产生这些NULL值的原因是因为另一表中不包含与指定表相匹配的数据项内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。注:外连接强以使不满足条件的记录也出现在结果集中。

外连接语法:

Select 字段名列表from 表名Left|Right|Full [Outer] join 表名ON 连接条件外连接分为:

1。左外连接(LEFT OUTER JOIN或LEFT JOIN):

在结果表中包含第一个表中满足条件的所有记录。

如果是在连接条件上匹配的记录,则第二个表返回相应值,否则第二个表返回空值。

select 学生表.学号,学生表.姓名,成绩表.课程代号,成绩表.课程成绩

from 学生表left outer join 成绩表

on 学生表.学号=成绩表.学号

2。右外连接(RIGHT OUTER JOIN或RIGHT JOIN):

在结果表中包含第二个表中满足条件的所有记录。

如果是在连接条件上匹配的记录,则第一个表返回相应值,否则第一个表返回空值。

select 学生表.学号,学生表.姓名,成绩表.课程代号,成绩表.课程成绩

from 学生表right outer join 成绩表

on 学生表.学号=成绩表.学号

3。全外连接(FULL OUTER JOIN或FULL JOIN):

在结果表中包含两个表中满足条件的所有记录。

如果是在连接条件上匹配的元组,则另一个表返回相应值,否则另一个表返回空值。select 学生表.学号,学生表.姓名,成绩表.课程代号,成绩表.课程成绩

from 学生表full outer join 成绩表

on 学生表.学号=成绩表.学号

例子:

SELECT a.*,b.* FROM student as a left JOIN sclass as b

ON a.sno=b.sno and a.sno=''9502101''

go

SELECT a.*,b.* FROM student as a right JOIN sclass as b

ON a.sno=b.sno and a.sno=''9502101''

go

SELECT a.*,b.* FROM student as a full JOIN sclass as b

ON a.sno=b.sno

go

----------------------------

四。交叉连接:

交叉连接不使用任何连接条件来限制结果集合,将各表的记录以“笛卡尔”积的方式组合起来, 是分别使用两个数据源中的行以所有可能的方式进行组合,

即数据集中的每一行都要与另一表每一行组成一个新的行.

例如:一表中有三条记录,另一表有4条记录,交叉连接后,结果集合将由12条记录组成.

交叉连接(CROSS JOIN)没有WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,

返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中

符合查询条件的数据行数。

例,

titles表中有6类图书,而publishers表中有8家出版社,

则下列交叉连接检索到的记录数将等于6*8=48行。

select * from student,sclass

SELECT * FROM student a CROSS JOIN sclass ORDER BY a.sno

----------------------------

五。联合查询

UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联合查询。

UNION的语法格式为:

select_statement

UNION [ALL] selectstatement

[UNION [ALL] selectstatement][…n]

其中selectstatement为待联合的SELECT查询语句。

ALL选项表示将所有行合并到结果集合中。不指定该项时,

被联合查询结果集合中的重复行将只保留一行。

联合查询时,查询结果的列标题为第一个查询语句的列标题。

因此,要定义列标题必须在第一个查询语句中定义。要对联合查询结果排序时,

也必须使用第一查询语句中的列名、列标题或者列序号。

在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,

并且每个查询选择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型

在自动转换时,对于数值类型,系统将低精度的数据类型转换为高精度的数据类型。

在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。

例如:

查询1 UNION (查询2 UNION 查询3)

select topicbody,posttime from bbs_topic

union all

select replybody,posttime from bbs_reply

----------------------------

六。复杂查询

---复合连接

select a.学号,a.姓名,b.课程代号,b.课程成绩,c.课程名称,d.教师代号

from 学生表a,成绩表b,课程表c,教学表d

where (a.学号=b.学号)

and (b.课程代号=c.课程代号)

and(c.课程代号=d.课程代号)

三个表以上的连接

SELECT dbo.kb.xq, dbo.kbk.kcmc, dbo.kbk.lbdh, dbo.kbk.jsmc, dbo.kb.jse, dbo.bj.bj, dbo.kb.jc, 2 AS num, dbo.kb.zc,

CASE dbo.kb.ds WHEN ''单'' THEN ''1'' WHEN ''双'' THEN ''2'' WHEN '' '' THEN ''0'' END

AS ds,

dbo.kb.zc1, dbo.kb.zc2

FROM dbo.kb INNER JOIN

dbo.bj ON dbo.kb.bh = dbo.bj.bh INNER JOIN

dbo.kbk ON dbo.kb.xq = dbo.kbk.xq AND dbo.kb.bh = dbo.kbk.bh AND dbo.kb.kcdm = dbo.kbk.kcdm

WHERE (dbo.kb.jc = 1) OR

(dbo.kb.jc = 3) OR

(dbo.kb.jc = 5) OR

(dbo.kb.jc = 7) OR

(dbo.kb.jc = 9) OR

(dbo.kb.jc = 11)

----------------------------

总结:

无论哪种连接都不能对text、ntext和image数据类型列进行直接连接,

但可以对这三种列进行间接连接。

例如:

SELECT p1.pub_id?p2.pub_id?p1.pr_info

FROM pub_info AS p1 INNER JOIN pub_info AS p2

ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)

简单数据库查询语句

数据查询语言(SELECT语句) 数据操纵语言(INSERT, UPDATE, DELETE语句) 数据定义语言(如CREATE, DROP等语句) 数据控制语言(如COMMIT, ROLLBACK等语句 超详细的SQL语句语法2008-07-11 14:25简单的Transact-SQL查询只包括选择列表、FROM 子句和WHERE子句 一、简单查询 简单的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 9、说明:in 的使用方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,

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 别名 表名别名例如上面语句可用表的别名格式表示为: 复制内容到剪贴板

常用MySQL语句大全

MySQL服务的配置和使用 修改MySQL管理员的口令:mysqladmin –u root password 密码字符串 如:mysqldmin –u root password 111111 连接MySQL服务器,使用命令:mysql [-h 主机名或IP地址] [-u 用户名] [-p] 如:mysql –u root –p 如已有密码需修改root密码用命令: mysqladmin –u root –p password 新密码字符串 如:mysqladmin –u root –p password 111111 创建数据库格式为:CREATE DATABASE 数据库名称; 如:mysql>create database abc; 默认创建数据库保存在/var/lib/mysql中 查看数据库是 mysql>show abc; 选择数据库是 USE 数据库名称; 如:mysql>use abc; 删除数据库是 DROP DATABASE 数据库名称;如:mysql>drop database abc; 数据库的创建和删除 创建表是CREATE TABLE 表名称(字段1,字段2,…[表级约束]) [TYPE=表类型]; 其中字段(1,2 )格式为:字段名字段类型[字段约束] 如创建一个表student,如下: mysql>create table student ( sno varchar(7) not null, 字段不允许为空 sname varchar (20 )not null, ssex char (1) default …t?, sbirthday date, sdepa char (20), primary key (sno) 表的主键 ); 可用describe命令查看表的结构。 默认表的类型为MYISAM,并在/var/lib/mysql/abc 目录下建立student.frm(表定

MySQL语法语句汇编

MySQL语法语句大全 一、SQL速成 结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件(如表、索引、字段等)的建立和操纵。 以下是一些重要的SQL快速参考,有关SQL的语法和在标准SQL上增加的特性,请查询MySQL手册。 1.创建表 表是数据库的最基本元素之一,表与表之间可以相互独立,也可以相互关联。创建表的基本语法如下: create table table_name (column_name data无效{identity |null|not null}, …) 其中参数table_name和column_name必须满足用户数据库中的识别器(identifier)的要求,参数data无效是一个标准的SQL类型或由用户数据库提供的类型。用户要使用non-null从句为各字段输入数据。 create table还有一些其他选项,如创建临时表和使用select子句从其他的表中读取某些字段组成新表等。还有,在创建表是可用PRIMARY KEY、KEY、INDEX等标识符设定某些字段为主键或索引等。 书写上要注意: 在一对圆括号里的列出完整的字段清单。 字段名间用逗号隔开。 字段名间的逗号后要加一个空格。 最后一个字段名后不用逗号。 所有的SQL陈述都以分号";"结束。 例: mysql> CREATE TABLE test (blob_col BLOB,index(blob_col(10))); 2.创建索引 索引用于对数据库的查询。一般数据库建有多种索引方案,每种方案都精于某一特定的查询类。索引可以加速对数据库的查询过程。创建索引的基本语法如下: create index index_name on table_name (col_name[(length)],... ) 例: mysql> CREATE INDEX part_of_name ON customer (name(10)); 3.改变表结构 在数据库的使用过程中,有时需要改变它的表结构,包括改变字段名,甚至改变不同数据库字段间的关系。可以实现上述改变的命令是alter,其基本语法如下: alter table table_name alter_spec [,alter_spec ...] 例: mysql> ALTER TABLE t1 CHANGE a b INTEGER; 4.删除数据对象

mysql增删改查基本语句

mysql 增、删、改、查基本语句 数据库的链接和选择及编码 $link=mysql_connect("localhost","root","123456") or die("数据库连接失败".mysql_error()); $sel=mysql_select_db("login",$link) or die("数据库选择失败".mysql_error()); mysql_query("set names 'utf8'"); 添加数据 $link=mysql_connect("localhost","root","123456") or die("数据库连接失败".mysql_error()); $sel=mysql_select_db("login",$link) or die("数据库选择失败".mysql_error()); mysql_query("set names 'utf8'",$sel); $add="insert into title(title,content,username,time) values('$title','$content','$username',$time)"; $query=mysql_query($add); if($query){ echo "add sucess"; echo ""; } else echo "add false"; 删除数据 $link=mysql_connect("localhost","root","123456") or die("数据库连接失败".mysql_error()); $sel=mysql_select_db("login",$link) or die("数据库选择失败".mysql_error()); mysql_query("set names 'utf8'"); $id=$_GET['id']; $delete="delete from title where id='$id'"; $query=mysql_query($delete); if($query){ echo "delete sucess!"; echo ""; } else echo "delete false"; 改数据 $link=mysql_connect("localhost","root","123456") or die("数据库连接失败".mysql_error()); $sel=mysql_select_db("login",$link) or die("数据库选择失败".mysql_error()); mysql_query("set names 'utf8'",$sel);

数据库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数据库查询语句范例

推荐一、简单查询 简单的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 别名表名别名

mysql命令语句大全

show databases; 显示数据库 create database name; 创建数据库 use databasename; 选择数据库 drop database name 直接删除数据库,不提醒 show tables; 显示表 describe tablename; 显示具体的表结构 select 中加上distinct去除重复字段 mysqladmin drop databasename 删除数据库前,有提示。 显示当前mysql版本和当前日期 select version(),current_date; 修改mysql中root的密码: shell>mysql -h localhost -u root -p //登录 mysql> update user set password=password("xueok654123") where user='root'; mysql> flush privileges //刷新数据库 mysql>use dbname; 打开数据库: mysql>show databases; 显示所有数据库 mysql>show tables; 显示数据库mysql中所有的表:先use mysql;然后 mysql>describe user; 显示表mysql数据库中user表的列信息); grant 创建用户firstdb(密码firstdb)和数据库,并赋予权限于firstdb数据库 mysql> create database firstdb; mysql> grant all on firstdb.* to firstdb identified by 'firstdb' 会自动创建用户firstdb mysql默认的是本地主机是localhost,对应的IP地址就是127.0.0.1,所以你用你的IP 地址登录会出错,如果你想用你的IP地址登录就要先进行授权用grant命令。 mysql>grant all on *.* to root@202.116.39.2 identified by "123456"; 说明:grant 与on 之间是各种权限,例如:insert,select,update等 on 之后是数据库名和表名,第一个*表示所有的数据库,第二个*表示所有的表 root可以改成你的用户名,@后可以跟域名或IP地址,identified by 后面的是登录用的密码,可以省略,即缺省密码或者叫空密码。 drop database firstdb; 创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个 mysql> grant all privileges on *.* to user@localhost identified by 'something' with 增加新用户 格式:grant select on 数据库.* to 用户名@登录主机identified by "密码"

数据字典SQL查询语句

数据字典sql查询语句 1.数据字典视图(动态性能表) V$fixed_table / dictionary / dict / dict_columns 2.查詢数据库的名字,创建日期等内容。 Select name, created, log_mode, open_mode From v$database ; 3.查詢数据库的计算器的主机名,数据库的实例名及系统的版本。 Select host_name, instance_name, version From v$instance ; 4.查詢数据库管理系统的版本 Select * from v$version ; 5.查詢数据库的用户及创建数据库的时间 Select username, created from dba_users ; 6.查詢数据库的控制文件 Select * from v$controlfile ; Select value From v$parameter Where name = …control_files? ; 7.查詢数据库控制文件中全部记录的相关信息 Select type, record_size, records_total, records_used From v$controlfile_record_section ; 8.查詢数据库的重做日志的配置信息 Select group#, members, bytes, status, archived From v$log ; 9.查詢重做日志(成员)文件所存放的具体位置 Select * from v$logfile ; 10.查詢ORACLE数据库归档文件的具体位置 Archive log list

mysql数据库常用语句大全

mysql数据库常用语句 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、说明: 删除新表: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 范围

数据库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,sal*13+nvl(comm,0) FROMemp; nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm; comm中无值,则nvl(comm,1)=0。 SQL>SELECT ename, sal*13+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','ANAL YST'); 8. 查询字段内容为空/非空的语句 SQL>SELECT * FROMemp 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,avg,sum,count) SQL>SELECT MAX(sal),MIN(age),A VG(sal),SUM(sal) from emp; SQL>SELECT * FROM emp where sal=(SELECT MAX(sal) from emp)); SQL>SELEC COUNT(*) FROM emp; 2. group by(用于对查询结果的分组统计)和having子句(用于限制分组显示结果)SQL>SELECT deptno,MAX(sal),A VG(sal) FROM emp GROUP BY deptno; SQL>SELECT deptno, job, A VG(sal),MIN(sal) FROM emp group by deptno,job having A VG(sal)<2000; 对于数据分组的总结: a. 分组函数只能出现在选择列表、having、order by子句中(不能出现在where中) b. 如果select语句中同时包含有group by, having, order by,那么它们的顺序是group by, having, order by。 c. 在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须出现在group by子

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 --检索查询结果打开一个游标

mysql sql语句大全_mysql sql语句面试题_mysql的常用sql语句推荐

mysql sql语句大全_mysql sql语句面试题_mysql的常用sql 语句推荐 今天我们向大家整理了一些【mysql的常用sql语句】系列文章,希望大家对【mysql的常用sql语句】技术点有更深的了解。 小编下面整理一下mysql sql语句大全_mysql sql语句面试题_mysql的常用sql语句的资料给大家作为参考。mysql sql 语句大全_mysql sql语句面试题_mysql的常用sql语句推荐[05-25] MySQL常用SQL语句的介绍[05-25] MySQL 存储过程执行动态SQL语句详解[05-23] MySql 常用操作的SQL语句的介绍[05-22] mysql语句插入多条数据的方法[05-21] 远程用户访问mysql服务sql语句的心得体会[05-21] MySQL 存储过程执行动态SQL语句的介绍[05-20] MySQL 复制表结构、内容到另一张表的SQL语句的介绍[05-20] mysql 查询今天、昨天、近7天、近30天、本月、上一月的SQL语句的介绍[05-20] mysql 获取一天、一周、一月时间的sql语句的方法[05-19] mysql把一个表某字段复制到另一张表的某个字段的SQL语句的方法[05-17] MySQL SQL 语句优化的介绍[05-10] mysql通过查看跟踪日志跟踪执行 的sql语句的方法[05-10] mysql语句运行时间的查看方法[05-10] mysql建表常用sql语句的介绍[05-10] MySQL字段

自增自减的SQL语句的推荐[05-04] SQL语句行列转换的两种方法case...when与pivot函数的介绍[05-04] SQL语句语法汇总的推荐[05-04] sql语句like的用法的介绍[05-04] MySQL查询数据库占用磁盘大小、单个库所有表的大小的sql语句[05-02] sql语句left_join、inner_join中的on与where 的区别介绍[05-02] MySql 获取某字段存在哪个表的sql语句的介绍[04-29] SQL语句Replace INTO与INSERT INTO 不同的介绍[04-29] 数据库字段分组显示数据的sql语句的介绍[04-29] MySQL批量删除指定前缀表的sql语句的推荐[04-29] MySQL优化sql语句查询常用30种方法的推荐[04-25] MySQL 查询当前正在运行的SQL语句[04-19] sql 语句的常用语法[04-19] PHP+Mysql常用SQL语句[04-05] 将数字标识转为汉字展示的sql语句[04-05] 数据表字段删除、添加的SQL语句[04-05] sql批量修改字段值的方法_sql 语句修改字段值[03-03] mysql 实现查看表结构的SQL语句[03-03] mysql 获取当前日期周一和周日的SQL语句[03-03] mysql 实现按年度、季度、月度、周、日查询的SQL语句[12-16] MySQL数据库操作实现的6条SQL语句[12-16] 将blob的char取出来并转成数字保存在其它字段的sql语句[12-16] mysql常用SQL语句小结[10-24] mySQL使用Explain检查测Sql语句执行效率[10-24] mysql查询当天,昨天,近7天,近30天,本月,上一月数据的SQL语句[10-18]

数据库查询语句关键字总结

看过牛腩视频后,前17集讲后台代码的编写,尤其讲到查询语句的时候,顿时感觉原来学习过的查询语句中用到的关键字烟消云散了,啥都不记得了,通过看视频,帮着回忆了一部分,在这里总结一下,查询语句中用到的关键字的含义及使用。 一、select语句(单个表) 1.最简单的查询: select * from [where ] select column1,column2....from [where] 这里需要注意的是where子句中条件过滤使用到的关键字,比如用到逻辑运算符like 中的’%‘(匹配一个或多个字符)和’_‘(仅匹配一个)等。这个在新闻发布系统中也有用到。 例如:按标题搜索: view sourceprint? 1.Select top 10n.id,n.title,n.createtime,c.[name] 2.from news n inner join category c on c.caid=c.id 3.where n.title like '%'+ @title+ '%' 当然还有很多,例如between,not ,in等关键字的使用也很重要。 2.DISTINCT关键字 这个关键字,主要用来取出列中唯一的值,比如:记录中的一个字段值(city)如果有重复(廊坊,北京,廊坊,北京),那么利用DISTINCT关键字取出唯一值,即任何重复的值只计数一次,结果为为:(廊坊,北京)。 view sourceprint? 1.select DISTINCT city from [table] 3.使用别名 利用别名可以显示我们想要的名字,方便阅读。select city as 城市from ... 4.group by 和having子句 group by 用来对查询到的结果集进行分组,必须位于select语句中的from子句或where子句之后。 having子句类似于where子句,紧跟在group by子后,作为一个查询条件。

mysql语句大全

MYSQL常用命令 1.导出整个数据库 mysqldump -u 用户名-p --default-character-set=latin1 数据库名> 导出的文件名(数据库默认编码是latin1) mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导出一个表 mysqldump -u 用户名-p 数据库名表名> 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql 3.导出一个数据库结构 mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:wcnc_db.sql -d 没有数据–add-drop-table 在每个create语句之前增加一个drop table 4.导入数据库 A:常用source 命令 进入mysql数据库控制台, 如mysql -u root -p mysql>use 数据库 然后使用source命令,后面参数为脚本文件(如这里用到的.sql) mysql>source wcnc_db.sql B:使用mysqldump命令 mysqldump -u username -p dbname < filename.sql C:使用mysql命令 mysql -u username -p -D dbname < filename.sql 一、启动与退出 1、进入MySQL:启动MySQL Command Line Client(MySQL的DOS界面),直接输入安装时的密码即可。此时的提示符是:mysql> 2、退出MySQL:quit或exit 二、库操作 1、、创建数据库 命令:create database <数据库名> 例如:建立一个名为xhkdb的数据库 mysql> create database xhkdb; 2、显示所有的数据库 命令:show databases (注意:最后有个s) mysql> show databases; 3、删除数据库 命令:drop database <数据库名> 例如:删除名为xhkdb的数据库 mysql> drop database xhkdb; 4、连接数据库 命令:use <数据库名> 例如:如果xhkdb数据库存在,尝试存取它: mysql> use xhkdb; 屏幕提示:Database changed

数据库查询语句

这是我个人整理的一点关于数据库的查询操作,希望对朋友们有所帮助。由于个人能力有限其中有些查询不准确,由于查询使用的数据库可能不同,其中难免有错误之处,请朋友们自行修改,不足之处请多多包涵。 --1.查询年纪为的所有学生的名称按编号升序排列。 select sid as学号,sname as姓名from Students where sid like'07%' order by sid asc --2.查询学生的选课成绩合格的课程成绩,并把成绩换算为积点(分为对应积点,每增加分,积点增加.1) select sid 学号,cid 课程编号,1+(score-60)*0.1 积点 from Choices where score>=60 --3.查询课时为或的课程名称。 select cname 课程名称,hour 课时 from Courses where hour=48 or hour=32 --4.查询所有课程名称中含有"Java"的课程编号。 select cid 课程编号,cname 课程名称 from Courses where cname like'%JAVA%' --5.查询所有选课记录的课程号(不重复)。 select distinct cid 课程号 from Courses --6.统计所有教师的平均工资。 select avg(salary)教师平均工资 from Teachers --7.查询所有学生的编号、姓名、和平均成绩,按平均成绩降序排列(有错误) select Students.sid,Students.sname,score from Students,Choices where Students.sid=Choices.sid order by(score) compute avg(score) go --8.统计各人课程的选课人数和平均成绩 select cid 课程号,count(cid)选修人数,avg(score)平均成绩 from Choices group by cid --9.查询至少选修三门课程的学生编号 select Students.sid 学号,count(cid)选修门数 from Students,Choices where Students.sid=Choices.sid group by Students.sid

MySQl基本查询语句练习

六、select语句练习 简单语句查询 1. select * from students; ------显示表中的所有内容 2. select Name,Age from students; ------显示students表中的Name和Age 列 3. select distict Gender from students; ------相同的内容只显示一次 选择students表中年龄大于20的同学(以下三种方式): 4. select * from students where Age>=20; 5. select Name,Age from students where Age>=20; 6. select Name,Age from students where Age+1>20; 查找年龄大于20的同学并且按降序排列: 7. select Name,Age from students where Age>20 order by Age desc; 年龄大于等于20并且是男性的同学: 8. select Name from students where Age>20 and Gender='M'; 年龄不大于20的同学: 9. select Name,Age,Gender from students where not Age>20; 小于等于20的女同学: 10. select Name,Age,Gender from students where not (Age>20 or Gen der=…M?); 年龄在(21-24)之间的同学(以下两种方式): 11. select Name,Age from students where Age>20 and Age<25; 12. select Name,Age from students where Age between 20 and 25; 显示以Y开头的名称(这里限定了姓名的长度)("_"表示任意单个字符): 13. select Name from students where Name like 'Y___'; 显示以Y开头的姓名: 14. select Name from students where Name like 'Y%'; 名称中含有ing的名称(“%”表示任意长度的任意字符): 15. select Name from students where Name like '%ing%'; 显示以M或N或Y开头的名字(支持正则表达式): 16. select Name from students where Name rlike '^[MNY].*$'; 显示年龄是18、20、25的同学: 17. select Name from students where Age IN (18,20,25); 显示挑选课程号(CID1)为空的同学: 18. select Name from students where CID1 is null; 把查询后的结果进行降序排序(ASC升序,desc降序) 19. select Name,CID1 from students where CID1 is not null order b y CID1 desc; 显示查询的Name表头名变为name 20. select Name AS Student_Name from students; 隔两行数据向后取三行数据: 21. select Name from students limit 2,3; 所有同学的平均年龄: 22. select AVG(age) from students; 显示年龄最大的同学:

相关主题