- 基础的SQL语句
1.1. 插入语句
数据的增加
insert into 表名(列名列表) values (列值列表)
insert into tb_head_line
(line_name,line_link,line_img,priority,enable_status,create_time,last_edit_time)
values('小米8','http://www.baidu.com','image/xiaomi8.jpg',5,1,now(),now());
insert into tb_head_line(line_name,line_link,line_img,priority,enable_status)
values('苹果6','http://www.baidu.com','image/xiaomi8.jpg',6,1);
1.2. 删除数据库中的数据
数据库中数据的删除(没有被从表中的数据引用)
delete from 表名 where 条件
##删除主键为17的数据
delete from tb_head_line where line_id =17;
##多条件删除 删除 名称是小米的 或者 连接是百度
delete from tb_head_line
where line_name like '%小米%' or line_link like '%baidu%'
##删除已被从表引用的数据(删除区域表中的数据)
delete from tb_area where area_id =2;
insert into tb_area (area_name,priority) values('学府路',3);
1.3. 修改表中的数据
update 表名 set 列名1=新列值,列名2=新列值 ,... where 条件
##更新 把名称等于4的连接地址修改为www.sina.com
##,并设置为不可用,并修改最后的修改时间,把名称修改为奥克斯空调
update tb_head_line set line_name='奥克斯空调',enable_status='0',
line_link="http:www.sina.com",last_edit_time=now()
where line_name = '4'
1.4. 查询的方法
1.4.1. 单表查询
select * from 表名
效率低
select 列名列表 from 表名 where 条件
##查询语句 查看 '奥克斯空调'的详细信息
select * from tb_head_line where line_name='奥克斯空调';
1.4.2. 多表查询
1.4.2.1. 条件子查询
Select 列名 from 表名 where 列名 = (select 列名 from 表名 where 条件)
##查看'暴漫奶茶店'下有那些产品类别
select * from tb_product_category where shop_id = (
select shop_id from tb_shop where shop_name='暴漫奶茶店')
1.4.2.2. 多个表的结果查询
同时查询多个表的数据
Select 表一.列1,表一.列2,...,表二.列1,表二.列2 from 表一,表二 where 表一和表二关系 +其它条件
##查询商品类型以及对应的店铺信息
select tpc.product_category_name ,tp.shop_name ,tp.shop_desc
from tb_product_category tpc, tb_shop tp where tpc.shop_id = tp.shop_id;
- 作业
/*
上机作业:
在tb_area 表中插入一条记录
在tb_product 表中插入一条记录
修改tb_product中的记录如下
修改编号是6号的产品,名称是农夫山泉矿泉水,默认价格5元
修改 彪哥大排档 店的地址为 :海淀区学府路科技大学北门
删除:由于’奶茶来了’店铺经营不善,需要关闭
查找 电话为:1211334565的店铺信息
电话为:1211334565的店铺主人信息
电话为:1211334565的店铺信息以及店铺经营的产品信息
创建JAVA程序,利用JDBC技术,读取数据库中 东苑路附近的商家的信息
*/
##Navicat for MySQL 中的查询编辑器
##在tb_area 表中插入一条记录
INSERT INTO tb_area(area_id, area_name, create_time, last_edit_time)
VALUES (5,'机电楼',NOW(),NOW());
##在tb_product 表中插入一条记录
INSERT INTO tb_product(product_id, product_name, product_desc, create_time, last_edit_time, shop_id)
VALUES (13,'易寒牌薯片','相当好吃',NOW(),NOW(), 28);
##修改tb_product中编号是6号的产品,名称是农夫山泉矿泉水,默认价格5元
UPDATE tb_product set product_name = '农夫山泉矿泉水', normal_price = '5' WHERE product_id = 6;
##修改tb_shop中 彪哥大排档 店的地址为 :海淀区学府路科技大学北门
UPDATE tb_shop set shop_addr = '海淀区学府路科技大学北门' WHERE shop_name = '彪哥大排档';
##删除:由于’奶茶来了’店铺经营不善,需要关闭
DELETE FROM tb_shop WHERE shop_name = '奶茶来了';
##查找 电话为:1211334565的店铺信息
SELECT * FROM tb_shop WHERE phone = '1211334565';
##查找 电话为:1211334565的店铺主人信息
SELECT * FROM tb_person_info WHERE user_id =
(SELECT owner_id FROM tb_shop WHERE phone = '1211334565');
##查找 电话为:1211334565的店铺信息以及店铺经营的产品信息
SELECT ts.shop_name, tp.product_name, tp.product_desc, tp.normal_price FROM tb_shop ts, tb_product tp WHERE ts.phone = '1211334565';
##查找 读取数据库中 东苑路附近的商家的信息
SELECT ts.shop_name, ts.shop_desc, ts.shop_addr, ts.phone FROM tb_shop ts WHERE ts.area_id =
(SELECT area_id FROM tb_area WHERE area_name = '东苑');
结果:
在Navicat中:东苑路附近的商家的信息
//eclipse-jee中的代码
package com.oracle.test;
import java.sql.*;
public class JdbcTest {
public static void main(String[] args) {
try {
//1 load
Class.forName("com.mysql.jdbc.Driver");
//2 acquire connection
String url = "jdbc:mysql://localhost:3306/o2o?useUnicode=true&characterEncoding=utf8";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);
//3 acquire sql
String sqlStr = " SELECT ts.shop_name, ts.shop_desc, ts.shop_addr, ts.phone FROM tb_shop ts WHERE ts.area_id = (SELECT area_id FROM tb_area WHERE area_name = '东苑')";
PreparedStatement pstmt = conn.prepareStatement(sqlStr);
//4 execute
ResultSet rst = pstmt.executeQuery();
//5 manage
System.out.println("店名\t店描述\t店地址\t店电话");
while(rst.next()) {
String name = rst.getString("shop_name");
String desc = rst.getString("shop_desc");
String addr = rst.getString("shop_addr");
String phone = rst.getString("phone");
System.out.println(name + "\t" + desc + "\t" + addr + "\t" + phone);
}
// close
rst.close();
pstmt.close();
conn.close();
}catch(Exception ex) {
ex.printStackTrace();
}
}
}
结果:
利用JDBC技术,读取数据库中 东苑路附近的商家的信息
- 讲师的演示代码
package com.oracle.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Scanner;
public class JdbcAddTest {
public static void main(String[] args) {
try{
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//获取连接 ?useUnicode=true&characterEncoding=utf8
String url="jdbc:mysql://localhost:3306/o2o";
String username = "root";
String password="123456";
Connection conn = DriverManager.getConnection(url,username,password);
//获取执行对象
String sqlStr="insert into tb_person_info(name,profile_img,email,gender,enable_status,user_type,create_time,last_edit_time)values(?,?,?,'1','1','1',now(),now())";
PreparedStatement pstmt = conn.prepareStatement(sqlStr);
Scanner scanner = new Scanner(System.in);
System.out.println("请输入姓名:");
String xm = scanner.next();
System.out.println("请输入头型:");
String tx = scanner.next();
System.out.println("请输入邮箱:");
String yx = scanner.next();
pstmt.setString(1, xm); //设置第一个问号的值
pstmt.setString(2, tx); //设置第二个问号的值
pstmt.setString(3, yx); //设置第三个问号的值
//执行
int num = pstmt.executeUpdate();
System.out.println("添加的结果:" + num);
//关闭
pstmt.close();
conn.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
网友评论