Java學習路線-41:數據庫及SQL/MySQL基礎

數據庫及SQL/MySQL基礎

課時1 數據庫概述

1、常見數據庫
Oracle 甲骨文
DB2 IBM
SQL Server 微軟
Sybase 賽爾斯
MySQL 甲骨文

2、理解數據庫
RDBMS = Manager + Database
Relational Database Management System
關係型數據庫管理系統

Database = N 個 Table
Table: 表結構、表記錄

課時2 Java應用與數據庫的關係

課時3-4 安裝/刪除MySQL

安裝路徑不要有中文

MAC brew安裝/卸載mysql

$ brew install mysql

$ brew uninstall mysql

課時5 MySQL安裝路徑以及配置信息

mysqld 服務端
mysql 客戶端

課時6 開啓關閉服務器以及登錄退出客戶端

mysql啓動/關閉服務

$ mysql.server start

$ mysql.server stop

登錄退出客戶端

# 登錄
$ mysql -uroot -p

# 查看數據庫
> show databases;

# 退出
> exit/quit;

課時7 SQL語言的概述

SQL
Structured Query Language
結構化查詢語言

SQL方言
某些數據庫的獨有語法,
例如:limit語句只在MySQL中使用

SQL語法
1、單行或多行書寫,分號結尾
2、可以使用空格或縮進增強可讀性
3、MySQL不區分大小寫,建議使用大寫

SQL語句分類

簡稱 全稱 中文 說明
DDL Data Definition Language 數據定義語言 定義庫、表、列結構
DCL Data Control Language 數據控制語言 定義訪問權限和安全級別
DML Data Manipulation Language 數據操作語言 操作數據,增、刪、改
DQL Data Query Language 數據查詢語言 查詢數據

課時8 DDL(數據定義語言)之操作數據庫

-- 查看所有數據庫:
show databases;

-- 選擇數據庫:
use <database_name>;

-- 創建數據庫:
create database [if not exists] <database_name> [charset=utf8];

-- 刪除數據庫:
drop database [if exists] <database_name>;

-- 修改數據庫編碼:
alter database <database_name> character set utf8

課時9-10 數據類型介紹

int 整型
double 浮點型,例如 double(5, 2) 表示最多5位,其中2位小數,即最大999.99
decimal 浮點型,貨幣使用,不會出現精度缺失
char 定長字符串,char(255),長度不足指定長度會補足到指定長度,比變長節省空間
varchar 變長字符串 varchar(65535)

text(clob) 字符串
tynytext(255B),
text(64K),
mediumtext(16M),
longtext(4G)

blob 字節類型
tynyblob(255B),
blob(64K),
mediumblob(16M),
longblob(4G)

date 日期 yyyy-MM-dd
time 時間 hh:mm:ss
timestamp 時間戳

課時11 DDL(數據定義語言)之操作表

1、創建表, 注意最後一列沒有逗號

create table [if not exists] <table_name>(
    <列名> <列類型>,
    ...
    <列名> <列類型>
);

eg:

-- 創建數據庫
create database school;

-- 切換數據庫
use school;

-- 創建數據表
create table tb_stu(
    number char(11),
    name varchar(50),
    age int,
    gender varchar(10)
);

-- 查看當前數據庫中所有表
show tables;

-- 查看指定表的創建語句
show create table tb_stu;
show create table stu \G
d
-- 查看錶結構
desc tb_stu;

-- 刪除表
drop table ts_stu;

show tables;

2、修改表

-- 前綴
alter table <table_name> 

-- 添加列
alter table <table_name> add (
    <列名> <列類型>,
    ...
    <列名> <列類型>
);

-- 修改列類型
-- 如果已存在數據,新類型可能會影響到已存在數據
alter table <table_name> modify 列名 列類型;

-- 修改列名稱
alter table <table_name> change 原列名 新列名 列類型;

-- 刪除列
alter table <table_name> drop 列名;

-- 修改表名
alter table 原表名 rename to 新表名;

課時12-13-14 DML(數據操作語言)

查詢所有記錄

select * from <table_name>;

1、插入數據

insert into <table_name>(列名1, 列名2,...) values(列值1, 列值1,...);

沒有指定的列等同於插入默認值
值的順序與指定列順序對應
列名可省略(不建議)

字符串類型使用單引號,不能使用雙引號
日期類型也要使用單引號

2、修改數據

update 表名 set 列名1=列值1, 列名2=列值2,...[where條件]

條件必須是一個boolean類型的值或表達式
運算符:=、!=、<>、>、<、>=、<=、between…and、in(…)、is null、not、or、and

3、刪除數據

delete from 表名 [where條件]

-- truncate是DDL語句,先刪除drop,在創建creae,無法回滾
truncate table 表名 

課時15 DCL(數據控制語言)

1、創建用戶
一個項目創建一個用戶,一個項目對應的數據庫只有一個

-- 用戶只能在指定的ip地址上登錄
create user 用戶名@ip地址 identified by 密碼;

-- 用戶可以在任意ip地址上登錄
create user 用戶名@'%' identified by 密碼;

2、用戶授權
(1) 給用戶分派指定權限

grant 權限1,...權限n on 數據庫.* to 用戶名@ip地址

eg:

grant create, alter, drop, insert, update, delete, select on db1.* to user1@localhost;

(2) 給用戶分派所有權限

grant all on 數據庫.* to 用戶名@ip地址

3、撤銷授權
(1) 撤銷指定權限

revoke 權限1,...權限n on 數據庫.* from 用戶名@ip地址

eg:

revoke create, alter, drop on db1.* from user1@localhost;

(2) 撤銷指定權限

revoke 權限1,...權限n on 數據庫.* from 用戶名@ip地址

4、查看權限

show grants for 用戶名@ip地址;

5、刪除用戶

drop user 用戶名@ip地址;

課時16 DQL(數據查詢語言)之基礎查詢之列控制

-- 查詢所有列
select * from 表名;

-- 查詢指定列
select 列名1, 列名2... 列名n from 表名;

-- 記錄去重
select distinct * from 表名;
select distinct 列名 from 表名;

-- 列運算
-- (1)加減乘除
select age-1 from table

-- (2)字符串連接,不能用加號連接+
select concat('$', salary) from table;

-- (3)轉換null值, 任何值與null相加都是null
select ifnull(salary, 0) + 1000 from table;
-- ifnull(salary, 0) 如果salary is null 那麼 salary->0

-- (4)列別名
select name as 姓名 from table;
select name 姓名 from table;

課時17 DQL(數據查詢語言)之條件查詢

使用where子句控制記錄

select * from table where salary>500;
select * from table where name in ('李白', '杜甫');
select * from table where salary between 200 and 500;

課時18 DQL(數據查詢語言)之模糊查詢

下劃線_代表一個字符
百分號%代表[0,n]個字符

select * from table where name like '張_';
select * from table where name like '張%';

課時19 DQL(數據查詢語言)之排序

默認升序排序

-- 升序 默認, asc可省略
select * from table order by id asc;

-- 降序
select * from table order by id desc;

-- 多列排序
select * from table order by salary asc, id desc;

課時20 DQL(數據查詢語言)之聚合函數

-- 統計有效行數,整行全是null不計數
select count(*) from table;

-- 統計不是null的行數
select count(id) from table;

-- 求和
select sum(salary) from table;

-- 最小值
select min(salary) from table;

-- 最大值
select max(salary) from table;

-- 平均值
select avg(salary) from table;

select count(*) 人數, 
sum(salary) 總和, avg(salary) 平均值,
max(salary) 最高,  min(salary) 最低 
from table;

課時21 DQL(數據查詢語言)之分組查詢

select job, count(*) from table group by job;

-- 先過濾再分組
select job, count(*) from table where salary > 1500 group by job;

-- 先過濾,再分組,再對分組結果過濾
select job, count(*) from table where salary > 1500 group by job having count(*)  >= 2;

課時22 DQL(數據查詢語言)之limit方言

計算公式:

跳過行數 = ( 當前頁 - 1 ) * 每頁記錄數
select * from table limit count;
select * from table limit count OFFSET offset;
select * from table limit offset, count;
發佈了1418 篇原創文章 · 獲贊 370 · 訪問量 130萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章