ä½è | e71hao
æ¥æº | http://blog.itpub.net/30393770/viewspace-2650450/
ä¸ã é®é¢æåº
ãé¿éå·´å·´JAVAå¼åæåãéé¢åè¶ è¿ä¸å¼ 表ç¦æ¢joinï¼è¿æ¯ä¸ºä»ä¹ï¼
äºãé®é¢åæ
对è¿ä¸ªç»è®ºï¼ä½ æ¯å¦ææçå¢ï¼ä¹ä¸ç¥éæ¯åªä½å å²è¯´çä¸è¦äººäºäº¦äºï¼ä»å¤©æ设计sqlï¼æ¥éªè¯è¿ä¸ªç»è®ºãï¼å®éªæ²¡æä»ä»£ç è§åº¦åæï¼ç®åè¾¾ä¸å°ãå¯ä»¥æmysqlå½ä¸ä¸ªé»çï¼ä½¿ç¨è§åº¦æ¥éªè¯è¿ä¸ªç»è®ºï¼ éªè¯ç»è®ºçæ¶åï¼ä¼æå¾å¤åç°ï¼åä½å¾åçã
ä¸ã å®éªç¯å¢
vmware10+centos7.4+mysql5.7.22 ï¼centos7å å4.5Gï¼4æ ¸ï¼50G硬çãmysqlé 置为2Gï¼ç¹å«è¯´æ硬çæ¯SSDã
åãæ¦è¿°ä¸æçå®éª
æ4å¼ è¡¨ï¼studentå¦ç表ï¼teacherèå¸è¡¨ï¼course课ç¨è¡¨ï¼scä¸é´å ³ç³»è¡¨ï¼è®°å½äºå¦çé修课ç¨ä»¥ååæ°ãå ·ä½sqlèæ¬ï¼çæç« ç»å°¾ï¼æéä¸ãä¸é´æèªå·±åäºé æ°æ®çèæ¬ï¼ä¹å¨ç»å°¾ã
å®éªæ¯ä¸ºè§£å³ä¸ä¸ªé®é¢çï¼æ¥è¯¢éä¿®âtname553âèå¸ææ课ç¨çå¦çä¸ï¼æ绩æé«çå¦çå§ååå ¶æ绩 ãæ¥è¯¢sqlæ¯ï¼
select Student.Sname,course.cname,score
    from Student,SC,Course ,Teacher
    where Student.s_id=SC.s_id and SC.c_id=Course.c_id  and sc.t_id=teacher.t_id
    and Teacher.Tname='tname553'
    and SC.score=(select max(score)from SC where sc.t_id=teacher.t_Id);
ææ¥åæä¸ä¸è¿ä¸ªè¯å¥ï¼4å¼ è¡¨çå¼joinï¼è¿æä¸ä¸ªåæ¥è¯¢ãç®æ¯æ¯è¾ç®åçsqlè¯å¥äºï¼ç¸æ¯ERPå¨å°±10å¼ è¡¨çå¦ï¼å·²ç»å¾ç®åäºï¼ãæ è¿ä¼å解è¿ä¸ªè¯å¥æ3个ç®åçsqlï¼
 select max(score)  from SC ,Teacher where sc.t_id=teacher.t_Id and Teacher.Tname='tname553';
   select sc.t_id,sc.s_id,score   from SC ,Teacher
   where sc.t_id=teacher.t_Id
   and score=590
   and Teacher.Tname='tname553';
    select Student.Sname,course.cname,score
    from Student,SC ,course
    where Student.s_id=SC.s_id and  sc.s_id in (20769800,48525000,26280200) and course.c_id = sc.c_id;
ææ¥åæä¸ï¼ç¬¬ä¸å¥ï¼å°±æ¯æ¥è¯¢æé«åï¼å¾å°æé«å590åã第äºå¥å°±æ¯æ¥è¯¢åºæé«åçå¦çidï¼å¾å°
20769800,48525000,26280200
ã第ä¸å¥å°±æ¯æ¥è¯¢åºå¦çååååæ°ãè¿æ ·è¿3个è¯å¥çå°±å¯ä»¥æ¥è¯¢åºæ¥ æ绩æé«çå¦çå§ååå ¶æ绩 ã
æ¥ä¸æ¥æä¼åå«é æ°æ®ï¼1åä¸é课记å½(ä¸ä¸ªå¦çéä¿®2é¨è¯¾),é 500ä¸å¦çï¼100ä¸èå¸(ä¸ä¸ªèå¸å¸¦5个å¦çï¼æºé«ç«¯çå§)ï¼1000é¨è¯¾ï¼ãç¨ä¸é¢æ¥è¯¢è¯å¥æ¥è¯¢ãå ¶ä¸sc表ææµè¯äºä¸æç´¢å¼å没æç´¢å¼æ åµï¼å ·ä½è§ä¸è¡¨ãåæ¥ä¸æ¥ï¼æä¼é 1亿é课记å½(ä¸ä¸ªå¦çéä¿®2é¨è¯¾),5000ä¸å¦çï¼1000ä¸èå¸ï¼1000é¨è¯¾ãç¶ååå«æ§è¡ä¸è¿°è¯å¥ãæåæä¼å¨oracleæ°æ®åºä¸æ§è¡ä¸è¿°è¯å¥ã
äºãä¸é¢ä¸¤å¼ 表æ¯æµè¯ç»æ
å ãä»ç»çä¸è¡¨ï¼å¯ä»¥åç°ï¼
- æ¥éª¤3.1没æå¨è¿æ¥é®ä¸å ç´¢å¼ï¼æ¥è¯¢å¾æ ¢ï¼è¯´æï¼âå¤è¡¨å ³èæ¥è¯¢æ¶ï¼ä¿è¯è¢«å ³èçå段éè¦æç´¢å¼âï¼
- æ¥éª¤6.1,6.2,6.3ï¼æ¢æç®åsqlï¼å¨æ°æ®é1亿以ä¸ï¼ æ¥è¯¢æ¶é´è¿è½å强æ¥åãæ¤æ¶è¯´æmysqlæ¥è¯¢æäºååäºï¼ä½æ¯ä»ç¶å«©æ¥è¯¢åºæ¥ã
- æ¥éª¤5.1ï¼mysqlæ¥è¯¢ä¸åºæ¥ï¼4表è¿æ¥ï¼å¯¹ææ¬æºmysqlæ¥è¯´ï¼1.5亿æ°æ®è¶ è¿æéäºï¼æè°ä¼è¿è¿ä¸ªSQLï¼æ§è¡è®¡ååç´¢å¼é½èµ°äºï¼æ²¡æé®é¢ï¼show profileæ¾ç¤ºå¨sending data.è¿ä¸ªé®é¢å¦å¤æç« è¯¦è°ãï¼
4.对æ¯1.1 å5.1 æ¥éª¤sqlæ¥è¯¢ï¼4表è¿æ¥ï¼å¯¹ææ¬æºmysqlæ¥è¯´ ï¼1.5åä¸æ°æ®æ¥è¯¢å¾æµå©ï¼æ¯ä¸ä¸ªmysqlæ°æ®éæµå©åæ°´å²ã(è¿ä¸ªåªæ¯ç°è±¡ï¼ä¸å¤ªåç¡®ï¼éè¦åæ¶è®¡ç®è¡¨ç容é)ã
å¦ææ¨æ£å¨å¦ä¹ Spring Bootï¼æ¨èä¸ä¸ªè¿è½½å¤å¹´è¿å¨ç»§ç»æ´æ°çå è´¹æç¨ï¼http://blog.didispace.com/spring-boot-learning-2x/
5.æ¥éª¤5.1对æ¯6.1,6.2,6.3ï¼å¤è¡¨join对mysqlæ¥è¯´ï¼å¤çæäºååã
6.è¶ è¿ä¸å¼ 表ç¦æ¢join,è¿ä¸ªè§åæ¯é对mysqlæ¥è¯´çãåç»ä¼çå°æç¨åæ ·æºå¨ï¼åæ ·æ°æ®éï¼åæ ·å åï¼å¯ä»¥å®ç¾è®¡ç® 1.5亿æ°æ®éjoinãé对è¿æ ·ä¸ä¸ªè§åï¼å¯¹å¼åæ¥è¯´ ï¼éè¦æä¸äºé»è¾æ¾å°åºç¨å±å»æ¥è¯¢ã
æ»ç»ï¼è¿ä¸ªè§å è¶ è¿ä¸å¼ 表ç¦æ¢join ,ç±äºæ°æ®é太大çæ¶åï¼mysqlæ ¹æ¬æ¥è¯¢ä¸åºæ¥ï¼å¯¼è´é¿éåºäºè¿æ ·ä¸ä¸ªè§å®ã(å ¶å®å¦æ表æ°æ®éå°ï¼10å¼ è¡¨ä¹ä¸æé®é¢,ä½ èªå·±å¯ä»¥è¯è¯)èæä»¬å ¬å¸æ¯ä»ç³»ç»æç大è§æ¨¡é«å¹¶åç®æ 设计çï¼æ以ï¼éµå¾ªè¿ä¸ªè§å®ãå¨ä¸å¡å±é¢æ¥è®²ï¼åç®åsqlï¼ææ´å¤é»è¾æ¾å°åºç¨å±ï¼æçéæ±æä¼æ´äºè§£ï¼å¨åºç¨å±å®ç°ç¹å®çjoinä¹å®¹æå¾å¤ã
ä¸ã让æ们æ¥ççoracleæ°æ®åºçä¼ç§è¡¨ç°
çæ¥éª¤7.1ï¼å°±æ¯æ²¡æç´¢å¼ï¼join表å¾å¤çæ åµä¸ï¼oracleä»ç¶26ç§æ¥è¯¢åºç»ææ¥ãæ以æä¼è¯´mysqlçjoinå¾å¼±ãé£ä¹é®é¢æ¥äºï¼ä¸ºä»ä¹ç°å¨ä½¿ç¨å¾å¤äººä½¿ç¨mysqlå¢ï¼è¿æ¯å¦å¤ä¸ä¸ªé®é¢ï¼æä¼å¦å¤è¯´ä¸æçæèã
çå®æ¬ç¯æç« ï¼å¦å¤æè¿éå èµ éï¼æè°æèæå åãå°±æ¯å¿«éé æ°æ®ãä½ å¯ä»¥èªå·±å åèæ¬é æ°æ®ï¼ççææ¯æä¹é æ°æ®çï¼å°±ç¥éæçæå·§äºã
å «ãéä¸é¨åæªå¾
å «ãéä¸sqlè¯å¥åé æ°æ®èæ¬
use stu;
drop table if exists student;
create table student
  (  s_id int(11) not null auto_increment ,
     sno    int(11),
     sname varchar(50),
     sage  int(11),
     ssex  varchar(8) ,
     father_id int(11),
      mather_id int(11),
      note varchar(500),
     primary key (s_id),
   unique key uk_sno (sno)
  ) engine=innodb default charset=utf8mb4;
truncate table student;
  delimiter $$
drop function if exists   insert_student_data $$
create function insert_student_data()
 returns  int deterministic
    begin
    declare  i int;
      set i=1;
      while  i<50000000 do
      insert into student  values(i ,i, concat('name',i),i,case when floor(rand()*10)%2=0 then 'f' else 'm' end,floor(rand()*100000),floor(rand()*1000000),concat('note',i) );
      set i=i+1;
      end while;
      return 1;
    end$$
delimiter ;
select  insert_student_data();
select count(*) from student;
use stu;
create table course
  (
     c_id int(11) not null auto_increment ,
     cname varchar(50)
     note varchar(500), primary key (c_id)
  )  engine=innodb default charset=utf8mb4;
truncate table course;
  delimiter $$
drop function if exists   insert_course_data $$
create function insert_course_data()
 returns  int deterministic
    begin
    declare  i int;
      set i=1;
      while  i<=1000 do
      insert into course  values(i , concat('course',i),floor(rand()*1000),concat('note',i) );
      set i=i+1;
      end while;
      return 1;
    end$$
delimiter ;
select  insert_course_data();
select count(*) from course;
use stu;
drop table if exists sc;
create table sc
  (
     s_id    int(11),
     c_id    int(11),
     t_id    int(11),
     score int(11)
  )  engine=innodb default charset=utf8mb4;
truncate table sc;
  delimiter $$
drop function if exists   insert_sc_data $$
create function insert_sc_data()
 returns  int deterministic
    begin
    declare  i int;
      set i=1;
      while  i<=50000000 do
      insert into sc  values( i,floor(rand()*1000),floor(rand()*10000000),floor(rand()*750)) ;
      set i=i+1;
      end while;
      return 1;
    end$$
delimiter ;
select  insert_sc_data();
commit;
select  insert_sc_data();
commit;
create index idx_s_id  on sc(s_id)   ;
create index idx_t_id  on sc(t_id)   ;
create index idx_c_id  on sc(c_id)   ;
select count(*) from sc;
use stu;
drop table if exists teacher;
create table teacher
  (
    t_id  int(11) not null auto_increment ,
     tname varchar(50) ,
     note varchar(500),primary key (t_id)
  )  engine=innodb default charset=utf8mb4;
  truncate table teacher;
  delimiter $$
drop function if exists   insert_teacher_data $$
create function insert_teacher_data()
 returns  int deterministic
    begin
    declare  i int;
      set i=1;
      while  i<=10000000 do
      insert into teacher  values(i , concat('tname',i),concat('note',i) );
      set i=i+1;
      end while;
      return 1;
    end$$
delimiter ;
select  insert_teacher_data();
commit;
select count(*) from teacher;
è¿ä¸ªæ¯oracleçæµè¯åé æ°æ®èæ¬
create tablespace scott_data  datafile  '/home/oracle/oracle_space/sitpay1/scott_data.dbf'  size 1024m autoextend on;
create tablespace scott_index   datafile  '/home/oracle/oracle_space/sitpay1/scott_index.dbf'  size 64m  autoextend on;
create temporary tablespace scott_temp  tempfile  '/home/oracle/oracle_space/sitpay1/scott_temp.dbf'  size 64m autoextend on;
drop user  scott cascade;
create user  scott  identified by  tiger  default tablespace scott_data  temporary tablespace scott_temp  ;
grant resource,connect,dba to  scott;
drop table student;
create table student
  (  s_id number(11) ,
     sno    number(11) ,
     sname varchar2(50),
     sage  number(11),
     ssex  varchar2(8) ,
     father_id number(11),
      mather_id number(11),
      note varchar2(500)
  ) nologging;
truncate table student;
create or replace procedure insert_student_data
 is
   q number(11);
    begin
     q:=0;
      for i in  1..50 loop
      insert /*+append*/ into student   select rownum+q as s_id,rownum+q  as sno, concat('sutdent',rownum+q ) as sname,floor(dbms_random.value(1,100)) as sage,'f' as ssex,rownum+q  as father_id,rownum+q  as mather_id,concat('note',rownum+q ) as note from dual connect by level<=1000000;
      q:=q+1000000;
      commit;
      end loop;
end insert_student_data;
/
call insert_student_data();
alter table student  add constraint  pk_student primary key (s_id);
commit;
select count(*) from student;
create table course
  (
     c_id number(11) primary key,
     cname varchar2(50),
     note varchar2(500)
  )  ;
truncate table course;
 create or replace procedure insert_course_data
 is
   q number(11);
    begin
      for i in  1..1000 loop
      insert /*+append*/ into course  values(i , concat('name',i),concat('note',i) );
      end loop;
end insert_course_data;
/
call insert_course_data();
commit;
select count(*) from course;
create table sc
  (
     s_id    number(11),
     c_id    number(11),
     t_id    number(11),
     score number(11)
  ) nologging;
truncate table sc;
 create or replace procedure insert_sc_data
 is
   q number(11);
    begin
     q:=0;
      for i in  1..50 loop
      insert /*+append*/ into sc   select rownum+q as s_id, floor(dbms_random.value(0,1000))  as c_id,floor(dbms_random.value(0,10000000)) t_id,floor(dbms_random.value(0,750)) as score from dual connect by level<=1000000;
      q:=q+1000000;
      commit;
      end loop;
end insert_sc_data;
/
call insert_sc_data();
create index idx_s_id  on sc(s_id)   ;
create index idx_t_id  on sc(t_id)   ;
create index idx_c_id  on sc(c_id)   ;
select count(*) from sc;
create table teacher
  (
    t_id  number(11) ,
     tname varchar2(50) ,
     note varchar2(500)
  )nologging ;
    truncate table teacher;
create or replace procedure insert_teacher_data
 is
   q number(11);
    begin
     q:=0;
      for i in  1..10 loop
      insert /*+append*/ into teacher   select rownum+q as t_id, concat('teacher',rownum+q ) as tname,concat('note',rownum+q ) as note from dual connect by level<=1000000;
      q:=q+1000000;
      commit;
      end loop;
end insert_teacher_data;
/
call insert_teacher_data();
alter table teacher  add constraint  pk_teacher primary key (t_id);
select count(*) from teacher;
æ¨èé 读ï¼
- 漫è¯ï¼å¦ä½ç»å¥³æå解é为ä»ä¹å´æå¡ä¼è¢«"ä¸é´äººæ»å»"ï¼
- 漫è¯ï¼å¦ä½ç»å¥³æå解é为ä»ä¹Java线ç¨æ²¡æRunningç¶æï¼
- 漫è¯ï¼å¦ä½ç»å¥³æå解é为ä»ä¹ä¸è½å¨MySQLä¸ä½¿ç¨UTF-8ç¼ç
- 漫è¯ï¼å¦ä½ç»å¥³æå解é为ä»ä¹Java ä¸"1000==1000"为falseï¼è"100==100"为trueï¼
å欢æå¯ä»¥ç»æ设为ææ å¦
好æç« ï¼æâå¨çâ