java学习之MySQL

什么是数据库

存储数据的仓库

为什么使用数据库

实现数据的持久化操作

1,操作文件  效率低 尤其是远程文件
2,使用数据库

常见的数据库

关系型数据库:

1,Oracle  甲骨文 Oracle 收费的 稳当,数据安全,支持的数据量大
2,Mysql  现在也属于甲骨文下的产品,目前mysql免费的,轻量级的数据库,也支持千万级的数据,集群
3,SqlServer 微软公司的产品 C# 
4,Access
....

非关系型(nosql)数据库:

redis

mongdb

数据之间存在一定的关联关系:

1,一对一

2,一对多 多对一

3,多对多

MySQL介绍

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
​
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
​
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

MySQL有哪些优点

1,具备可移植性

2,跨平台,支持多种操作系统

3, 为多种编程语言提供了 API

4, 支持多线程

5, 优化的 SQL查询算法,有效地提高查询速度

6, MySQL 是开源的,所以你不需要支付额外的费用

7, 支持多种存储引擎 5.5之前默认使用MYISAM , 5.5开始默认使用InnoDB(支持事务)

  1. 支持集群

SQL语句

结构化查询语言

在mysql中不区分大小写

人和数据库沟通的语言,开发人员给数据库下达的命令

数据定义语言DDL

建库建表等表结构操作
-- 登录命令
mysql -u用户名 -p
​
mysql -uroot -p123456

数据库操作

-- 创建数据库
-- create database 数据库名
create database mydb;
​
数据库名:不能使用关键字,不能使用全数字
非要使用关键字  `关键字`
​
-- 查看数据库
show databases;
​
-- 删除数据库(慎用)
drop database 数据库名 

用表进行数据管理

表是由行和列组成

行:数据

列: 标题名称,数据类型

在mysql中,数据类型分为三大类: 字符串,数字,时间

java:String

MySQL操作命令

数据库


创建数据库

create database 数据库名

数据库名不能使用关键字,不能使用全数字

非要使用关键字 数据库名

数据库语言不区分大小写

CHARACTER SET:指定数据库采用的字符集,如果不指定字符集,默认utf-8

COLLATE:指定数据库字符集的校对规则(常用的utf8_bin、utf8_general_ci 注意默认是utf8_general_ci)

创建一个使用utf8字符集,并带校对规则的数据库

CREATE DATABASE hsp_db03 CHARACTER SET utf8 COLLATE utf8

校对规则utf8_bin区分大小 默认utf8_general_ci 不区分大小写

查询sql,sselect 查询 * 表示所有字段

SELECT * FROM t1 WHERE NAME = ‘tom’

显示数据库语句:

SHOW DATABASES

显示数据库创建语句:

SHOW CREATE DATABASE db_name

数据库删除语句:

DROP DATABASE [IF EXISTS] db_name

备份数据库

mysqldump -u 用户名(root) -p-B数据库1 数据库2 数据库n > 文件名.sql

恢复数据库

source 文件名.sql

表创建删除修改


切换数据库:use 数据库名

CREATE TABLE table_name

(field1 datatype,field2 datatype,field3 datatype)

collate 校对规则 engine引擎

field:指定列名 datatype:指定列类型(字段类型)

character set:如不指定则为所在数据库字符集

collate:如不指定则为所在数据库校对规则、

engine:存储引擎

desc 表名字:查看表结构

drop table 表名:删除表名

MySQL列类型-数据类型


数值类型

整形:tinyint[1个字节]、smallin[2个字节]、mediumint[3个字节]、int[4个字节]、bigint[8个字节]

小数类型:float[单精度 4个字节]、double[双精度 8个字节]、decimalM,D

文本类型(字符串类型):char 0--255(固定长度文本)、varchar 0-65535(可变长度文本)、text 0~2^16-1、longtext 0~2^32-1

二进制数据类型:blob[0~2^16-1]、longblob[0~2^32-1]

日期类型:date【日期 年月日】、time【时间 时分秒】、datetime【年月日时分秒 YYYY-MM-DD HH:mm:ss】、timestamp【时间戳】、year【年】

如何定义一个无符号的整数?

create table t10(id tinyint);//默认是有符号的

create table t10(id tinyint unsigned);//无符号的

insert into t4 values(255)

bit类型(二进制显示)

1.bit(m)m范围在 1-64字节

2.添加数据 范围 比如m=8 表示一个字节 0~255

3.显示按照bit

create table t05 (num bit(8));

数值型(小数)的基本使用

decimalM,D

M默认10,D默认0

M是小数位数(精度)的总数,D是小数点(标度)后面的位数。

数据库:文本

char(长度):固定长度文本
varchar(长度):可变长度文本
​
TEXT:字符串较多的文本,如:微博新闻的内容等...

java:int long byte short double float

数据库:数字

整数:int(size)
小数:FLOAT(size,d) ,DECIMAL(size,d),double(size,d)

时间:

java:java.util.Date

数据库:时间

Date():年月日
DATETIME() 年月日,时分秒

表操作

-- 使用数据库
use mydb;
​
-- 创建表
create table 表名(
    字段名1 数据类型 约束,
    字段名2 数据类型
)
​
create table userInfo(
     userName varchar(20),
      userAge int(3),
     phoneNum char(11),
     birthDay date
   );
   
   -- 查看表数据结构
   desc userinfo
   
   -- 删除表
   drop table 表名
   
   -- 修改表名
   ALTER TABLE 原表名 RENAME 现表名

约束

使数据具备完整性,不产生垃圾数据,从而提高执行效率

主键约束:

不能为null,具有唯一性
​
扩展:主键自带主键索引,可提高查询效率
create table userInfo2(
    userId int primary key,
    userName varchar(20)
)
​
create table userInfo2(
    userId int,
    userName varchar(20),
    primary key(userId)
)
​
设置列为主键Alter table 表名 add primary key(`字段`);  --修改某列为主键
设置列为自增ALTER TABLE 表名 MODIFY 列名 INT() AUTO_INCREMENT

联合主键:

多列作为主键,多列数据组合在一起唯一

自动增长:

auto_increment   默认从1开始,以1递增

Oracle里面没有自动增长的关键字,是要单独创建序列来维护自动增长列的值

外键约束:

主外键关联

一对一

如:一个人对应一个身份证,一夫一妻

一对多

如:用户和银行卡

反过来是多对一

多对多

一个用户可以购买多个产品,一个产品可以被多个人购买

外键列就具备外键约束

外键列的值只能引用主键表中主键列已有的数据
​
添加或者修改和删除数据时会对外键列的值进行验证(完整性和有效性)
create table bank
(
    id int primary key auto_increment,
    no varchar(20),
    userId int,
    -- FOREIGN key(外键列)  REFERENCES 其他表(主键列)
     FOREIGN key(userId) REFERENCES userinfo3(userId)
)

唯一约束:

值不可重复,可以为null
create table userInfo4(
    userId int,
    userName varchar(20) UNIQUE,
    primary key(userId)
)
​
create table userInfo5(
    userId int,
    userName varchar(20),
    primary key(userId),
    UNIQUE(userName)
)

非空约束:

--  非空约束
create table userInfo6(
    userId int PRIMARY key auto_increment,
    userName varchar(20) not null
)

默认约束:

create table userInfo8(
    userId int PRIMARY key auto_increment,
    userName varchar(20) not null,
    sex char(1) default 'M',
    registerTime datetime default now()
)

检查约束 (mysql不生效,也不报错)

create table userInfo9(
    userId int PRIMARY key auto_increment,
    userName varchar(20) not null,
    age int check(age>0 and age < 100)
)

修改表结构

添加列

-- 添加列
-- ALTER TABLE table_name ADD column_name datatype
alter table userinfo9 add sex char(1) 
​
alter table userinfo9 add sex1 char(1) default 'M'
​
alter table userinfo9 add sex3 char(1) not null
​
​
alter table bank add  userId int
-- 外键约束添加
alter table bank add CONSTRAINT xxx FOREIGN key(userId) REFERENCES userInfo9(userId)
​
在student的name字段后面增加stuno字段,数据类型为int
ALTER TABLE student ADD stuno INT(11) AFTER name

修改列

-- 修改列
-- ALTER TABLE table_name
-- modify COLUMN column_name datatype
-- 有数据的情况下,修改后要兼容原数据
alter table userinfo9  modify column userName int
​
修改列名
ALTER  TABLE customers CHANGE c_contact(原名) c_phone(修改后名) VARCHAR(50)(修改后数据类型)

删除列

-- 删除列 
ALTER TABLE table_name
DROP COLUMN column_name
​
​
alter table userinfo9 drop column sex3

中文编码处理

修改my.ini

 default-character-set=utf8
 
  character-set-server=utf8

重启mysql服务

数据管理语言DML

对数据进行增、删、改操作

数据查询语言DQL

对数据进行查询操作

数据控制语言DCL

对用户管理以及权限控制
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值