JAVA实训(181208~181209)

8,回顾集合框架

(1)优势:大小没有限制,存储各类元素,使用方便而且效率高。
(2)Java中的集合接口和实现类
    Collection接口(线性)
        List接口(允许重复,有序)
            ArrayList实现类:搜索、遍历、查询效率高
            LinkedList实现类:增删元素效率高
        Set接口(不重复,无序)
            HashSet实现类:无序
            TreeSet实现类:排序
    Map接口(key-value):专门处理键值(key-value)映射数据的存储,通过key来操作value。
        HashMap实现

9,HashMap的使用

(1)添加元素:put(key,vlaue);
(2)删除元素:remove(key);
(3)获取元素:get(key);
(4)遍历元素:迭代器或foreach(keySet)

10,集合类的对比

(1)Vector 和 ArrayList的区别?
(2)Hashtable和HashMap的区别?

11,Map的使用

    班级(Clazz(cid,cname))和学生(Student(sid,sname))
    Map<Clazz,List<Student>>
    
    一班:张三、李四、王五
    二班:悟空、八戒、沙僧

班级类

public class Clazz {
	private String cid;
	private String cname;
	public String getCid() {
		return cid;
	}
	public void setCid(String cid) {
		this.cid = cid;
	}
	public String getCname() {
		return cname;
	}
	public void setCname(String cname) {
		this.cname = cname;
	}
	public Clazz() {
		super();
	}
	public Clazz(String cid, String cname) {
		super();
		this.cid = cid;
		this.cname = cname;
	}
	public String toString() {
		// TODO Auto-generated method stub
		return getCname();
	}
	
}

 学生类

public class Student {
	private String sid;
	private String sname;
	
	public String getSid() {
		return sid;
	}
	public void setSid(String sid) {
		this.sid = sid;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public Student() {
		super();
	}
	public Student(String sid, String sname) {
		super();
		this.sid = sid;
		this.sname = sname;
	}
	public String toString() {
		// TODO Auto-generated method stub
		return getSname();
	}		
}

 班级系统类

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class SS {
	public static void main(String[] args) {
		Clazz c1 = new Clazz("1", "一班");//定义班级
		Clazz c2 = new Clazz("2", "二班");
		List<Student> list1 = new ArrayList<Student>();//创建以对象Student为泛型的集合list1
		list1.add(new Student("1", "张三"));
		list1.add(new Student("2", "李四"));
		list1.add(new Student("3", "王五"));
		List<Student> list2 = new ArrayList<Student>();//创建以对象Student为泛型的集合list2
		list2.add(new Student("1", "小亮"));
		list2.add(new Student("2", "小王"));
		list2.add(new Student("3", "小刚"));
		Map<Clazz, List<Student>> map = new HashMap<Clazz, List<Student>>();//创建集合map
		map.put(c1, list1);
		map.put(c2, list2);
		Set<Clazz> set = map.keySet();//获取map集合的键值
		//遍历输出
		for (Clazz c : set) {
			System.out.print(c + ":");
			List<Student> list = map.get(c);
			//判断加顿号的位置
			for (int i = 0; i < list.size(); i++) {
				System.out.print(list.get(i));
				if (i < list.size() - 1) {
					System.out.print("、");
				}
			}
			System.out.println("");//不同班级的分行
		}
	}
}

1,Mysql的安装

(1)安装服务器:mysql-5.1.44-win32.msi
    编码:utf8
    设置密码:root
(2)客户端工具SQLyog的安装

2,创建数据库和删除数据库

(1)create database ...
(2)database name(不能中文、数字,尽量做到见名知意)
(3)database charset (设置数据库的字符集 utf8)
(4)drop database ...

3,创建数据表

(1)mysql的数据类型:

    int 整数
    double 小数
    varchar(长度) 字符串----------String
    date -------- 年月日(yyyy-MM-dd)
    datetime-------年月日时分秒-----------Date (yyyy-MM-dd hh:mm:ss)

(2)创建表:指定列名,选择数据类型

    default:指默认值,在添加时如果不输入值,就会采用默认值
    primary key : 主键
    not null:非空
    Auto incr:自增列,整数列专用,每次会自动加1 (只加不减)

(3)主外键约束

    在表上点击右键选择Relationships/Foreign Key
    主键:唯一标示一行数据,将含有主键的表习惯上称为“主表”
    外键:和主键对应,将含外键表的称为“子表”

4,操作表(*)

(1)打开表
(2)插入数据、修改数据、删除数据
(3)备份数据库
        右键数据库---->Backup/Export--->Backup database...
(4)还原数据库
        右键root---->Restore from SQL dump...

5,远程访问和操作数据库 (192.168.13.232)

    登录窗口把localhost换成ip地址(本机:127.0.0.1)


 

1,什么是SQL?

(1)SQL是应用程序和数据库的桥梁。
(2)SQL(Structured Query Language):结构化查询语言,专为数据库而建立的操作命令集,一种功能齐全的
    数据库语言。在使用它时,只需要发出“做什么”命令,“怎么做”不用考虑。

2,SQL的分类

(1)DML:数据操作语言(插入、修改、删除、查询语句)
(2)DCL:数据控制语言(权限的相关操作)
(3)DDL:数据定义语言(建库、建表及删除)
(4)函数:以及实现了一些功能,直接调用即可

3,数据操作语言(DML)

(1)插入语句

    语法: insert [into] 表名 [(列1,列2...)] values (值1,值2...)
    注意事项:
        a,使用自增列:当它不存在,必须指定列名。
        b,一般情况下Insert语句的列和值要对应。
        c,数据的类型、长度、精度都要匹配。
        d,不为空的列,必须添加值。

(2)多行插入语句

    语法: insert [into] 表名 [(列1,列2...)] values (值1,值2...),(值1,值2...),(值1,值2...)

-- 完整的insert语句
INSERT INTO city_info (cid,cname) VALUES (6,'杭州');
-- 简化的insert语句
INSERT city_info VALUES  (7,'福建');
INSERT INTO user_info (NAME,birthday,address) VALUES('李四','1990-3-4','4');
INSERT INTO student_score (course) VALUES('英语');
INSERT INTO city_info VALUES('sdfds','aaaaaaaaaaaaaaaaaaaaaaaaaaaa');
INSERT INTO student_score (stuid,course,score) VALUES(2,'Java',DEFAULT);
INSERT city_info (cname) VALUES ('咸阳'),('渭南'),('宝鸡');

(3)备份语句

    insert into 备份表(列1,列2) select 列1,列2 from 源表

-- 备份表的数据
INSERT INTO user_bak(NAME,birthday) SELECT NAME,birthday FROM user_info;

(4)修改语句

        语法:update 表名 set 列1=值1,列2=值2... [where 条件]
        注意事项:不能更新主键列,一般主键都做为更新的条件。

-- 更新语句
UPDATE student_score SET score=10;
UPDATE student_score SET score=59 WHERE course='Java';
UPDATE student_score SET score=score+1;
UPDATE user_info SET NAME='八戒',birthday='1992-7-9',address=5  WHERE id=8;
DELETE FROM user_bak;
DELETE FROM user_info WHERE id=8;
DELETE FROM student_score WHERE score<60;

(5)删除语句:

        语法:delete from 表 [where 条件]

    -- 删除id=1和id=2的用户
    DELETE FROM user_info WHERE id=1 OR id=2;
    -- 删除id=1和id=2的用户(推荐)
    DELETE FROM user_info WHERE id IN(1,2);
    -- 删除name='aa'并且 address=4的用户
    DELETE FROM user_info WHERE NAME='aa' AND address=4;
    -- 删除除id=1和id=2的其他用户
    DELETE FROM user_info WHERE id  NOT IN(1,2);

(6)在操作主外键关联的表时:

    (1)插入:先添加主表的数据,再添加子表的数据。
    (2)删除:先删除子表的数据,再删除主表的数据。

4,查询SQL语句:

(1)查询全表的数据:

select * from 表名;

(2)查询部分列的数据:

select 列名1,列名2... from 表;

(3)给列进行重命名:

select 列名1 as 新名1,列名2 as 新名2... from 表;

(4)条件查询:

select * from 表 where 条件

(5)列运算查询:

select 列1+列2 from 表名
    商品        单价    数量
    IBM笔记本    6000     3
    波司登羽绒服 300     13
    
    select 单价*数量 as 小计 from 购物车表

(6)去重复查询 distinct

        select distinct 列名 from 表

(7)排序查询

    select * from 表 order by 列 asc(升序)/desc(降序)

(8)限制行查询 limit

        查询表的前N行数据:select * from 表 limit N
        从N开始,查询M条:select * from 表 limit N,M
 

SELECT id AS 编号,NAME AS 姓名,birthday AS 生日 FROM user_info;
SELECT * FROM student WHERE stuid=1;
SELECT * FROM student_score WHERE score<60;
SELECT stuid+2,course,score-100 FROM student_score
SELECT DISTINCT stuid FROM student_score;
SELECT * FROM student_score ORDER BY score DESC;
SELECT * FROM city_info LIMIT 5,2;



 
    

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值