1. 程式人生 > >JavaWeb06-HTML篇筆記(一)

JavaWeb06-HTML篇筆記(一)

Java

1.1 上次課內容回顧:

BootStrap:
* 響應式的HTML,CSS,JS的框架.
* 響應式設計:
    * 設計一套頁面,適配不同的設備,在手機,PAD,PC端都能夠正常瀏覽.
* 響應式原理:
    * 使用CSS3的媒體查詢,根據屏幕的分辨率匹配不用的樣式.
* BootStrap:
    * 全局CSS:
        * 柵格:
        * 表單:
        * 按鈕...
    * 組件:
        * 導航條:
        * 分頁欄:
        * 標簽頁:
    * JS的插件:
        * 圖片輪播.

1.2 MYSQL的回顧:1.2.1 MySQL的概述:1.2.1.1 什麽是數據庫:

數據庫:就是一個文件系統,這個文件必須通過標準的SQL訪問.
1.2.1.2 什麽是關系型數據庫:
關系型的數據庫存放的都是實體之間的關系.
技術分享圖片
1.2.1.3 常用的關系型數據庫:

MySQL   :免費的小型的數據庫,現在被Oracle收購.
Oracle  :Oracle公司收費的大型的數據庫.
SQLServer   :微軟公司收費中型的數據庫.
DB2 :IBM公司收費的大型的數據庫.
SyBase  :SyBase公司收費的數據庫.已經被淘汰.PowerDesigner數據建模的工具.
SQLite  :小型的嵌入式的數據庫.
***** Java程序中經常使用的數據庫
MySQL
Oracle

1.2.1.4 數據庫存儲的結構:
1.2.2 SQL的概述:1.2.2.1 什麽是SQL:
SQL:結構化的查詢語言.
1.2.2.2 SQL分類:

DDL:數據定義語言
    * create,alter,drop...
DML:數據操縱語言
    * update,insert,delete
DCL:數據控制語言
    * grant,if..
DQL:數據查詢語言
    * select

1.2.2.3 SQL的特點:
非過程性語言:一條語句就會有一個運行的結果.
1.2.3 使用SQL1.2.3.1 使用SQL操作數據庫(對數據庫的CRUD的操作)
【創建數據庫】

語法:
* create database 數據庫名稱 [character set 字符集 collate 字符集校對];
練習:
* 創建db1;
    * create database db1;
* 創建一個帶有字符集的數據庫db2;
    *  create database db2 character set gbk;
* 創建一個帶有字符集和校對規則的數據庫db3;
    * create database db3 character set utf8 collate  utf8_bin;

【查看數據庫】

語法:
* 查看數據庫服務器中所有的數據庫:
    * show databases;
* 查看某個數據庫的定義信息.
    * show create database 數據庫名;
* 查看當前正在使用的數據庫信息.
    * select database();

【刪除數據庫】
語法:

  • 刪除數據庫:
    • drop database 數據庫名;
      【修改數據庫】
      語法:
  • 修改數據庫修改的是的數據庫的字符集和校對規則.
    • alter database 數據庫名 character set 新字符集 collate 校對規則;
      【切換數據庫】
      語法:
  • use 數據庫名稱;
    1.2.3.2 使用SQL操作數據庫中的表(對數據庫的表CRUD的操作)
    【創建表】
? 語法:
* create table 表名 (
    字段名 類型(長度) 約束,
    字段名 類型(長度) 約束,
    字段名 類型(長度) 約束
);

? 數據類型:
* Java類型:   MySQL:
  byte/short/int/long   tinyint/smallint/int/bigint
  String    char/varchar
                            * 區別?char是固定長度的字符串,varchar可變長度的字符串.
                            * char(8) 和 varchar(8)
                                * 如果插入一個字符串hello 插入到char 那麽 插入hello   .插入到varchar中 插入hello
 float  float
 double double
 boolean    bit
 Date   date/time/datetime/timestamp
    * datetime和timestamp都是既有日期又有時間的日期類型
                            * 區別? datetime需要使用外部傳入的日期.如果沒傳這個值就是Null. timestamp會使用系統當前的時間作為這個值的默認值.
 文本文件   Text
 二級制文件  BLOB
***** Oralce使用CLOB/BLOB
***** MYSQL中除了字符串類型需要設置長度其他的類型都有默認長度.

? 約束:
單表約束:
* 主鍵約束:primary key (默認就是唯一非空的)
* 唯一約束:unique
* 非空約束:not null

? 創建一個表:
? ***** 創建表之前先選擇數據庫:use 某個數據庫;
create table employee(
    eid int primary key auto_increment,
    ename varchar(20) not null,
    email varchar(30) unique,
    birthday date,
    job varchar(20),
    resume text
);
【表的查看】
? 查看數據庫中有哪些表:
* show tables;
? 查看表結構:
* desc 表名;
【表的刪除】
? 表的刪除:
* drop table 表名;
【表的修改】
? 修改表添加列:
* alter table 表名 add 列名 類型(長度) 約束;
    * alter table employee add image varchar(50);
? 修改表刪除列:
* alter table 表名 drop 列名;
    * alter table employee drop job;
? 修改表的列的類型長度及約束:
* alter table 表名 modify 列名 類型(長度) 約束;
    * alter table employee modify image varchar(80) not null;
? 修改表的列名
* alter table 表名 change 舊列名 新列名 類型(長度) 約束;
    * alter table employee change image eimage varchar(60);
? 修改表名
* rename table 舊表名 to 新表名;
    * rename table employee to user;
? 修改表的字符集:
* alter table 表名character set 字符集;
    * alter table user character set gbk;

1.2.3.3 使用SQL操作數據庫中的表的記錄(對表的記錄的CRUD的操作)
【插入記錄】
? 語法

  • insert into 表名 (列名,列名,...) values (值1,值2,...); ---插入指定列的值
  • insert into 表名 values (值1,值2,...); ---插入所有列的值
    ? 註意事項:
  • 列名的個數與值的個數對應.
  • 列的類型與值的類型對應.位置也要對應.
  • 列的類型如果是字符串或者日期,寫值的時候使用單引號將值引起來.
  • 插入的值的最大長度不能超過列的最大長度.
    ? 插入記錄:
* 插入某幾列的值:
    * insert into employee (eid,ename,email) values (null,‘aaa‘,‘[email protected]‘);
* 插入所有列的值:
    * insert into employee values (null,‘bbb‘,‘[email protected]‘,‘1990-09-01‘,‘HR‘,‘I am HR‘);
? 插入中文:
insert into employee (eid,ename,email) values (null,‘張三‘,‘[email protected]‘);
ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD‘ for column ‘ename‘ at row 1
***** 插入中文問題的解決:
* show variables like ‘%character%‘;

***** 找到MYSQL的安裝路徑/my.ini文件:

技術分享圖片
技術分享圖片

**** 重新加載mysql的配置文件:
* services.msc
* 停止mysql的服務,重新啟動mysql服務.
* 執行之前的SQL語句.
【修改記錄】
? 語法:
* update 表 set 列名=值,列名=值 [where 條件];
? 註意事項:
* 列名和值類型也要一致.
* 值不能超過列的最大長度.
* 值是字符串或日期,需要使用單引號.
? 練習:
* 修改employee表中所有記錄的job為WORKER
    * update employee set job=‘WORKER‘;
* 修改employee表將name為aaa的郵箱改為[email][email protected][/email]
    * update employee set email = ‘[email protected]‘ where ename = ‘aaa‘;
* 修改employee表將name為bbb的郵箱改為[email][email protected][/email]同時修改job為HR
    * update employee set email = ‘[email protected]‘ , job=‘HR‘ where ename=‘bbb‘;
【刪除記錄】
? 語法:
* delete from 表 [where 條件];
? 註意事項:
* 刪除表中的一行記錄,不能刪除某列值
* 如果沒有條件刪除表中的所有列.
? 練習:
* 刪除id為8的記錄:
    * delete from employee where eid = 8;
* 刪除所有記錄:
    * delete from employee;
? 刪除表中的所有記錄truncate table 表名  和 delete from 表  區別?
* 區別:
    * truncate table 刪除表的記錄:將整個表刪除掉,重新創建一個新的表.truncate屬於DDL.
    * delete from 刪除表的記錄:一條一條進行刪除. delete屬於DML。
        * 事務管理 只能作用在DML語句上.如果再一個事務中使用delete刪除所有記錄,可以找回.
【基本查詢】
? 查詢語句:
* select [distinct] *|列名 from 表 [where 條件];

? 準備:
create table exam(
id int primary key auto_increment,
name varchar(20),
english int,
chinese int,
math    int
);

insert into exam values (null,‘張三‘,85,74,91);
insert into exam values (null,‘李四‘,95,90,83);
insert into exam values (null,‘王五‘,85,84,59);
insert into exam values (null,‘趙六‘,75,79,76);
insert into exam values (null,‘田七‘,69,63,98);
insert into exam values (null,‘李四‘,89,90,83);

? 查詢所有記錄:
* select * from exam;
? 查詢這個班級人的姓名和英語成績:
* select name,english from exam;
? 查詢英語成績,將重復英語成績去掉:
* select distinct english from exam;
? 查詢李四的學生成績:
select * from exam where name=‘李四‘;
? 查詢名稱叫李四並且英語成績大於90的
select * from exam where name=‘李四‘ and english >90;
? 將成績+10分進行顯示:
select name ,english+10,chinese+10 ,math+10 from exam;
? 顯示這個人的名稱和對應總成績的分數:
select name,english+chinese+math from exam;
? 使用as起別名,as可以省略.
select name , english+chinese+math as sum from exam;
【條件查詢】
? where語句後面可以加:
條件的關鍵字:
= , > , >= , <, <= , <>

like中可以使用占位符: _ 和 %  :下劃線匹配一個字符, %:可以匹配任意多個字符.
* like ‘張%’;  like ‘張_’; like ‘%明’; like ‘%明%’;

in 後跟著一組值.
* id in (1,2,3)

and or not
【排序查詢】
? order by 對數據進行排序.默認升序. (asc升序,desc降序)
* 查詢所有學生的信息,並且按語文成績進行排序.
    * select * from exam order by chinese;
* 查詢所有學生的信息,並且按語文成績進行降序排序.
    * select * from exam order by chinese desc;
* 查詢學生的信息,按照英語成績降序排序,如果英語成績相同,按照語文降序.
    * select * from exam order by english desc, chinese desc;
* 查詢姓李的學生的信息,同時按照英語升序排序.
    * select * from exam where name like ‘李%‘ order by english asc;
【聚合函數】
? sum()
? count()
? max()
? min()
? avg()
* 查詢每個學生總成績:
    * select name,(english+chinese+math) from exam;
* 統計所有學生的總分:
    * select sum(english+chinese+math) from exam;   -- ifnull(english,0)
    * select sum(english)+sum(chinese)+sum(math) from exam;
* 統計學生的個數:
    * select count(*) from exam;
* 統計英語成績的最高分:
    * select max(english) from exam;
* 統計語文成績的最低分:
    * select min(chinese) from exam;
* 統計英語成績平均分:
    * select avg(english) from exam;
【分組】
? group by
創建一個訂單詳情的表:
* 統計訂單中的每類商品所購買的個數:
    * SELECT product,COUNT(*) FROM orderitem GROUP BY product;
* 統計訂單中的每類商品所花的金額:
    * SELECT product,SUM(price) FROM orderitem GROUP BY product;
* 統計訂單中的每類商品所花總金額大於2000信息.
    * SELECT product,SUM(price) FROM orderitem GROUP BY product HAVING SUM(price) > 2000;

* 統計訂單中名稱有電子的商品並且所花金額大於1500同時按照價格降序排序:
    * SELECT product,SUM(price) FROM orderitem WHERE product LIKE ‘電%‘ GROUP BY product HAVING SUM(price) > 1500 ORDER BY SUM(price) DESC;
【SQL的查詢語句的總結】
順序: s...f...w...g...h...o...;

JavaWeb06-HTML篇筆記(一)