Java 之 mysql 基础

数据库

数据库(DataBase DB)
长期保存在计算机的存储设备上的文件
按照一定规则组织起来 被用户应用的集合

数据库管理系统
使用和维护数据库的软件
保证数据库的安全性和完整性
用户通过该系统范文数据库中的数据

数据库中一行记录与对象之间的关系。
列(column):字段
行(row):一条记录(实体)

数据库管理系统通过SQL结构化查询语言)来定义和操作数据
SQL:Structure Query Language。(结构化查询语言)


数据库厂商都支持SQL标准语言(普通话)
数据库厂商在标准的基础上做出的扩展部分(方言)

* 注意:sql语句以;结尾

常见数据库

常见数据库
MYSQL   :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。
Oracle  :收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
DB2 :IBM公司的数据库产品,收费的。常应用在银行系统中.
SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。
SQLite  : 嵌入式的小型数据库,应用在手机端。
DDL(Data Definition Language)数据定义语言
数据定义语言,用来定义数据库对象:库、表、列等; 
CREATEALTERDROP
DML(Data Manipulation Language)数据库操作语句
用来定义数据库  记录(数据);        
INSERTUPDATEDELETE
DQL(Data Query Language)数据库查询语言(简单)
数据查询语言,用来查询记录(数据)

安装 mysql

下载地址
这里写图片描述

Windows 下:
安装MySQL服务 
    以管理员身份运行cmd,进入D:\mysql\mysql-5.7.21-winx64\bin目录下;
    执行命令:mysqld install
    出现提示“service successfully installed”,即为安装成功
创建data文件,同样在该目录下执行命令:mysqld–initialize-insecure –user=mysql,此时D:\mysql\mysql-5.7.21-winx64目录下会出现data文件夹,并且建好默认数据库,登录的用户名为root,密码为空。
启动MySQL服务,输入命令:net start mysql 。
停止MySQL服务,输入命令: net stop mysql 。
登录进入数据库,输入命令:mysql -u root –p,密码是空。
进入mysql数据库:use mysql;
修改密码:set password=password('新密码');

初始化mysql数据库,输入“mysqld --initialize --user=root --console”。

my.ini 文件配置:
[mysql] 
# 设置mysql客户端默认字符集 
default-character-set=utf8 
[mysqld] 
skip-name-resolve 
skip-grant-tables 
#设置3306端口 
port = 3306 
# 设置mysql的安装目录 
basedir=D:\mysql\mysql-5.7.21-winx64 
# 设置mysql数据库的数据的存放目录 
datadir=D:\mysql\mysql-5.7.21-winx64\data 
# 允许最大连接数 
max_connections=200 
# 服务端使用的字符集默认为8比特编码的latin1字符集 
character-set-server=utf8 
# 创建新表时将使用的默认存储引擎 
default-storage-engine=INNODB
mac 下安装步骤
1.保存安装中的 数据库初始密码
2.配置环境变量 
查看隐藏文件 open .bash_profile
创建隐藏文件 touch .bash_profile(没有这个文件 再创建新的)
添加环境变量 export PATH=$PATH:/usr/local/mysql/bin/
注意:要重启mysql服务
3.打开终端 
进去mysql数据库命令 mysql -uroot -p
输入保存好的初始密码(别截图 复制粘贴)
4.进入数据库 修改密码
set password=password('新密码');
注意:sql语句中 只有单引号并且是 英文状态下的单引号

基础语法

DDL数据库操作库 表 列
1.创建数据库
create database 数据库名;
查看一下创建的数据(默认字符集UTF8)
show create database 数据库名;
指定数据库字符集
Create database 数据库名 character set gbk;

查看数据库支持的字符集
show character set;

设置对应的校验规则
Create database 数据库名 character set gbk COLLATE gbk_chinese_ci;
2.查询数据库
查看当前数据库服务器中的所有数据库
show databases;
查看前面创建的mydb2数据库的定义信息
Show  create  database mydb2;

3.修改数据库(alter)
修改字符集为utf8
alter database 库名 character set 要修改的编码格式;

4.删除数据库
删除前面创建的mydb3数据库
Drop database mydb3;

5.其他:
查看当前使用的数据库
select database();
切换数据库
use mydb2;
6.退出数据库
quit;

操作数据库中的数据表
* 语法:
create table 表名(
        字段1 字段类型,
        字段2 字段类型,
        ...
        字段n 字段类型
        );

常用数据类型

int:整型
double:浮点型,例如double(6,2)表示最多5位,其中必须有2位小数,即最大值为999.99char:固定长度字符串类型; char(10)  10个字节 'wanglong_ _'
varchar:可变长度字符串类型;varchar(10) 'w'
text:字符串类型; 大数据文本 最大4M
blob:字节类型;保存音频 保存图片
date:日期类型,格式为:yyyy-MM-dd;
Time:   时间类型  mm:hh:ss
创建表
mysql> create table emp(
    -> id int,
    -> name varchar(50),
    -> gender varchar(10),
    -> birthday date,
    -> Entry_date date,
    -> job varchar(100),
    -> Salary double,
    -> resume text
    -> );

这里写图片描述
这里写图片描述

修改表 
添加一列 image blob(字节类型)
ALTER TABLE 表名 ADD image(字段) blob(字段类型);
修改job列,使其长度为60
ALTER TABLE emp MODIFY job varchar(60);
删除image列,一次只能删一列
ALTER TABLE emp DROP image;
表名改为user
RENAME TABLE emp TO user;
查看表格的创建细节
SHOW CREATE TABLE user;
列名name修改为username
ALTER TABLE user CHANGE 原字段名 新字段名 varchar(100);

DML 操作(操作表数据)

insert(插入)
语法: INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...);
注意:列名与列值的类型、个数、顺序要一一对应。
可以把列名当做java中的形参,把列值当做实参。
值不要超出列定义的长度。
如果插入空值,请使用null
插入的日期和字符一样,都使用引号括起来。
create table emp1(
id int,
name varchar(100),
gender varchar(10),
birthday date,
salary float(10,2),
entry_date date,
resume text
);

这里写图片描述

INSERT INTO emp1(id,name,gender,birthday,salary,entry_date,resume)
VALUES(1,'name1','female','1990-5-10',10000,'2015-5-5-','good girl');

INSERT INTO emp1(id,name,gender,birthday,salary,entry_date,resume)
VALUES(2,'lisi','male','1995-5-10',10000,'2015-5-5','good boy');

INSERT INTO emp1(id,name,gender,birthday,salary,entry_date,resume)
VALUES(3,'wangwu','male','1995-5-10',10000,'2015-5-5','good boy');

这里写图片描述

批量插入:
INSERT INTO emp1 VALUES
(4,'zs','m','2015-09-01',10000,'2015-09-01',NULL),
(5,'li','m','2015-09-01',10000,'2015-09-01',NULL),
(6,'ww','m','2015-09-01',10000,'2015-09-01',NULL);

这里写图片描述

修改操作(update)
语法:UPDATE 表名 SET 列名1=列值1,列名2=列值2 。。。 WHERE 列名=值
将所有员工薪水修改为5000元。
UPDATE emp1 SET salary=5000;

这里写图片描述

将姓名为’zs’的员工薪水修改为3000元。
UPDATE emp1 SET salary=3000 WHERE name='zs';

这里写图片描述

将姓名为’zs’的员工薪水修改为4000元,gender改为f。
UPDATE emp1 SET salary=4000,gender='f' WHERE name='zs';

这里写图片描述

将wu的薪水在原有基础上增加1000元。
UPDATE emp SET salary=salary+1000 WHERE gender='male';

这里写图片描述

删除操作(Delete)
语法 : DELETE FROM 表名 【WHERE 列名=值】
删除表中名称为’wanglong’的记录。
DELETE FROM emp1 WHERE name='zs';

这里写图片描述

删除表中所有记录。
DELETE FROM emp1;

这里写图片描述

DQL查询操作

DQL数据查询语言
数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。
查询返回的结果集是一张虚拟表。

查询关键字:SELECT 
语法: SELECT 列名1,列名2 FROM表名 (查询多列用逗号隔开)
查询所有列 使用: *(星号)
- 创建表
CREATE TABLE Student (
    id INT,
    NAME VARCHAR (255),
    age INT,
    gender VARCHAR (255)
);

这里写图片描述

-- 插入数据
INSERT INTO Student
VALUES
    (1, '学生1', 20, '男'),
    (2, '学生2', 21, '女'),
    (3, '学生3', 22, '男'),
    (4, '学生4', 23, '女'),
    (5, '学生5', 24, '男');

这里写图片描述

-- 按字段查询
SELECT
    id,
    NAME
FROM
    student;

这里写图片描述

-- 查询年龄大于20岁的(查询结果只显示年龄和姓名)
SELECT
    age,
    NAME
FROM
    Student
WHERE
    age > 20;

这里写图片描述

-- 查询性别为女,并且年龄21的记录
SELECT
    *
FROM
    Student
WHERE
    age = 21
AND gender = '女';

这里写图片描述

-- 查询学号为3,或者姓名为学生3的记录
SELECT
    *
FROM
    Student
WHERE
    id = 3
OR NAME = '学生3';

这里写图片描述

-- 查询学号为1,2,3的记录
SELECT
    *
FROM
    Student
WHERE
    id IN (1, 2, 3);

这里写图片描述

-- 查询学号不是1,2,3的记录
SELECT
    *
FROM
    Student
WHERE
    id NOT IN (1, 2, 3);

这里写图片描述

-- 查询年龄不为null的记录
SELECT
    *
FROM
    Student
WHERE
    age IS NOT NULL;

这里写图片描述

-- 查询年龄在10到40之间的学生记录
SELECT
    *
FROM
    Student
WHERE
    age > 10
AND age < 40;

这里写图片描述

-- 查询性别非男的学生记录
SELECT
    *
FROM
    Student
WHERE
    gender != '男';

这里写图片描述

-- 查询姓名不为null的学生记录
SELECT
    *
FROM
    Student
WHERE
    NAME IS NOT NULL;

这里写图片描述

-- 过滤重复数据
-- 把 id 为2的 age 修改成22岁
UPDATE Student
SET age = 22
WHERE
    id = 2;

SELECT DISTINCT
    age
FROM
    Student;

这里写图片描述

-- 增加字段薪金和佣金, 使用 int 类型, 并插入数据
ALTER TABLE Student ADD salary INT;
ALTER TABLE Student ADD commission INT;
UPDATE student
SET salary = 1000,
commission = 1000;

这里写图片描述

-- 查询薪金和佣金之和, 查询的结果相当于增加了一个新的字段
-- (不会对原表进行修改), 关键字 as 给字段起别名, 该关键字可以省略
SELECT
    *, salary + commission AS total
FROM
    Student;    

这里写图片描述
http://blog.csdn.net/huzongnan/article/list

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值