1.1數據庫與數據庫管理系統的關係java
1.2數據庫表mysql
數據庫中以表爲組織單位存儲數據。 表相似咱們的Java類,每一個字段都有對應的數據類型。 那麼用咱們熟悉的java程序來與關係型數據對比,就會發現如下對應關係。 類----------表 類中屬性----------表中字段 對象----------記錄
根據表字段所規定的數據類型,咱們能夠向其中填入一條條的數據,而表中的每條數據相似類的實例對象。表中的一行一行的信息咱們稱之爲記錄。sql
2.1 sql語句
數據定義語言:簡稱DDL(Data Definition Language),用來定義數據庫對象:數據庫,表,列等。數據庫
數據操做語言:簡稱DML(Data Manipulation Language),用來對數據庫中表的記錄進行更新。安全
數據控制語言:簡稱DCL(Data Control Language),用來定義數據庫的訪問權限和安全級別,及建立用戶。服務器
數據查詢語言:簡稱DQL(Data Query Language),用來查詢數據庫中表的記錄。工具
2.2sql的通用語法學習
MySQL中的咱們常使用的數據類型以下:ui
詳細的數據類型以下:編碼
2.3 數據庫操做:database
格式:
* `create database 數據庫名;` * `create database 數據庫名 character set 字符集;`(在裝mysql時候已經指定了默認的utf-8字符集) 例子:
建立數據庫 數據庫中數據的編碼採用的是安裝數據庫時指定的默認編碼 utf8
CREATE DATABASE day;
建立數據庫 並指定數據庫中數據的編碼
CREATE DATABASE day CHARACTER SET utf8;
查看數據庫
查看數據庫MySQL服務器中的全部的數據庫:
show databases;
查看某個數據庫的定義的信息:
show create database 數據庫名;
例如:
show create database day;
刪除數據庫
drop database 數據庫名稱;
例如:
drop database day;
其餘的數據庫操做命令
切換數據庫:
use 數據庫名;
例如:
use day;
查看正在使用的數據庫:
select database();
3.1 表結構相關的語句
3.1.1建立表
格式:
create table 表名(
字段名 類型(長度) 約束, 字段名 類型(長度) 約束
);
例如:
建立分類表:
create table sort ( sid INT, #分類ID sname VARCHAR(100) #分類名稱 );
3.1.2 主鍵約束
主鍵是用於標識當前的記錄的字段。他的特色是非空,惟一。
在開發當中通常狀況下主鍵是不具有任何含義,只用於標識當前的記錄。
1.在建立表時建立主鍵,在字段後面加上 primary key
.
create table tablename( id int primary key, )
2.在建立表時建立主鍵,在表建立的最後來指定主鍵
create table tablename( id int, ......., primary key(id) )
3.刪除主鍵:alter table 表名 drop primary key;
alter table sort drop primary key;
4.主鍵自動增加:通常主鍵是自增加的字段,不須要指定。
實現添加自增加語句,主鍵字段後加auto_increment
主鍵不須要給值自動實現增加並確保惟一性(只適用MySQL)
例子:
建立一個分類表
create table sort(
sid int primary key auto_increment,
sname varchar(100)
);
3.1.3查看錶
查看數據庫中全部的表:
格式:show tables;
查看錶結構:
格式:desc 表名;
例如:desc sort;
3.1.4刪除表
格式:drop table 表名;
例如:drop table sort;
3.1.5修改表結構格式:
1.做用:修改表添加列。
alter table 表名 add 列名 類型(長度)約束;
例如
爲sort表添加一個新的字段爲sdesc varchar(20)
alter table sort add sdesc varchar(20);
2.做用:修改表修改列的類型長度以及約束。
alter table 表名 modify 列名 類型(長度) 約束;
例如:
爲sort表的sname字段進行修改,類型爲varchar(50)添加約束 not null
alter table sort modify sanme varchar(50) not null
3.做用:修改表修改列名
alter table 表名 change 舊列名 新列名 類型(長度) 約束;
例如:
爲sort表的分類名稱字段進行更換 更換爲ssname varchar(30)
alter table sort change sname ssname varchar(30)
4.做用:修改表刪除列
alter table 表名 drop 列名;
例如:
刪除sort表中的ssname這一列
alter table sort drop ssname;
5.做用:修改表名
例如:
爲sort表更名爲category
rename table sort to category;
6.做用:修改表的字符集
alter table 表名 character set 字符集;
例如:
爲category表修改器編碼爲gbk
alter table category character set gbk;
3.1.6 插入表記錄
語法:
insert into 表 (列名1,列名2,列名3...)values (值1,值2,值3..);--向表中插入某些列 insert into 表 values (值1,值2,值3...);--向表中插入全部列
注意:
插入的數據應與字段的數據類型相同
數據的大小應該在列的長度範圍內
在values中列出的數據位置必須與被加入的排列位置相對應。
除了數值類型外,其餘的字段類型的值必須使用引號引發。
若是要插入空值,能夠不寫字段,或者插入null
對於自動增加的列在操做時,直接插入null值便可。
例如:
insert into sort (sid,sname) values('s001','電器'); insert into sort values('s002','化妝品');
3.1.7更新表記錄:
用來修改指定條件的數據,將知足條件的記錄指定列修改成指定值
語法:
update 表名 set 字段名=值,字段名=值; update 表名 set 字段名=值,字段名=值 where 條件;
注意:
列名的類型與修改的值要一致.
修改值得時候不能超過最大長度.
值若是是字符串或者日期須要加’’.
例如:
1,將指定的sname字段
中的值 修改爲 日用品
UPDATE sort SET sname='日用品';
2, 將sid爲s002的記錄中的sname改爲 日用品
UPDATE sort SET sname='日用品' WHERE sid='s002'; UPDATE sort SET sname='日用品' WHERE sid='s003';
3.1.8刪除記錄:
語法:
delete from 表名 [where 條件];
或者
truncate table 表名;
例如:
DELETE FROM sort WHERE sname='日用品';
表數據清空
DELETE FROM sort;
概念區分:
刪除表中全部記錄使用delete from 表名; 仍是用truncate table 表名;
4.1sql查詢語句
建立帳務表:
create table zhangwu( id int primary key auto_increment,-- 帳務ID name vachar(200),-- 帳務名稱 money double ,-- 金額 );
插入記錄:
INSERT INTO zhangwu(id,name,money) VALUES (1,'飲食支出',247); INSERT INTO zhangwu(id,name,money) VALUES (2,'工資收入',12345); INSERT INTO zhangwu(id,name,money) VALUES (3,'服裝支出',1000); INSERT INTO zhangwu(id,name,money) VALUES (4,'飲食支出',325); INSERT INTO zhangwu(id,name,money) VALUES (5,'債券收入',8000); INSERT INTO zhangwu(id,name,money) VALUES (6,'學習支出',8000); INSERT INTO zhangwu(id,name,money) VALUES (7,null,5000);
4.1查詢語句:
查詢指定字段信息
select 字段1,字段2,...from 表名;
例如:
select id,name from zhangwu;
查詢表中全部字段
select * from 表名; 例如: select * from zhangwu; **注意:使用"*"在練習、學習過程當中可使用,在實際開發中,不推薦使用。緣由,要查詢的字段信息不明確,若字段數量不少,會致使查詢速度很慢。**
distinct用於去除重複記錄
select distinct 字段 from 表名;
例如:
select distinct money from zhangwu;
別名查詢,使用的as關鍵字,as能夠省略的.
別名能夠給表中的字段,表設置別名。 當查詢語句複雜時,使用別名能夠極大的簡便操做。
表別名格式:
select * from 表名 as 別名;
或
select * from 表名 別名;
列別名格式:
select 字段名 as 別名 from 表名; 或 select 字段名 別名 from 表名;
例如
表別名:
select * from zhangwu as zw;
列別名:
select money as m from zhangwu; 或 select money m from zhangwu;
咱們在sql語句的操做中,能夠直接對列進行運算。
例如:將全部帳務的金額+10000元進行顯示.
select pname,price+10000 from product;
4.2條件查詢
where語句表條件過濾。知足條件操做,不知足不操做,多用於數據的查詢與修改。
格式 :select 字段 from 表名 where 條件;
while條件的種類以下:
例如:
查詢全部吃飯支出記錄
select *from zhangwu where name ='飲食支出';
查詢出金額大於1000的信息
select *from zhangwu where money >1000;
查詢出金額在2000-5000之間的帳務信息
select *from zhangwu where money >=2000 and money <=5000;
或
select * from zhanguw where money BETEWWN 2000 and 5000;
查詢金額是1000或5000或3500的商品信息
select * from zhangwu where money =1000 or money =5000 or money=3500;
或
select * from zhnagwu where money in (1000,5000,3500);
查詢出帳務名稱包含‘支出’的帳務信息。
select * from zhanguw where name like "%支出%";
查詢出帳務名稱中是沒有五個字的帳務信息SELECT * FROM zhangwu WHERE name LIKE "_____";
-- 五個下劃線
查詢出帳務名稱不爲null帳務信息
SELECT * FROM zhangwu WHERE name IS NOT NULL; SELECT * FROM zhangwu WHERE NOT (name IS NULL);
Java提供訪問數據庫規範稱爲JDBC,而生產廠商提供規範的實現類稱爲驅動。
JDBC是接口,驅動是接口的實現,沒有驅動將沒法完成數據庫鏈接,從而不能操做數據庫!每一個數據庫廠商都須要提供本身的驅動,用來鏈接本身公司的數據庫,也就是說驅動通常都由數據庫生成廠商提供
1.1JDBC開發步驟
1.註冊驅動.
2.得到鏈接.
3.得到語句執行平臺
4.執行sql語句
5.處理結果
6.釋放資源.
1.1.1導入驅動jar包
建立lib目錄,用於存放當前項目須要的全部jar包
選擇jar包,右鍵執行build path / Add to Build Path
註冊驅動
JDBC規範定義驅動接口:java.sql.Driver
MySql驅動包提供了實現類:com.mysql.jdbc.Driver
驅動包源代碼:
java.sql DriverManager工具類,提供註冊驅動的方法 registerDriver(),方法的參數是java.sql.Driver,因此咱們能夠經過以下語句進行註冊:
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
以上代碼不推薦使用,存在兩方面不足
1.硬編碼,後期不易於程序擴展和維護
2.經過閱讀源代碼可知驅動被註冊兩次。
一般開發咱們使用Class.forName()
加載一個使用字符串描述的驅動類。
若是使用Class.forName()
將類加載到內存,該類的靜態代碼將自動執行。
經過查詢com.mysql.jdbc.Driver
源碼,咱們發現Driver類「主動」將本身進行註冊