一、DQL下
查询英语分数在 80-90之间的同学。
mysql>SELECT * FROM student WHERE english>=80 AND english<=90;
或者
mysql>SELECT * FROM student WHERE english BETWEEN 80 AND 90; (含头也含尾)
查询数学分数为89,90,91的同学。
mysql>SELECT * FROM student WHERE math IN (89,90,91);
查询所有姓李的学生成绩。
mysql>SELECT * FROM student WHERE name LIKE '李%';
查询数学分>80,语文分>80的同学。
mysql>SELECT * FROM student WHERE math>80 AND chinese>80;
对数学成绩排序后输出。
mysql>SELECT name,math FROM student ORDER BY math;
对总分排序后输出,然后再按从高到低的顺序输出
mysql>SELECT name,chinese+english+math FROM student ORDER BY chinese+english+math DESC;
对姓李的学生语文成绩排序输出
mysql>SELECT name,chinese FROM student WHERE name LIKE '李%' ORDER BY chinese;

统计一个班级共有多少学生?
mysql>SELECT count(*) FROM student;
统计数学成绩大于90的学生有多少个?
mysql>SELECT count(*) FROM student WHERE math>=90;
统计总分大于250的人数有多少?
mysql>SELECT count(*) FROM student WHERE (chinese+english+math)>250;

统计一个班级数学总成绩?
mysql>SELECT sum(math) FROM student;
统计一个班级语文、英语、数学各科的总成绩
mysql>SELECT sum(math),sum(chinese),sum(english) FROM student;
统计一个班级语文、英语、数学的成绩总和
mysql>SELECT sum(math+chinese+english) FROM student;
统计一个班级语文成绩平均分
mysql>SELECT sum(chinese)/count(*) FROM student;
求一个班级数学平均分?
mysql>SELECT avg(math) FROM student;
求一个班级总分平均分
mysql>SELECT avg(math+chinese+english) FROM student;
求班级最高分和最低分(数值范围在统计中特别有用)
mysql>SELECT max(math+chinese+english) FROM student;
mysql>SELECT min(math+chinese+english) FROM student;

Tip:
如果要把关键字作为普通字符串对待,要使用``(Esc键盘下方的按键)包围起来

对订单表中商品归类后,显示每一类商品的总价
mysql>SELECT *,sum(price) FROM orders GROUP BY product;
查询购买了几类商品,并且每类总价大于100的商品
mysql>SELECT product,sum(price) FROM orders GROUP BY product HAVING sum(price)>100;
二、常用的函数
三、多表的设计和约束
1、主键约束(唯一定位一条记录)
PRIMARY KEY:唯一的,且不能为null。
逻辑主键:不参与业务运算,与业务无关 id
业务主键:
2、定义唯一约束
UNIQUE:可以不填。
3、不能为空
NOT NULL:必须填
定义主键自动增长:MYSQL auto_increment

4、多表的设计
a、一对多
CREATE TABLE department(
id int primary key,
name varchar(100) not null unique
);
CREATE TABLE employee(
id int primary key,
name varchar(100) not null,
salary float(8,2),
dept_id int,
CONSTRAINT dept_id_fk FOREIGN KEY(dept_id) REFERENCES department(id)
);
b、多对多
CREATE TABLE teacher(
id int primary key,
name varchar(100),
salary float(8,2)
);
CREATE TABLE student(
id int primary key,
name varchar(100),
grade varchar(100)
);
CREATE TABLE teacher_student(
t_id int,
s_id int,
primary key(t_id,s_id),
CONSTRAINT t_id_fk FOREIGN KEY(t_id) REFERENCES teacher(id),
CONSTRAINT s_id_fk FOREIGN KEY(s_id) REFERENCES student(id)
);
c、一对一
CREATE TABLE person(
id int primary key,
married boolean
);
CREATE TABLE idcard(
id int primary key,
num varchar(100),
name varchar(100),
CONSTRAINT id_fk FOREIGN KEY(id) REFERENCES person(id),
);

四、JDBC简介
1、JDBC是规范。Java DataBase Conectivity的缩写
2、JDBC规范相关的类在JDK中,java.sql.*或javax.sql.*
3、编写步骤:
a、拷贝驱动
b、注册驱动
c、获取连接
d、建立发送SQL语句的对象
e、执行语句。如果是查询的话有返回结果
f、遍历结果进行处理
g、关闭资源

五、JDBC中常用接口详解
1、DriverManager
注册驱动:
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
以上注册方式有2大缺点:
a、对具体的数据库驱动严重依赖。
b、会导致驱动类注册2遍。
替代方案:
Class.forName("com.mysql.jdbc.Driver");
获取数据库的连接:
//方式一:
// Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day12", "root", "sorry");
//方式二:
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day12?user=root&password=sorry&useUnicode=true&characterEncoding=utf8");
//方式三:
// Properties props = new Properties();
// props.setProperty("user", "root");
// props.setProperty("password", "sorry");
// Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day12",props);
2、Connection
所有与数据库交互的代码都基于链接。
createStatement():创建向数据库发送sql的statement对象。
3、Statement
向数据库发送SQL语句。
ResultSet executeQuery(String sql):参数sql只能是DQL语句。返回的是封装了查询结果的ResultSet对象
int executeUpdate(String sql):参数sql是DML语句,就返回的是语句影响到的行数。也可以执行没有返回结果的DDL语句,返回值不代表影响到的行数。
boolean execute(String sql):参数sql可以是任意的SQL语句。返回的结果不代表成功与否。如果执行的SQL语句有结果集,返回true。其他返回false。

4、ResultSet
封装了查询结果。内部有一个游标,默认指向第一行的前面。next()方法:游标下移,并且返回是否有记录。

5、PreparedStatement:是Statement的子接口(从此以后都用这个)
作用:
1、预编译SQL语句,执行效率高。
2、防注入
3、采用占位符?替换参数

六、利用JDBC对数据库中的表CRUD(抽出一个JDBCUtil工具类)
七、改写原来的用户注册和登陆案例
八、SQL注入问题
九、客户管理系统CRUD

Mysql基础2的更多相关文章

  1. Mysql基础代码(不断完善中)

    Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...

  2. MYSQL基础操作

    MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...

  3. 【夯实Mysql基础】记一次mysql语句的优化过程

    1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使 ...

  4. MySQL基础(非常全)

    MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...

  5. mysql 基础篇5(mysql语法---数据)

    6 增删改数据 -- ********一.增删改数据********* --- -- 1.1 增加数据 -- 插入所有字段.一定依次按顺序插入 INSERT INTO student VALUES(1 ...

  6. MySQL 基础语句

    MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...

  7. MySQL:基础—数据分组

    MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...

  8. MySQL基础学习总结

    1.MySQL基础概念 mysql逻辑架构如下: 每个客户端连接都会在服务器中拥有一个线程,这个连接的查询只会在这个单独的线程中执行. MySQL是分层的架构.上层是服务器层的服务和查询执行引擎,下层 ...

  9. MySQL基础(五)——视图

    MySQL基础(五)--视图

  10. MySQL基础(四)——索引

    MySQL基础(四)--索引

随机推荐

  1. c# Wndproc的使用方法

    protected override void WndProc(ref Message m) { const int WM_SYSCOMMAND = 0x0112; const int SC_CLOS ...

  2. [HTML5]HTML语义(Semantics)

    HTML 是有含义的 语义指的是计算机语言定义的符号有其规范的含义,HTML中的标签.属性和属性值都有其约定的含义. 语义和默认样式有所不同,默认样式是浏览器设定的一些常用标签的表现形式,而语义化的主 ...

  3. 关于@Html.Action()的异常“控制器或该控制器未实现 IController。”

    解决之前: @Html.Action("BottomHelp", "Articles", new { num = 5}) 解决之后: @Html.Action( ...

  4. JVM内存结构之二--新生代及新生代里的两个Survivor区(下一轮S0与S1交换角色,如此循环往复)、常见调优参数

    一.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我 ...

  5. AngularJS 中利用 Interceptors 来统一处理 HTTP 的错误(reproduce)

    原文:http://chensd.com/2016-03/Angular-Handle-Global-Http-Error-with-Interceptors.html?utm_source=tuic ...

  6. (转)DataGridView多维表头及其扩展功能

    dataGridView1.RowHeadersVisible = false;把整行选中那一列去掉.如果需要整行选中,新增一按钮列模拟实现.上源码:多维DataGridView 有个简易的方法: 1 ...

  7. Open-Drain与Push-Pull

    GPIO的功能,简单说就是可以根据自己的需要去配置为输入或输出.(General Purpose Input Output,简称为GPIO或总线扩展器,利用工业标准I2C.SMBus?或SPI?接口简 ...

  8. Haproxy+asp.net +RedisSessionStateProvider 完美实现负载均衡,并且session保持

    .net framework 4.5下测试成功,使用RedisSessionStateProvider 2.2.1保持session数据,通过Haproxy保持会话数据.首先在PM下安装RedisSe ...

  9. 在IIS8添加WCF服务支持

    最近在做Silverlight,Windows Phone应用移植到Windows 8平台,在IIS8中测试一些传统WCF服务应用,发现IIS8不支持WCF服务svc请求,后来发现IIS8缺少对WCF ...

  10. java环境

    http://www.iyunv.com/thread-65867-1-1.html http://www.360doc.com/content/15/0525/19/21365845_4732029 ...