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;