數據庫
博客:http://blog.csdn.net/heyiaiqing/article/details/74066831
什么是數據庫
數據庫就是存儲數據的倉庫,其本質是一個文件系統,數據按照特定的格式將數據存儲起來,用戶可以對數據庫中的數據進行增加,修改,刪除及查詢操作
什么是數據庫管理系統
數據庫管理系統(DataBase Management System,DBMS):指一種操作和管理數據庫的大型軟件,用于建立、使用和維護數據庫,對數據庫進行統一管理和控制,以保證數據庫的安全性和完整性。用戶通過數據庫管理系統訪問數據庫中表內的數據
常見的數據庫管理系統
- MYSQL:開源免費的數據庫,小型的數據庫.已經被Oracle收購了.MySQL6.x版本也開始收費
- Oracle:收費的大型數據庫,Oracle公司的產品。Oracle收購SUN公司,收購了MYSQL
- DB2:IBM公司的數據庫產品,收費的.常應用在銀行系統中.
- SQLServer:MicroSoft公司收費的中型的數據庫.C#、.net等語言常使用
- SyBase:已經淡出歷史舞臺.提供了一個非常專業數據建模的工具PowerDesigner
- SQLite:嵌入式的小型數據庫,應用在手機端
- Java相關的數據庫:MYSQL,Oracle.
數據庫與數據庫管理系統的關系
數據庫管理關系
MySQL的安裝
http://blog.csdn.net/u013235478/article/details/50623693
SQLYog的安裝
http://download.csdn.net/detail/zl544434558/7206367
SQL語句介紹與分類
創建數據庫
/*
創建數據庫
*/
CREATE DATABASE 數據庫名;
CREATE DATABASE luoDatabase;
查看數據庫
SHOW DATABASE;
刪除數據庫
DROP DATABASE luoDatabase;
使用數據庫
USE luoDatabase;
創建表
create table 表名(
列名1(字段名) 數據類型 約束,
列名2(字段名) 數據類型 約束,
列名3(字段名) 數據類型 約束
);
CREATE TABLE users(
uId INT,
uName VARCHAR(20),
uAddress VARCHAR(40)
);
刪除表
DROP TABLE users;
主鍵約束,自動增長
/**
設置為主鍵,保證數據的唯一性,非空性
PRIMARY KEY AUTO_INCREMENT,讓主鍵列數據實現自動增長
**/
CREATE TABLE users(
uId INT PRIMARY KEY AUTO_INCREMENT,
uName VARCHAR(20),
uAddress VARCHAR(40)
);
查看所有表
SHOW TABLES;
查看某一表
DESC 表名;
刪除表
DROP table users;
修改表結構
添加列,添加字段
ALTER TABLE users ADD tel INT;
修改列名,字段名的約束
alter table 表名 modify 列名 數據類型 約束;
ALTER TABLE users MODIFY tel VARCHAR(50)
修改列名,字段名
ALTER TABLE 表名 CHANGE 舊列名 新列名 類型長度 約束; ALTER TABLE users CHANGE tel newtel VARCHAR(11) NOT NULL;
刪除列
ALTER TABLE 表名 DROP 列名;
ALTER TABLE users DROP newtel;
修改表名
RENAME TABLE 表名 TO 新名;
RENAME TABLE users TO users2;
修改表的字符集(最好不要做)
往表中添加數據(考慮主鍵)
向數據表中添加數據 insert
格式:
insert into 表名(列名1,列名2,列名3) values (值1,值2,值3);
注意:
列名,表名問題
對應問題,個數,數據類型
添加數據,不考慮主鍵
格式1:
insert into 表名 (列名) values (值);
格式2:(省略列名的不能省掉主鍵的值)
insert into 表名 values (值);
添加數據,批量寫入
格式:
insert into 表名 (列名1,列名2) values (值1,值2), (值1,值2), (值1,值2);
對數據進行更新操作
格式:(where條件最好唯一)
update 表名 set 列1=值1,列2=值2 where 條件(列名=值);
刪除表中的數據
格式:
delete from 表名 where 列名 = 值;
查詢指定列的數據
格式:
select 列名1,列名2 FROM 表名;
查詢表中所有列的數據
格式:
select * from 表名 where 列名 = 值;
查詢去掉重復記錄(distinct) distinct
格式:
select distinct 列名 from 表名
查詢重新命名列(as)
select 列名 as '名稱' from 表名
查詢時直接進行數學計算
查詢數據中,直接進行數學計算
select zname,zmoney+1000 as 'sum' from 表名
數據庫數據亂碼問題
-- 臨時性的改變,
set names 'gbk';
條件
=
<>
<=
>=
and
or
not
id in (1, 3, 5, 7)
id not in (1, 2, 3, 4)
條件查詢(where的條件過濾)
between and(可以用于日期之間的查詢)
列名 in (100, 3500, 5000)
列名 not in (100, 3500, 5000)
模糊查詢(like)
必須配合通配符
%:多個字符
_:一個字符
select * from 表名 where 列名 like '%支出%'
排序查詢
升序,降序
order by 列名 [desc:降序] [asc:升序]
select * from 表名 order by 列名 [desc:降序] [asc:升序]
聚合函數
對一列進行計算,返回單一的值
- count:統計不為null的值的個數
- sum:對一些數據進行求和計算
- max:對某列數據,獲取最大值
- avg:求平均數
count函數
select count(列名*) as 'count' from 表名;
sum求和函數,對一些數據進行求和計算 sum(列名)
sum求和時,不是數值類型就忽略,null值按照0算
select sum(列名) from 表名 [where zname like '%支出%']
max 函數,對某列數據,獲取最大值
avg函數,求平均數
如果指定列不是數值類型,那么計算結果為0
分組統計
group by 被分組的列名
select sum(列名) as 'sum', 列名 from 表名 [where 條件] Group by 列名 [order by sum]
分組后過濾,關鍵字having
select sum(列名) as 'sum', 列名 from 表名 [where 條件] Group by 列名 [order by sum] having sum > 5000
總結
后續會跟上JDBC和MySQL進階的內容,堅持堅持。