1 数据库介绍
1.1 什么是数据库
按照特殊格式存储数据的仓库,方便我们存取操作

1.2 数据库管理系统
DBMS应用软件—mysql 操作仓库(数据库)、表、记录

1.3 实体(类)和表关系
一个实体对应一张表

一个对象对应一条记录

1.4 常见数据库
java语言中:mysql、oracle、DB2

2 数据库安装和使用
2.1 安装mysql
按照文档一步步来,注意不要有中文路径

2.2 使用
windows窗口
默认开机自启动,不管它

dos命令窗口
需要超级管理员用户打开窗口

开启: net start mysql

关闭:net stop mysql

2.4 数据库连接
客户端视图工具 sqlyog

dos命令窗口
直接连接数据库【掌握】

-- 格式
mysql -u用户名 -p密码

-- 例如
mysql -uroot -proot
指定ip连接

-- 格式
mysql -h主机名(ip地址) -u用户名 -p密码

-- 例如
mysql -h127.0.0.1 -uroot -proot
指定ip全名连接

-- 格式
mysql --host=主机名 --user=用户名 --password=密码

-- 例如
mysql --host=localhost --user=root --password=root
3 SQL语句
3.1 什么是sql
structured query language

结构化查询语言,通过sql语句可以实现对记录的增删改查操作【CURD】

CURD:create 创建、update 更新、retrieve 检索(read)、delete删除

3.2 sql方言
sql是一套标准,所有的厂商都支持,各自厂商自此基础上增加特有的语句,这部分我们称为方言;

例如:分页、注释

3.3 sql语法
sql语句可以单行或多行书写,以分号结尾

sql语句忽略大小写,建议关键字大写

注释

单行 — 注释内容 # 注释内容(mysql特有)

多行 / 注释内容 /

3.4 sql分类
分类 操作对象 主要关键字
DDL:数据定义语言 数据库 表 create alter drop
DML:数据操作语言 记录 insert update delete
DQL:数据查询语言【非官方】 记录 select
TCL:事务控制语言 事务 commit rollback
DCL:数据控制语言 用户 grant revoke
3.5 DDL
操作数据库
创建数据库

直接创建

-- 格式
create database 数据库名;

-- 例如
create database ee_day02;
先判断数据库是否存在,如果不存在创建

-- 格式
create database if not exists 数据库名;

-- 例如
create database if not exists ee_day02;
创建数据库并指定字符集

-- 格式
create database 数据库名 character set 字符集;

-- 例如
create database ee_day02_1 character set gbk;
查看数据库

查看所有数据库

-- 格式
show databases;
查看建库语句

-- 格式
show create database 数据库名;

-- 例如
show create database ee_day02_1;
修改数据库

修改数据库字符集(编码集)

-- 格式
alter database 数据库名 character set 字符集;

-- 例如
alter database ee_day02_1 character set utf8;
删除数据库

直接删除数据库

-- 格式
drop database 数据库名;

-- 例如
drop database ee_day02_1;
先判断数据库是否存在,如果存在删除

-- 格式
drop database if exists 数据库名;

-- 例如
drop database if exists ee_day02_1;
使用数据库

查看当前使用的数据库

-- 格式
select database();
使用、切换数据库

-- 格式
use 数据库名;

-- 例如
use ee_day02;
操作表
创建表

-- 格式
create table 表名(
字段名 字段类型 [约束],

字段名 字段类型 [约束],
....

);

-- 格式
create table student(
id int,

name varchar(32),

birthday date
);
常见的字段类型

int 整型
double 浮点型
varchar 字符串
date 日期 格式:yyyy-MM-dd
查看表

查看所有表

-- 格式
show tables;
查看表结构

-- 格式
desc 表名;

-- 例如
desc student;
查看建表语句

-- 格式
show create table 表名;

-- 例如
show create table student;
快速创建一个表结构

-- 格式
create table 新表 like 旧表;

-- 例如
create table teacher like student;
修改表

新增字段

-- 格式
alter table 表名 add 字段名 字段类型;

-- 例如
alter table teacher add remark varchar(50);
修改字段类型

-- 格式
alter table 表名 modify 字段名 新类型;

-- 例如
alter table teacher modify remark varchar(100);
修改字段名

-- 格式
alter table 表名 change 旧字段 新字段 新类型;

-- 例如
alter table teacher change remark intro varchar(101);
删除字段

-- 格式
alter table 表名 drop 字段名;

-- 例如
alter table teacher drop intro;
修改表字符集

-- 格式
alter table 表名 character set 字符集;

-- 例如
alter table teacher character set gbk;
修改表名

-- 格式
rename table 旧表名 to 新表名;

-- 例如
rename table teacher to th;
删除表

直接删除

-- 格式
drop table 表名;

-- 例如
drop table th;
先判断表是否存在,如果存在删除

-- 格式
drop table if exists 表名;

-- 例如
drop table if exists th;
3.6 DML【重点】
新增记录
插入全部字段

-- 格式
insert into 表名 values(值1,值2...);

-- 例如
insert into student values(1,'tom','1999-12-12');
insert into student values(3,'jack',null);

注意:

除了数值类型外,其他类型插入统统使用字符串,推荐使用单引号

全能插入

-- 格式
insert into 表名(字段1,字段2...)values(值1,值2..);

-- 例如
insert into student(id,name) values(2,'jerry');
蠕虫复制

快速复制另一张表的数据

前提:二个表结构要求字段一致

-- 快速创建一个表结构 与 student 相同
create table stu like student;
-- 蠕虫复制
insert into 新表 select * from 旧表;
insert into stu select * from student;
中文乱码

dos命令窗口在大陆 GBK编码

查看数据库字符集(编码集)

show variables like '%character%';
临时修改数据库编码集

set names gbk;
修改记录
-- 格式
update 表名 set 字段名=字段值,字段名=字段值 [where 条件];

-- 例如
update stu set birthday = '1998-1-1';[不建议使用]
update stu set birthday = '1988-2-3' where id =4;
删除记录
-- 格式
delete from 表名 [where 条件];

-- 例如
delete from stu; [只能跑路了]
delete from student where name ='tom';
truncate

摧毁表,重建表,与原来表结构相同

-- 格式
truncate table 表名;

-- 例如
truncate table student;
3.7 DQl【掌握】
简单查询

准备数据

-- 创建表
create table student1(
id int,
name varchar(20),
chinese double,
english double,
math double
);
-- 插入记录
insert into student1(id,name,chinese,english,math) values(1,'tom',89,78,90);
insert into student1(id,name,chinese,english,math) values(2,'jack',67,98,56);
insert into student1(id,name,chinese,english,math) values(3,'jerry',87,78,77);
insert into student1(id,name,chinese,english,math) values(4,'lucy',88,98,90);
insert into student1(id,name,chinese,english,math) values(5,'james',82,84,77);
insert into student1(id,name,chinese,english,math) values(6,'jack',55,85,45);
insert into student1(id,name,chinese,english,math) values(7,'tom',89,65,30);

Last modification:July 29th, 2019 at 05:34 pm