-- ======================== 第三天 ===========================
CREATE DATABASE php0408 CHARSET utf8
;CREATE TABLE php0408.student (
sid INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(18) NOT NULL,
sex ENUM('male','female') NOT NULL DEFAULT 'female',
cid INT UNSIGNED NOT NULL
) ENGINE=MYISAM ;CREATE TABLE php0408.class (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
cname VARCHAR(10) NOT NULL
) ENGINE=MYISAM ;USE php0408
;SHOW TABLES ;INSERT INTO php0408.`class` VALUES(NULL,'php0306'),(NULL,'php0420'),(NULL,'php1101')
;SELECT * FROM php0408.`class`
;INSERT INTO student VALUES(NULL,'小花',1,8)
;SELECT * FROM student ;DROP TABLE student
;DROP TABLE class
;CREATE TABLE php0408.student (
sid INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(18) NOT NULL,
sex ENUM('male','female') NOT NULL DEFAULT 'female',
cid INT UNSIGNED NOT NULL,
CONSTRAINT FOREIGN KEY (cid) REFERENCES class(id) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=INNODB
;CREATE TABLE php0408.class (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
cname VARCHAR(10) NOT NULL
) ENGINE=INNODB
;SHOW CREATE TABLE student
#创建外键
;ALTER TABLE student ADD CONSTRAINT `student_cid_class_id` FOREIGN KEY (cid) REFERENCES class(id)
#删除外键,要使用外键的名字
;ALTER TABLE student DROP FOREIGN KEY `student_cid_class_id` ;SELECT * FROM student
;UPDATE student SET cid=1 WHERE sid=1
;SELECT * FROM class
# 附表创建记录时,必须保证外键字段数据在主表中存在
;INSERT INTO student VALUES(NULL,'小芳',2,8)
# 删除主表主键的时候,会检查外键约束,如果别的表依赖该记录,则不能删除
;DELETE FROM class WHERE id=1 #可以设置主表记录发生变化的时候,关联表做什么操作:比如修改主表记录,关联表相应修改,删除主表记录,关联表置空
;ALTER TABLE student ADD CONSTRAINT `student_cid_class_id` FOREIGN KEY (cid) REFERENCES class(id) ON DELETE SET NULL ON UPDATE CASCADE
;UPDATE class SET id=0 WHERE id=1
;DELETE FROM class WHERE id=0 ;CREATE TABLE nf1(
NAME CHAR(18),
sex CHAR(1),
class CHAR(10),
room CHAR(10),
days INT,
dksj CHAR(20)
)
;DESC nf1
;ALTER TABLE nf1 CHANGE COLUMN dksj `start` DATETIME
;ALTER TABLE nf1 ADD COLUMN `end` DATETIME ;INSERT INTO nf1 VALUES('四哥','男','php0408','603',20,'2015-04-08','2015-05-08')
;SELECT * FROM nf1
;CREATE TABLE nf2(
NAME CHAR(18),
sex CHAR(1),
class CHAR(10),
room CHAR(10),
days INT,
START DATETIME,
END DATETIME,
PRIMARY KEY (NAME,class)
)
#补充timestamp知识
;CREATE TABLE php0408.tm(
c1 TIMESTAMP DEFAULT '2015-05-06 10:00:00',
c2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ;INSERT INTO php0408.`tm` (c2) VALUES (NULL)
;SELECT * FROM tm
;UPDATE tm SET c3 =1 WHERE c3 IS NULL
# 插入时出现主键约束
;INSERT INTO student VALUES(1,'小花',2,2)
;SELECT * FROM student
#当插入的数据出现主键冲突时,设定该记录的数据
;INSERT INTO student VALUES(1,'小花',2,2) ON DUPLICATE KEY UPDATE sname='小王'
;CREATE TABLE stu (
sname VARCHAR(18),
cid INT UNSIGNED
)
;SELECT * FROM stu
#将其它表中的数据插入到当前表
;INSERT INTO stu SELECT sname,cid FROM student WHERE sid<2 ;SELECT 1
;SELECT NOW()
;SELECT CURRENT_TIMESTAMP
#给要展示的字段加一个别名
;SELECT sname AS `姓名` FROM php0408.student
#as也可以省略
;SELECT sname `姓名` FROM php0408.student
;SELECT 1+1 AS rst
;SELECT RAND() ;SELECT * FROM student
;SELECT * FROM class
;SELECT * FROM student,class,tm #由于两张表中都有sname和cid字段,所以
#为了确定sname来源于student表cid来源于stu表,需要使用表名.字段名的形式
;SELECT student.sname,stu.`cid` FROM student,stu #给表起别名
;SELECT t1.sex,t1.sname,t2.`cid` FROM student AS t1,stu AS t2 #要求从两张表中取出各自的sname,为了在php中避免键名一样,数组元素覆盖,要给字段起别名
;SELECT t1.sname AS sname1,t2.sname AS sname2 FROM student AS t1,stu AS t2 #有时候为了使sql语句看起来完整,会使用表作为数据来源,但是有些数据无需表的参与,就是用dual虚拟表
;SELECT 1,NOW() FROM DUAL #where 从 from 所指定的数据来源中,对每条记录进行一次判断,利用条件表达式!
;SELECT * FROM student WHERE FALSE ;SELECT * FROM class WHERE id <>2
#带有php的
;SELECT * FROM class WHERE cname LIKE '%php%'
#带有11的
;SELECT * FROM class WHERE cname LIKE '%11%'
#查询所有以java开头的
;SELECT * FROM class WHERE cname LIKE 'java%' #列出id是1 或 2 或 3的记录
;SELECT * FROM class WHERE id IN (1,2,3)
#列出id不是1 2 3的记录
;SELECT * FROM class WHERE id NOT IN (1,2,3) #列出id在2和3之间的,闭合区间
;SELECT * FROM class WHERE id BETWEEN 2 AND 3 # 列出时间在2015/04/30 10:00:00到2015-5-8 0:0:0之间的记录
;SELECT * FROM tm WHERE c1 BETWEEN '2015/04/30 10:00:00' AND '2015-5-8' ;SELECT NULL-0,NULL+0,NULL,NULL*0,NULL+1,NULL=1,NULL=NULL ;CREATE TABLE php0408.nul(
c1 INT NULL,
c2 CHAR(8) NULL
)
;INSERT INTO php0408.`nul` VALUES(1,NULL),(2,'2'),(3,3) #由于null和任何数据进行运算都是null,转换为布尔值结果是false
#所以为了列出字段为null的记录,必须使用is null
;SELECT * FROM nul WHERE c2 IS NULL #以下两条是相同的
;SELECT * FROM nul WHERE c2 IS NOT NULL
;SELECT * FROM nul WHERE NOT c2 IS NULL #取出所有的c1为1并且c2为2的记录
;SELECT * FROM nul WHERE c1=1 AND c2=2 #取出所有的c1为1或者c2为2的记录
;SELECT * FROM nul WHERE c1=1 OR c2=2 #运算符优先级,可以使用()提升优先级
;SELECT * FROM nul WHERE c1=1 AND (c2=2 OR c1=3) #使用group by进行分组
;SELECT *,COUNT(*) FROM stu GROUP BY cid
#如果count里面是一个具体的字段,将会过滤该字段为null的记录
;SELECT *,COUNT(c2) FROM nul GROUP BY c1 #将每一个组里面的cid字段求和展示出来
;SELECT *,COUNT(cid),SUM(cid) FROM stu GROUP BY cid #取出某个字段最大值
;SELECT *,MAX(sid) FROM student GROUP BY cid
#取出某个字段最小值
;SELECT *,MIN(sid) FROM student ;SELECT *,MAX(sid) FROM student
;SELECT *,AVG(sid) FROM student GROUP BY cid
#将分组后每个记录的姓名 学号展示出来
;SELECT *,GROUP_CONCAT(sname,'-',sid) FROM student GROUP BY cid #可以在分组后使用排序,asc和desc(降序)
;SELECT cid,COUNT(*) FROM student GROUP BY cid DESC #根据两个字段进行分组,并且对结果集先按照cid降序排,接着如果cid相同,按照性别升序排
;SELECT cid,COUNT(*),sex FROM student GROUP BY cid DESC,sex ASC ;SELECT cid,COUNT(*) FROM student GROUP BY cid WITH ROLLUP ;SELECT cid,COUNT(*),sex FROM student GROUP BY cid DESC,sex ASC WITH ROLLUP #求出班级人数超过2个的班级
;SELECT cid,COUNT(*) AS num FROM student GROUP BY cid HAVING num>2 #排序,先按照班级号升序,再按照学号降序
;SELECT * FROM student ORDER BY cid ASC,sid DESC
#随机排
;SELECT * FROM student ORDER BY RAND() #limit用于从结果集中取得几条数据,limit受前面子句的影响
;SELECT * FROM student WHERE sid<4 LIMIT 5,2

  

一些记录查询的SQL语句的更多相关文章

  1. 第二章 基础查询 2-1 SQL语句基础

    一.列的查询 基本的SELECT语句: SELECT <列名 >,...... FROM < 表名>; 注:子句是SQL的组成要素. 注:查询结果中的列的顺序和SELECT子句 ...

  2. mysql按年度、季度、月度、周、日统计查询的sql语句

    本文介绍一些mysql中用于查询的sql语句,包括按年度.季度.月度.周.日统计查询等,有需要的朋友,可以参考下. 一.年度查询 查询 本年度的数据   SELECT * FROM blog_arti ...

  3. MySQL5.6 怎样优化慢查询的SQL语句 -- SQL优化

    上篇:MySQL5.6 怎样优化慢查询的SQL语句 -- 慢日志介绍 在实际的日志分析中,通常慢日志的log数量不少,同一时候同样的查询被记录的条数也会非常多.这里就须要怎样从慢日志查询中找到最有问题 ...

  4. MySQL5.6 怎样优化慢查询的SQL语句 -- 慢日志介绍

    近期有个开发团队抱怨我们平台包括的mysql cluster不行,总是报mysql的"heartbeat Error".分析了他们收集的日志.没有发现mysql cluster节点 ...

  5. ASP.NET实现列表页连接查询 拼接sql语句 绑定grivdView

    ASP.NET实现列表页连接查询 拼接sql语句 如图效果: 基本需求:1.当页面第一次加载的时候默认查询一个月时间(或者说是登陆者所属权限的所有数据)的数据绑定到gridView 2.添加查询条件时 ...

  6. 查询拼接SQL语句,多条件模糊查询

    多条件查询,使用StringBuilder拼接SQL语句,效果如下: 当点击按钮时代码如下: private void button1_Click(object sender, EventArgs e ...

  7. MySql实现分页查询的SQL,mysql实现分页查询的sql语句 (转)

    http://blog.csdn.net/sxdtzhaoxinguo/article/details/51481430 摘要:MySQL数据库实现分页查询的SQL语句写法! 一:分页需求: 客户端通 ...

  8. oracle数据库查询日期sql语句(范例)、向已经建好的表格中添加一列属性并向该列添加数值、删除某一列的数据(一整列)

    先列上我的数据库表格: c_date(Date格式)     date_type(String格式) 2011-01-01                   0 2012-03-07         ...

  9. MySql实现分页查询的SQL,mysql实现分页查询的sql语句(转)

    http://blog.csdn.net/sxdtzhaoxinguo/article/details/51481430 摘要:MySQL数据库实现分页查询的SQL语句写法! 一:分页需求: 客户端通 ...

随机推荐

  1. Windows下Memcached在.Net程序中的实际运用(从Memcached客户端Enyim的库的编译到实际项目运用)

    1.一点基础概念 2.获取EnyimMemcached客户端的源代码并编译出动态库 3.Memcached的服务器安装(windows server) 4.在web项目中实战 一.基础概念 memca ...

  2. wsdl自动生成Java代码,根据wsdl生成Java代码

    wsdl自动生成Java代码,根据wsdl生成Java代码 >>>>>>>>>>>>>>>>>&g ...

  3. .Net开源SqlServer ORM框架SqlSugar整理

    一.链接整理 官方Git源代码地址: https://github.com/sunkaixuan/SqlSugar 最新发布版更新地址:当前版本Release 3.5.2.1 https://gith ...

  4. [Jquery] jQuery.cookie帮助类 (转载)

    /** * Cookie plugin * * Copyright (c) [url=http://sufei.cnblogs.com/]http://sufei.cnblogs.com[/url] ...

  5. RelativeLayout相对布局 安卓布局技巧

    http://blog.csdn.net/nieweiking/article/details/38417317 RelativeLayout相对布局 相对布局 RelativeLayout 允许子元 ...

  6. CoreAnimation2-视觉效果和变换

    圆角 圆角矩形是iOS的一个标志性审美特性.这在iOS的每一个地方都得到了体现,不论是主屏幕图标,还是警告弹框,甚至是文本框.按照这流行程度,你可能会认为一定有不借助Photoshop就能轻易创建圆角 ...

  7. jQuery 遍历过滤

    缩写搜索元素的范围 三个最基本的过滤方法是:first(), last() 和 eq(),它们允许您基于其在一组元素中的位置来选择一个特定的元素. 其他过滤方法,比如 filter() 和 not() ...

  8. c#中用DirectShow实现媒体播放器的核心(1) DirectShow简介

    用.net做多媒体开发的似乎不多,所以网上资源也少,看的人更少.不过我的博客上居然还有几位在等新文章的人,有点出乎我的意料了.目前我已不再从事多媒体相关的工作,加入新公司至今都忙到吐血,再加上害怕水平 ...

  9. 使用bind()扩充作用域

    window.color = "blue"; var o = {color :"red"}; function sayColor(){ alert(this.c ...

  10. java中关于static的小知识

    static能够修饰属性和方法.凡是static修饰的方法和属性都是和类的关系较大,都在加载的时候要特殊处理(包括属性和类的优先加载).下面比较下static修饰属性和方法时的区别: 一.修饰属性的时 ...