一.准备环境
1.首先进行MySQL环境配置
具体大家可以看下面这篇文章,进行MySQL的配置
[]http://t.csdn.cn/XjNYA
2.使用idea进行MySQL的连接
因为博主喜欢使用idea进行数据库数据的编写,所以MySQL是使用idea进行操作的,不过这篇文章不涉及JDBC连接的问题。
这个是MySQL连接java所需要的jar包的下载指南。
[http://t.csdn.cn/WNLRX]
1.导入jar包
首先进入File下的项目结构下,然后进行lib的导入。
进行jar包的导入后,就可以进行下一步
点击侧边框的database,然后再点加号,因为博主学习的MySQL所以选择加入MySQL。
首先需要去MySQL设置我们的用户名字和密码,然后才能进行下面的操作。如果已经设置好账号和密码以后,填入用户和密码,然后点击下面的TestConnection进行连接测试,当它通过连接以后就可以点击Apply,然后就可以在idea开始我们的MySQL开心学习了。
二、准备实验表
博主的MySQL学习是使用《MySQL必知必会》进行学习的。所以在这里创建的表是在《MySQL必知必会》的附录中的,大家如果有这本书也可以根据书中所给出的表进行创建。
1.如何进行表的创建
创建表的前提是有数据库,所以第一步需要进行选定数据库,如何进行数据库的选定呢?
use [数据库库名]
-- 这边我需要使用db1数据库的话
use db1
这样写的就是接下来的sql语句就是操纵该数据库。
-- 创造表
create table 表名(
字段名称 数据类型,
字段名称 数据类型
)
这里值得注意的是,每一个字段中需要进行逗号进行间隔,而最后一个字段不需要进行逗号添加。
那么这里字段名称的规范写法就是需要通过表名加下划线再加属性值
2.数据类型
因为上面讲到表的创建,表创建必不可缺的一个问题就是命名的字段的数据类型是什么,应该如何进行规定?何种数据类型存储何种数据。接下来我会使用表格的形式进行数据类型的讲解。
1.串数据类型
数据类型 | 说明 |
---|---|
CHAR | 1-255个字符的定长字符串。其长度必须在创建时指定,否则MySQL假定其为CHAR(1) |
ENUM | 接收最多64k个串组成的一个预定义集合的某一个串 |
LONGTEXT | 与TEXT相同,但最大长度为4GB |
MEIUMTEXT | 与TEXT相同,但最大长度为16K |
SET | 接收最多64k个串组成的一个预定义集合的零个或者多个串 |
TEXT | 最大长度为64K的变长文本 |
TINYTEXT | 与TEXT相同,但是最大长度为255字节 |
VARCHAR | 长度可变,最多不超过255字节。如果在创建时指定为VARCHAR(n),则可存储0到n个字符的变长串(其中n <= 255) |
2.数值数据类型
数据类型 | 说明 |
---|---|
BIT | 位字段,1~64位 |
BIGINT | 整数型,支持-9223372036854775808~9223372036854775807的数 |
BOOLEAN(BOOL) | 布尔标志,主要用于开关标志精度可变的浮点型 |
DECIMAL | 精度可变的浮点型 |
DOUBLE | 双精度浮点型 |
FLOAT | 单精度浮点型 |
INT(INTEGER) | 整数值,支持-2147483648~2147483647的数 |
MEDIUMINT | 整数值,支持-2147483648~2147483647的数 |
REAL | 4字节的浮点数 |
SMALLINT | 整数值,支持-32768~32767的数 |
TINYINT | 整数值,支持-128~127的数 |
3.日期和时间数据类型
数据类型 | 说明 |
---|---|
DATE | 表示1000-01-01~999-12-31的日期,格式为YYYY-MM-DD |
DATETIME | DATEH和TIMR的组合 |
TIMESTAMP | 公共和DATETIMR相同(范围较小) |
TIME | 格式为HH:MM:SS |
YEAR | 用2位数据表示,范围是70(1970年)69(2069年)的,用4位数字表示,范围1901年2155年 |
4.二进制数据类型
数据类型 | 说明 |
---|---|
BLOB | 最大长度位64KB |
MEDIUMBLOB | 最大长度16MB |
LONGBLOB | 最大长度为4GB |
TINYBLOB | 最大长度为255字节 |
3.创建实验表
前面讲了怎么多,那么下面我们就要看看《MySQL必知必会》的创建表的操作。去感受作者是如何进行表的创建的,然后感受规范的命名和如何进行外键约束和主键的创建。
官方网址在这里如有需要的小伙伴可以点击这里下载相关文件
1.创建顾客表
# Create customers table
########################
CREATE TABLE customers
(
cust_id int NOT NULL AUTO_INCREMENT,
cust_name char(50) NOT NULL ,
cust_address char(50) NULL ,
cust_city char(50) NULL ,
cust_state char(5) NULL ,
cust_zip char(10) NULL ,
cust_country char(50) NULL ,
cust_contact char(50) NULL ,
cust_email char(255) NULL ,
PRIMARY KEY (cust_id)
) ENGINE=InnoDB;
2.创建订单细节表
#########################
# Create orderitems table
#########################
CREATE TABLE orderitems
(
order_num int NOT NULL ,
order_item int NOT NULL ,
prod_id char(10) NOT NULL ,
quantity int NOT NULL ,
item_price decimal(8,2) NOT NULL ,
PRIMARY KEY (order_num, order_item)
) ENGINE=InnoDB;
3.创建订单表
# Create orders table
#####################
CREATE TABLE orders
(
order_num int NOT NULL AUTO_INCREMENT,
order_date datetime NOT NULL ,
cust_id int NOT NULL ,
PRIMARY KEY (order_num)
) ENGINE=InnoDB;
4.创建产品表
CREATE TABLE productnotes
(
note_id int NOT NULL AUTO_INCREMENT,
prod_id char(10) NOT NULL,
note_date datetime NOT NULL,
note_text text NULL ,
PRIMARY KEY(note_id),
FULLTEXT(note_text)
) ENGINE=MyISAM;
5.创建供货商表
CREATE TABLE vendors
(
vend_id int NOT NULL AUTO_INCREMENT,
vend_name char(50) NOT NULL ,
vend_address char(50) NULL ,
vend_city char(50) NULL ,
vend_state char(5) NULL ,
vend_zip char(10) NULL ,
vend_country char(50) NULL ,
PRIMARY KEY (vend_id)
) ENGINE=InnoDB;
6.创建外键
# Define foreign keys
#####################
ALTER TABLE orderitems ADD CONSTRAINT fk_orderitems_orders FOREIGN KEY (order_num) REFERENCES orders (order_num);
ALTER TABLE orderitems ADD CONSTRAINT fk_orderitems_products FOREIGN KEY (prod_id) REFERENCES products (prod_id);
ALTER TABLE orders ADD CONSTRAINT fk_orders_customers FOREIGN KEY (cust_id) REFERENCES customers (cust_id);
ALTER TABLE products ADD CONSTRAINT fk_products_vendors FOREIGN KEY (vend_id) REFERENCES vendors (vend_id);
7.解析上面sql语句
1.not null | null 的使用
是对表中字段值是否可以进行缺省进行补充,默认情况下会使用null,这个缺省值对于表中重要的数据很重要,在正常业务情况下,一定是希望用户为我们提供必要且重要信息,使用not null可以要求用户给我们提供必要信息之后,再提供下一步的服务。总而言之,not null的使用在收集必要信息情况下非常的必要,具体对应的sql语句为
CREATE TABLE 表名(
字段名称 数据类型 NULL | NOT NULL
)
注意:sql语句是不区分的大小写的,但是在开发中通常会将关键词使用大写进行表示
2.主键的使用
在上面创建表的语句之中,可以观察到在创建表的结尾中会有这样一条语句
PRIMARY KEY (字段名,字段名....)
这就是指定某个字段为表的主键的操作了,主键的作用是唯一性标识。不过主键可以设置多个字段名称,当组合起来的时候,这种时候就要求多个字段名称组合必须唯一。
3.AUTO_INCREMENT(自增)
使用AUTO_INCREMENT的时候,对应的字段最好是唯一且没有特殊含义,这样就实现自动编号,且相对应的编号中无冲突,可以当作为无意义的主键进行使用。
4.指定默认值
当某一个字段被指定没有值的时候,使用指定默认值的时候,进行数据插入时候会默认指定该字段的值为创建表时候的默认值。具体的sql语句如下
CREATE TABLE 表名(
字段名 数据类型 DEFAULT 默认值
)
5.引擎
可以看到创建表的最后会加一句ENGINE = InnoB 作为创建表的结束语句,这就是默认的引擎类型。
引擎主要的作用是什么呢?引擎主要主要是在进行数据库处理中,引擎所在内部处理你的请求。但是这里引擎类型不准备展开来讲,因为没有具体情况不能感受每一种引擎在处理数据库操作的差别。
6.创建外键
这里给出实例sql代码
AlTER TABLE 表名
ADD CONSTRAINT fk_从表名称_主表名称 FOREIGN KRY(字段名)[从表]
REFERENCES 主表名(字段名)
外键就是对两张具有强联系的表进行一个字段数据的关联,可以让一张表记录的数据减少冗余,保证数据的完整性和一致性。
注意:进行外键创建时候要先确保表存在,主表有该字段,从表也有其字段,而且其的数据类型应该一致,不然外键就不可以被创建
总结
本次学习日记主要讲述了
- 使用idea进行MySQL数据库的连接
- 准备相关实验表
- 学习MySQL中的数据类型
- 如何进行指定数据库的使用、如何进行表的创建、主键的使用、自增加、NULL | NOT NULL的使用等…