mysql语句总结

来源:互联网 发布:视频切换矩阵 编辑:程序博客网 时间:2024/06/07 17:29
1.创建表(当表名存在时不创建,不存在时就创建)
CREATE TABLE IF NOT EXISTS `$table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`guid` varchar(30) NOT NULL DEFAULT '0',
`device_id` varchar(30) DEFAULT NULL,
`name` varchar(30) DEFAULT NULL,
`radio_id` int(11) NOT NULL,
`freq_id` int(11) NOT NULL,
`program_name` varchar(30) NOT NULL,
`begin_time` int(11) NOT NULL DEFAULT '0',
`end_time` int(11) NOT NULL DEFAULT '0',
`time_length` int(11) DEFAULT '0',
`program_begin_time` varchar(30) NOT NULL DEFAULT '0',
`program_end_time` varchar(30) NOT NULL DEFAULT '0',
`type_record` enum('listen','interact') DEFAULT NULL,
`now_time` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `guid` (`guid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='收听记录表' ;
注意:
a. UNIQUE 约束唯一标识数据库表中的每条记录。
b. UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
c. PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
d.请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY
约束。
e.FOREIGN KEY (Id_P) REFERENCES Persons(Id_P).
f.用于指定基本表中的每一条记录必须满足的条件,可以对基本表在各个列上的值做进
一步的约束,如成绩列的取值既不能大于100,也不能小于0。check(score>=0 and
score<=100)
2.查询表是否存在
select TABLE_NAME from INFORMATION_SCHEMA.TABLES where
TABLE_SCHEMA='数据库名' and TABLE_NAME='".$table1."' or
TABLE_NAME='".table2."' "
3.分页查询
分页查询:如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参
数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1)
select * from ".$table." where enable=1 and create_time<".
$maxTime." order by create_time desc limit ".$pageSize
SELECT * FROM table LIMIT 5,10
//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为
-1:

SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.

4.插入语句(当不满足约束条件时不插入)

insert into `$table`
(`guid`,`device_id`,`name`,`radio_id`,`freq_id`,`program_name`,`be
gin_time`,`end_time`,`time_length`,`program_begin_time`,`program_e
nd_time`,`type_record`,`now_time`)
values('$guid','$device_id','$name',$radio_id,
$freq_id,'$pragram_name',
$time,0,0,'$program_begin_time','$program_end_time','$type_record'
,$now_time)
5.更新语句
UPDATE和REPLACE基本类似,但是它们之间有两点不同。
  1. UPDATE 在没有匹配记录时什么都不做,而 REPLACE 在有重复记录时更新,在没有重复记
录时插入。
  2. UPDATE 可以选择性地更新记录的一部分字段。而 REPLACE 在发现有重复记录时就将这条
记录彻底删除,再插入新的记录。也就是说,将所有的字段都更新了。
UPDATE使用LOW_PRIORITY关键词,则UPDATE的执行被延迟了,直到没有其它的客户
端从表中读取为止。
UPDATE使用IGNORE关键词,则即使在更新过程中出现错误,更新语句也不会中断。如
果出现了重复关键字冲突,则这些行不会被更新。如果列被更新后,新值会导致数据转化错
误,则这些行被更新为最接近的合法的值。
6.union
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任
何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不
消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
$sql_union=“select * from `".$res->fields[0]."` where time_type='begin' and
freq_id=".$freq_id." and now_time>=".$begin_timestamp." and now_time<=".
$end_timestamp." and type_record='".$type_record."'"
select program_name, radio_id,freq_id,type_record,count(*) as N from (".
$sql_union.") as temp group by program_name order by N desc
7.EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复
行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
8.INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而
派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重
复行。
9.随机取出10条数据
"select * from vote_records where option_id=$option_vote_id_1 and
(vote_from='elgg' and choosed=0) order by rand() limit 10";
10.统计函数
SQL有一些统计函数,它们对于生成数据表格很有帮助。下面介绍几个常用的统计函数:
sum (exepression) 计算表达式的和
avg (exepression) 计算表达式的平均值
count (exepression) 对表达式进行简单的计数count (*) 统计记录数
max (exepression) 求最大值
min (exepression) 求最小值
其中exepression为任何有效的SQL表达式,它可以是一个或多个记录,也可以是别的SQL函数的组合。
0 0
原创粉丝点击