JavaWeb06-HTML篇筆記(一)
阿新 • • 發佈:2018-05-11
Java1.1 上次課內容回顧:
數據庫:就是一個文件系統,這個文件必須通過標準的SQL訪問.
1.2.1.2 什麽是關系型數據庫:
關系型的數據庫存放的都是實體之間的關系.
1.2.1.3 常用的關系型數據庫:
BootStrap:
* 響應式的HTML,CSS,JS的框架.
* 響應式設計:
* 設計一套頁面,適配不同的設備,在手機,PAD,PC端都能夠正常瀏覽.
* 響應式原理:
* 使用CSS3的媒體查詢,根據屏幕的分辨率匹配不用的樣式.
* BootStrap:
* 全局CSS:
* 柵格:
* 表單:
* 按鈕...
* 組件:
* 導航條:
* 分頁欄:
* 標簽頁:
* JS的插件:
* 圖片輪播.
1.2 MYSQL的回顧:1.2.1 MySQL的概述:1.2.1.1 什麽是數據庫:
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 數據庫名;
【修改數據庫】
語法:
- drop database 數據庫名;
- 修改數據庫修改的是的數據庫的字符集和校對規則.
- alter database 數據庫名 character set 新字符集 collate 校對規則;
【切換數據庫】
語法:
- 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篇筆記(一)