- 相关推荐
经典SQL语句大全
经典SQL语句大全1
内连接(inner join)。
外连接:
全连接(full join)、左连接(left join)、右连接(right join)。
交叉联接(cross join)。
外连接与内连接不一样,外连接返回的查询结果中不仅包含符合条件的行,还包括左表(左外连接),右表(右外连接)或者两个连接表(全外连接)中的所有不符合条件的数据行。
1.左连接 (left [outer] join)
左外连接就是将左表的所有数据分别于右表的每条数据进行连接组合,返回的结果除内连接的数据外,还有左表中不符合条件的数据,并在右表的相应列中填上null值。
SQL语句如下:
select * from mt_pb_org o left join mt_pb_orgframe f on o.PB_ORGFRAMEID = f.PB_ORGFRAMEID;
等价语句:
select * from mt_pb_org o,mt_pb_orgframe f where o.pb_orgframeid = f.pb_orgframeid(+);
2.右连接 (right [outer] join)
右外连接就是将右表中的所有数据分别与左表的每条数据进行连接组合,返回的结果除了内连接的数据外,还有右表中不符合条件的数据,并在左表相应的列中填上null值。
SQL语句如下:
select * from mt_pb_org o right join mt_pb_orgframe on o.pb_orgframeid = f.pb_orgframeid;
等价语句:
select * from mt_pb_org o,mt_pb_orgframe f where o.pb_orgframeid(+) = f.pb_orgframeid;
3.全外连接 (full [outer] join)
全外连接就是将左表的所有数据分别与右表的每条数据进行连接组合,返回的结果除了内连接的'数据外,还有两个表中不符合条件的数据,并在左表或者右表的相应列中填上null值。
SQL语句如下:
select * from mt_pb_org o full join mt_pb_orgframe o.pb_orgframeid = f.pb_orgframeid;
4.交叉连接(cross join)
交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
SQL语句如下:
select * from mt_pb_org o cross join mt_pb_orgframe f;
经典SQL语句大全2
单表的MySQL UPDATE语句:
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT row_count]
多表的UPDATE语句:
UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]
UPDATE语法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。如果没有WHERE子句,则更新所有的行。如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。LIMIT子句用于给定一个限值,限制可以被更新的行的数目。
MySQL UPDATE语句支持以下修饰符:
如果您使用LOW_PRIORITY关键词,则UPDATE的执行被延迟了,直到没有其它的客户端从表中读取为止。
如果您使用IGNORE关键词,则即使在更新过程中出现错误,更新语句也不会中断。如果出现了重复关键字冲突,则这些行不会被更新。如果列被更新后,新值会导致数据转化错误,则这些行被更新为最接近的合法的值。
如果您在一个表达式中通过tbl_name访问一列,则UPDATE使用列中的当前值。例如,以下语句把年龄列设置为比当前值多一:
MySQL> UPDATE persondata SET ageage=age+1;
MySQL UPDATE赋值被从左到右评估。例如,以下语句对年龄列加倍,然后再进行增加:
MySQL> UPDATE persondata SET ageage=age*2, ageage=age+1;
如果您把一列设置为其当前含有的值,则MySQL会注意到这一点,但不会更新。
如果您把被已定义为NOT NULL的列更新为NULL,则该列被设置到与列类型对应的默认值,并且累加警告数。对于数字类型,默认值为0;对于字符串类型,默认值为空字符串(');对于日期和时间类型,默认值为“zero”值。
UPDATE会返回实际被改变的行的.数目。MySQL_info() C API函数可以返回被匹配和被更新的行的数目,以及在UPDATE过程中产生的警告的数量。
您可以使用LIMIT row_count来限定UPDATE的范围。LIMIT子句是一个与行匹配的限定。只要发现可以满足WHERE子句的row_count行,则该语句中止,不论这些行是否被改变。
如果一个UPDATE语句包括一个ORDER BY子句,则按照由子句指定的顺序更新行。
您也可以执行包括多个表的UPDATE操作。table_references子句列出了在联合中包含的表。以下是一个例子:
SQL>UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;
以上的例子显示出了使用逗号操作符的内部联合,但是multiple-table UPDATE语句可以使用在SELECT语句中允许的任何类型的联合,比如LEFT JOIN。
注释:您不能把ORDER BY或LIMIT与multiple-table UPDATE同时使用。
在一个被更改的multiple-table UPDATE中,有些列被引用。您只需要这些列的MySQL UPDATE权限。有些列被读取了,但是没被修改。您只需要这些列的SELECT权限。
如果您使用的multiple-table UPDATE语句中包含带有外键限制的InnoDB表,则MySQL优化符处理表的顺序可能与上下层级关系的顺序不同。在此情况下,语句无效并被 回滚。同时,更新一个单一表,并且依靠ON UPDATE功能。该功能由InnoDB提供,用于对其它表进行相应的修改。
目前,您不能在一个子查询中更新一个表,同时从同一个表中选择。
经典SQL语句大全3
1、查询语句:主要是由select关键字完成
2、事务控制语句:主要由commit、rollback和savepoint三个关键字完成
3、DML(数据操作语言)语句:主要由、update和三个关键字完成
4、DDL(数据定义语言)语句:主要由create、alter、drop和truncate四个关键字完成
5、DCL(数据控制语言)语句:主要由grant、revoke两个关键字完成
经典SQL语句大全4
1、创建数据库: create database 数据库名
如:create database student;
2、连接到一个已经存在的数据库: use 数据库名
如:use student;
3、删除数据库:drop database 数据库名
如: drop database student;
4、创建表:create table 表名列名列的数据类型列的约束])
如:create table stuInfo(stuId int primary key,stuName var20) not null)
5、删除表: 表名
如: stuInfo;
6、修改表:alter table
给表添加新列: alter table 表名 add 列名列的`数据类型
添加多列,中间用逗号隔开
如:alter table stuInfo add stuGender var10)
修改某列的数据类型:alter table 表名 modify 列名新数据类型
如:alter table stuInfo modify stuGender int
修改列名:alter table 表名 change 老列名新列名数据类型
如:alter table stuInfo change stuName stuAddress var30)
删除列:alter table 表名 drop 列名
如: alter table stuInfo drop stuGender
7、将创建的表的语句反向导出: show create table 表名
8、查询表的所有内容:select * from 表名
查询表的部分内容: select 列名列表 from 表名
9、查询表结构:show columns from 表名
10、插入单行数据: into 表名列名列表) values(值列表)
11、插入多行数据:作用相当于将数据从一个表复制到另一个表
into 表名 (列名列表) select
如将stuInfo表中的所有的学生姓名复制到students表中的stuName列中: into students(stuName) select stuName from stuInfo
12、删除数据: from 表名 where过滤条件
如删除stuID为4的人的数据: from stuInfo where stuId=4
经典SQL语句大全5
1.Top排序问题.
我们经常要对表某个字段进行排序,然后取前N名.所以我们会写如下的SQL语句:
selecttop100*from表
orderbyScoredesc
如果表非常大的话,那么这样的操作是非常消耗资源的,因为SQLSERVER要对整个表进行排序,然后取前N条记录.这样的造作是在Temdb里边进行的,所以极端的时候会报Log已满这样的错误.为了避免进行全表的排序,我们要做的仅仅是在Score上建立索引,这样因为Score索引的叶级是有序的,只要在Score所以的`页级取前100个,然后根据书签查找到实际的记录,这样对DB的性能就会有极大的提升.
2.同一天问题.
我们经常要查找和一个日期同一天的记录,所以我们回写如下的SQL语句;
declare@DateTimedatetime
set@DateTime=getdate()
select*from表
whereconvert(10),F_Time,120)=convert(10),@DateTime,120)
但是这样写的SQL语句带来的问题就是不能使用F_Time上的索引了.为了近可能的使用F_Time上的索引,我们可以使用时间段查询的方式来代替上边的语句.
declare@startdatetime
declare@enddatetime
declare@datetimedatetime
set@datetime=getdate()
tart=convert(10),@datetime,120)--一天的其始时间
set@end=dateadd(ss,-1,dateadd(d,1,@start))--一天的结束时间
select*from表whereF_Timebetween@startand@end
这样就解决了使用不上索引的问题.
3.利用索引进行分组操作.】我们经常要对某一字段进行分组,而对另外一些字段进行聚合操作.如果我们对分组的字段合理的使用索引,可以加快我们分组的速度.下边以Northwind的Orders表为例:
--orders表的EmployeeID上建有索引.
selectEmployeeID,count(*)
fromorders
groupbyEmployeeID
--查看执行计划,此查询利用了EmployeeID上的索引.如改成如下查询:
selectEmployeeID,sum(Freight)
fromorders
groupbyEmployeeID
--查看执行计划,此查询则没有使用EmployeeID上的索引.而是使用了全表扫描.那么原因是什么呢?是因为Freight没有在EmployeeID的索引上,所以通过索引不能得到结果.而如果通过书签查询的成本太高,所以SQLSERVER选择了使用全表扫描.而如果我们执行在EmployeeID和Freight上建立复合索引呢?
createindexidx_EmployeeIDonorders(EmployeeID,Freight)
--再次执行第二个查询.查看执行计划.SQLSERVER使用的我们建立的索引.只需要使用索引就可以查询到结果,极大的提高了我们的查询速度.
经典SQL语句大全6
SQL的意思是结构化查询语言,其主要功能是同各种数据库建立联系,进行沟通.查询指的是对存储于SQL的数据的请求。查询要完成的任务是:将Select语句的结果集提供给用户。Select语句从SQL中检索出数据,然后以一个或多个结果集的形式将其返回给用户。
==========================================================
Select基本语法结构
==========================================================
Select[predicate]{*|table.*|[table.]]field[,[table.]field2[,...]}
[ASalias1[,alias2[,...]]]
[INTOnew_table_name]
FROMtableexpression[,...]
[Where...]
[GROUPBY...]
[ORDERBY...][ASC|DESC]]
predicate-->指定返回记录(行)的数量,可选:ALL,TOP
*--------->指定表中所有字段(列).
table----->指定表的名称.
field----->指定表中字段(列)的名称
[ASalias]-替代表中实际字段(列)名称的化名.
[INTOnew_table_name]-->创建新表及名称.
tableexpression---->表的名称.
[GROUPBY...]表示以该字段的值分组
[ORDERBY...]表示按升序排列,降序选DESC;
------------------------------------------------------------
1选择列
------------------------------------------------------------
sql语句在access中的输入方法
(1)选择"查询"-->新建-->默认设计视图-->点击确定
(2)关闭"显示表对话框"
(3)在菜单拦选择"视图"--->SQL视图,就可以输入SQL语句了
示例1_1_选择所有字段
Select*
FROMuseres;
示例1_2_选择部分字段
Selectuser_name,real_name,submit_date
FROMuseres;
示例1_3查询两个表中的字段
Select图书信息表.图书条码,借书信息表.图书条码
FROM图书信息表,借书信息表;
示例解读:
通过上面简单示例我们体会到
(1)Select子句选择列表,它指出查询结果集所包含的字段(列)及其属性,选择所有列时用通配府*,选择部分列时要用逗号隔开
(2)FROM子句指出查询的表名,要指定多个表时中间用逗号隔开
------------------------------------------------------------
2TOP指定返回记录数量
------------------------------------------------------------
示例1_4_返回记录数量
SelectTOP3*
FROMuseres;
-------------------------------------------------------------
3AS派生新字段
-------------------------------------------------------------
示例1_5_派生新字段
Selectuser_name,(submit_date+30)ASnew_date
FROMuseres;
------------------------------------------------------------
4Where指定条件进行筛选
------------------------------------------------------------
示例1_6等号查找指定记录
Select*
FROMuseres
Whereuseres.real_name="红红";
示例1_7年龄大于30的人
Select*
FROMuseres
Whereage>30
从上面可以看出,在根据条件进行筛选时,要用到运算符,常见的运算符如下所示:
1比较运算符
=等于
<>不等于
>大于
<小于
<=小于等于
>=大于等于
2逻辑运算符
ALL所有条件都为true则返回true
AND两个条件都为true则返回true
OR有一个条件为true则返回true
NOT对值取反
ANY所有条件中只要有一个为true则返回true
BETWEEN只要操作数在指定的范围内,则返回true
IN只要操作数等于表达式中的一个,则返回true
LIKE如果操作数与模式相匹配,则返回true
SOME在一系列的.比较中,有些为true则返回true
示例1_8_某日以前注册用户
Select*
FROMuseres
Wheresubmit_date<#20xx-12-30#
示例1_9_某时间段注册用户
Select*
FROMuseres
Wheresubmit_dateBETWEEN#20xx-1-1#AND#20xx-5-1#
示例1_10_按关键字查找
Select*
FROMuseres
Whereuseres.real_nameLIKE"*李*"
------------------
IN与OR的区别
-----------------
示例_IN筛选字段中的记录
Selectreal_name,submit_date
FROMuseres
Wherereal_nameIn("小李","小张")
示例_OR筛选字段中的记录
Selectreal_name,submit_date
FROMuseres
Wherereal_name="小李"orreal_name="小张"
------------------------------------------------------------
5GROUPBY分组结果集
------------------------------------------------------------
示例1_12_GROUPBY分组结果集
Selectsex,SUM(age)ASage之SUM
FROMuseres
GROUPBYuseres.sex
ORDERBYSUM(age)DESC;
示例解读:
按字段"sex"下的记录对新"字段"age之SUM"进行分组.
ORDERBY...DESC用来指定按降序排列
本例中的sum为SQL中的聚合函数(对一组值进行操作,返回单一的汇总值),下面是常用的几个聚合函数:
1SUM求总和函数
格式:
SUM([ALL|DISTINCT]expression)
参数:
ALL对所有值求总和,默认为ALL
DISTINCT求总和时排除重复项
expression值或表达式,可以是变量,字段,函数等
2AVG求平均值函数
格式:
AVG([ALL|DISTINCT]expression)
参数:
ALL对所有值求平均,默认为ALL
DISTINCT求平均时排除重复项
expression值或表达式,可以是变量,字段,函数等
3MIN和MAX函数分别为求最小值和最大值,格式和上面类似.
4COUNT行计数函数
格式:
COUNT({[ALL|DISTINCT]expression|*})
ALL表示计算除了NULL以外的其他项,为默认选项
DISTINCT表示COUNT返回唯一非空值的数量
expression为表达式,不能是txte,image,ntxt和uniqueidentifier类型的数据.
示例1_13_AVG求平均值函数
Selectsex,AVG(age)ASage之AVG
FROMuseres
GROUPBYuseres.sex
ORDERBYAVG(age)DESC;
示例1_14_COUNT返回记录数量
SelectCOUNT(*)
FROMuseres
示例1_15_按性别分组记录数量
Selectsex,COUNT(*)
FROMuseres
GROUPBYsex;
------------------------------------------------------------
6DISTINCT从尾部除去重复记录
------------------------------------------------------------
SelectDISTINCTreal_name
FROMuseres
------------------------------------------------------------
7组合查询
------------------------------------------------------------
当需要从多个表中查询时,可以使用组合查询
Selectuseres.real_name,logtime.log_time
FROMuseres,logtime
Where(((useres.real_name)=[logtime].[real_name]));
经典SQL语句大全7
Yii2自带一个强大的命令行管理工具,在windows下打卡cmd命令窗口,切换到Yii项目所在目录(包含Yii.bat),就可以在cmd中运行Yii命令了。
使用Yii migrate命令执行sql语句:
如在路径为/console/migrations/m130524_201442_init.php这个文件定义了一张User表的.sql,我们要执行这个sql来生成数据表,就运行:
migrate是Yii用于数据迁移的命令,这只是其中一个用法。
经典SQL语句大全8
复制代码 代码如下:
///
/// 批量执行SQL语句
///
///SQL语句数组
///SQL参数对象数组
///
public static Int32 ExecuteSqls(String[] Sqlstr, Listparam)
{
String ConnStr = GetSqlConnection();
using (SqlConnection conn = new SqlConnection(ConnStr))
{
SqlCommand cmd = new SqlCommand();
SqlTransaction tran = null;
cmd.Transaction = tran;
try
{
conn.Open();
tran = conn.BeginTransaction();
cmd.Connection = conn;
cmd.Transaction = tran;
Int32 count = Sqlstr.Length;
for (Int32 i = 0; i < count; i++)
{
cmd.CommandText = Sqlstr[i];
cmd.Parameters.AddRange(param[i]);
cmd.ExecuteNonQuery();
}
tran.Commit();
return 1;
}
catch
{
tran.Rollback();
return 0;
}
finally
{
cmd.Dispose();
conn.Close();
}
}
}
【经典SQL语句】相关文章:
周末的语句02-04
鼓励孩子的经典语句03-04
鼓励人的经典语句03-08
晚安心语的经典语句03-07
有关于晚安心语励志的语句03-07
母亲节的祝福语句20字03-10
哄女孩子开心的甜言蜜语句子11-29