目錄
精華總結
1. 資料庫的操作
1.1 顯示目前的資料庫
1.2 建立資料庫
2. 常用資料類型
2.1 數值類型
2.2 字元串類型
2.3 日期類型
3. 表的操作
3.1 檢視表
3.2 檢視表結構
3.3 建立表
3.4 删除表
4. 練習
精華總結
- 操作資料庫:
show databases ; --顯示
create database xxx ; --建立
use xxx ; --使用
drop database xxx ; --删除
- 常用資料類型:
INT:整型
DECIMAL(M, D):浮點數類型
VARCHAR(SIZE):字元串類型
TIMESTAMP:日期類型
- 操作表:
show xxx ; --檢視
create table 表名 (
字段名1 類型1 ,
字段名2 類型2 ,
) ; --建立
drop table 表名 ; --删除
1. 資料庫的操作
SQL不區分大小寫
1.1 顯示目前的資料庫
show databases ;
1.2 建立資料庫
create database 資料庫名 ;
文法:(大寫表示關鍵字,[]是可選項,CHARACTER SET: 指定資料庫采用的字元集,COLLATE: 指定資料庫字元集的校驗(比較)規則 )
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
1.3 使用資料庫
use 資料庫名 ;
1.4 删除資料庫
删除操作非常危險,在實際工作中不應該使用drop指令來删除任何資料庫!
drop database 資料庫名 ;
DROP DATABASE [IF EXISTS] db_name;
2. 常用資料類型
- 整數:int
- 小數:double,decimal
- 字元串:varchar
- 時間:datetime
2.1 數值類型
分為整型和浮點型:
資料類型 | 大小 | 說明 | 對應java類型 |
---|---|---|---|
BIT[(M)] | M指定位數,預設為1 | 二進制數,M範圍從1到64,存儲數值範圍從0到2^M-1 | 常用Boolean對應BIT,此時預設是1位,即隻能存0和1 |
TINYINT | 1位元組 | Byte | |
SMALLINT | 2位元組 | Short | |
INT | 4位元組 | Integer | |
BIGINT | 8位元組 | Long | |
FLOAT(M, D) | 4位元組 | 單精度,M指定長度,D指定小數位數。會發生精度丢失 | Float |
DOUBLE(M, D) | 8位元組 | Double | |
DECIMAL(M, D) | M / D最大值+2 | 雙精度,M指定長度,D表示小數點位數。精确數值 | BigDecimal |
NUMERIC(M, D) | M / D最大值+2 | 和DECIMAL一樣 | BigDecimal |
decimal類型:能夠更精确的表示小數,但付出很多的時間和空間的代價。
擴充資料:
數值類型可以指定為無符号(unsigned),表示不取負數。
1位元組(bytes)= 8bit。
對于整型類型的範圍:
盡量不使用unsigned,對于int類型可能存放不下的資料,int unsigned同樣可能存放不下,與其如此,還不如設計時,将int類型提升為bigint類型。
- 有符号範圍:-2^(類型位元組數*8-1)到2^(類型位元組數*8-1)-1,如int是4位元組,就是-2^31到2^31-1
- 無符号範圍:0到2^(類型位元組數*8)-1,如int就是2^32-1
2.2 字元串類型
資料類型 | 大小 | 說明 | 對應java類型 |
---|---|---|---|
VARCHAR(SIZE) | 0-65,535位元組 | 可變長度字元串 | String |
TEXT | 0-65,535位元組 | 長文本資料 | String |
MEDIUMTEXT | 0-16 777 215位元組 | 中等長度文本資料 | String |
BLOB | 0-65,535位元組 | 二進制形式的長文本資料 | byte[] |
varchar是最常用的類型,(SIZE)表示這個字元串的最大長度,機關是字元。
2.3 日期類型
資料類型 | 大小 | 說明 | 對應java類型 |
---|---|---|---|
DATETIME | 8位元組 | 範圍從1000到9999年,不會進行時區的 檢索及轉換。 | java.util.Date、 java.sql.Timestamp |
TIMESTAMP | 4位元組 | 範圍從1970到2038年,自動檢索目前時 區并進行轉換。 | java.util.Date、 java.sql.Timestamp |
3. 表的操作
需要操作資料庫中的表時,需要先使用該資料庫:
use db_test ;
3.1 檢視表
show tables ;
3.2 檢視表結構
檢視這個表的列有哪些,以及類型。即:describe(描述)
desc 表名;

3.3 建立表
文法:
列名在前,類型在後
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
);
可以使用comment增加字段說明。示例:
create table stu_test(
id int,
name varchar(20) comment '姓名',
password varchar(50) comment '密碼',
age int,
sex varchar(1),
birthday timestamp,
amout decimal(13, 2),
resume text
);
3.4 删除表
drop table 表名 ;
drop table if exists stu_test;
4. 練習
有一個商店的資料,記錄客戶及購物情況,有以下三個表組成:
- 商品goods(商品編号goods_id,商品名goods_name, 單價unitprice, 商品類别category, 供應商provider)
- 客戶customer(客戶号customer_id,姓名name,住址address,郵箱email,性别sex,身份證 card_id)
- 購買purchase(購買訂單号order_id,客戶号customer_id,商品号goods_id,購買數量nums)
SQL:
--建立資料庫
create database if not exists java101
default character set utf8;
--選擇資料庫
use java101;
--建立資料庫表
--商品
create table if not exists goods(
good_id int,
goods_name varchar(32),
unitprice int,
category varchar(12),
provider varchar(64)
);
--客戶
create table if not exists customer(
customer_id int,
name varchar(20),
address varchar(50),
email varchar(20),
sex varchar(5),
card_id varchar(20)
);
--購買
create table if not exists purchase(
order_id int,
customer_id int,
goods_id int,
nums int
);