一、 數據庫:
*學習重點:創建數據庫/向表添加記錄/查詢記錄
數據庫概念:文件系統(存儲和管理)
數據庫軟件介紹:Oracle/MySQL/SQL server…
分類:
關系型數據庫:關系模型組織數據
非關系型數據庫:鍵值對關系存儲
二、 mysql數據的存儲方式:
一臺數據庫服務器中會創建很多個數據庫(一個項目會創建一個數據庫)
在數據庫中會創建很多張表(一個實體會創建一個表)
在表中會有很多記錄(一個對象的實例會添加一條新的記錄)
三、 數據庫中表和Java中類的對應關系:
數據庫中以表的方式存儲數據,類似于Java中的類,每個字段會有相應的數據類型;
表名 – Java類
表中的字段 – 類中的屬性
表中的記錄 – 類創建的對象
瀏覽器 — Web服務器 — 數據庫服務器
用戶 項目
四、 SQL: (結構化查詢語言:Structure Query Language)
1)概述:定義了操作所有關系型數據庫的規則;
2)SQL通用語法:
1.語句以分號結尾
2.空格和TAB增加可讀性
3.不區分大小寫,關鍵字用大小寫
4.三種注釋; a. -- (通用) b. # (mysql特有) c. /* */
3)SQL分類: (了解)
DDL(Database Definition Language): 操作數據庫/表
DML(Database Manipulation Language): 增刪改表中的數據
**DQL(Database Query Language):查詢表中的數據
DCL(Database Control Language): 授權
五、 DDL: (Definition)操作數據庫/表
1) 操作數據庫 (CRUD)
1. Create:創建
create database 庫名; 創建數據庫
create database 庫名; 創建數據庫
create database if not exists 庫名;
create database 庫名 character set 字符集名;
create database if not exists 庫名 character set 字符集名;
2. Retrieve:查詢
show databases; 查看所有數據庫;
show create database 庫名;查看指定數據庫的字符集(創建語句)
3. Update:修改
alter database 庫名 character set 字符集名;
4. Delete:刪除 (慎用)
drop database 庫名;
drop database if exists 庫名;
5. 使用數據庫
use 庫名; (不加database)
select database();?查看正在使用的數據庫;
2) 操作表 (CRUD)
1. Create:創建
create table 表名 (列名1 數據類型1, 列名2 數據類型2…);
注意: 1.加() 2.最后一列不要逗號
常見數據類型:
數值類型:
int: 整數 eg: age int;
double(m,n):小數
eg:score double(5,2);五位小數,保留兩位;
字符串類型 :
varchar(len):字符串(長度可變) 格式:varchar(字符串長度)
char:字符串(長度固定)
示例: zhangsan 8個字符 張三 2個字符
日期類:
time(HH-mm-ss):時間
date: 日期 格式: yyyy-MM-dd eg:19960227 /1996-02-27
datetime:日期
格式: yyyy-MM-dd HH:mm:ss eg:19960227052013
注意: 如果沒有存值,則默認為 Null
timestamp:時間戳 (stamp郵票)
注意: 沒有存值,默認系統時間;
//示例:
create table student(
id int,
name varchar(30),
score double(5,2),
birthday date(yyyy-MM-dd),
insert_time timestamp
)
2. Retrieve:查詢
show tables; – 查詢所有的表; (并沒有show table 表名;語句)
show create table 表名; – 查看創建表的詳細信息
describe 表名;–查詢表結構;
3. Update:修改 (八太重要)
a) 修改表名
alter table 表名rename to 新表名; – 修改表名
alter table 表名 character set 字符集名;–修改表的字符集
b) 添加一列:
alter table表名 add 列名 數據類型; – 添加新字段
c) 修改列的名稱/類型
alter table 表名 change 列名 新列名 新數據類型;–修改指定的字段
alter table 表名 modify 列名 新數據類型;–修改字段的數據類型
d) 刪除列
alter table 表名 drop 列名; 刪除表的字段
4. Delete:刪除表
drop table 表名;
drop table if exists 表名;
六、 DML: (Manipulation)增刪改表中數據
添加數據:
insert into 表名 (列名1,列名2…) value (值1,值2…);
insert into 表名 value (值1,值2…); – 給所有列添加數據
注意:
1.列名和值要一一對應
2.如果不定義列名,默認給所有列添加值,寫的時候就要寫全,不然報錯;
問題:
在命令窗口添加中文數據時,會報錯;編碼問題;
SHOW VARIABLES LIKE ‘%character_set_%’;模糊查詢變量字符串的設置
刪除數據:
delete from 表名 where 條件; ?按條件刪除數據
注意:不加條件,刪除所有記錄; (慎用) 有多少條記錄就會執行多少次操作;
truncate table 表名; (推薦效率高) – 刪除表,再創建一樣的新表;
truncate :vt. 把…截短;縮短;使成平面
修改數據:
update 表名 set 列名1 = 值1, 列名2 = 值2… where 條件;
注意:不加條件,默認修改所有的記錄;
七、 DQL: (Query)查詢表中的記錄
1. 語法
select
字段列表
from
表名列表
where
條件列表
group by
分組字段
having
分組之后的條件限定
order by
排序
limit 分頁限定
2. 基礎查詢
多個字段的查詢:
select 列名1,列名2...from 表名; 查詢
select * from 表名; 查詢表中所有數據
去重:
select distinct address from student;
計算列:
select 列名1 + 列名2 from student;
注意:如果有null值參與的運算,結果都是null;
解決:select 列名1 + ifnull(列名2, 0) from student;
ifnull(表達式1,表達式2);
表達式1:那個字段需要判斷是否為null;
表達式2:如果是null,則賦值為表達式2;
起別名:
select 列名 as 新列名 from student; -- as可以省略
3. 條件查詢 ( where )
1.格式: where子句后跟條件
2.運算符:
比較運算:
< > <= >= = !=
between 數值1 and 數值2; -- 在..和..之間
in(數值1,數值2...); -- 在..中
is null /is not null ; -- 是否為null
eg: select name,math from student where math is null;
邏輯運算:
且: && / and 或: || /or 非: !
4. 模糊查詢: (like)
占位符:
_ :單個任意字符
% :多個任意字符
eg:
select *from student where name like '馬%'; -- 第一個字為馬的人
select *from student where name like '_馬%'; -- 第二個字為馬的人
select *from student where name like '___'; -- 名字為三個字的人
select *from student where name like '%橋%'; -- 名字中有橋的人
SELECT *FROM student WHERE NAME LIKE '柳_'; -- 名字為兩個且姓柳
因為本人剛開始寫博客,時間有限,沒有編輯文本.