Day2 数据库
课程一 数据库基本介绍
一、数据库(DB|DataBase)的基本概念
- a.意义:存储和管理数据的仓库,持久化存储数据的,实质上就是一个文件系统。
- b.特点:
1.持久化存储数据
2.方便存储和管理数据
3.使用了统一的方式操作数据库—SQL
二、MySQL数据库软件
- a.软件安装
安装成功:输入cmd命令->mysql -uroot -proot //用户名:uroot 密码:proot 也就是登陆数据库
安装失败:必须将mysql卸载干净,否则无法成功安装mysql软件。
- b.软件配置(通过这些方式操控mysql)
1.启动和关闭mysql服务 方法
说明:安装好之后,mysql会在我们windows中安装相关服务,也就是一些没有界面的应用程序。
方式一:通过点点点,进入windows服务窗口设置
方式二:cmd命令:直接启动windows服务->services.msc
方式三:cmd命令使用管理员方式打开:->net start mysql ->net stop mysql
2.登录和退出 方法
方式(登录):1. mysql -uroot -p密码
2. mysql -hip -uroot -p连接目标的密码
3. mysql --host=ip --user=root --password=连接目标的密码
方式(登出):exit quit
- d.mysql目录结构(介绍的软件的安装目录结构)
bin目录:相关的命令 可以通过cmd命令执行
data:日志文件 数据文件
include目录:c语言的头信息
lib目录:库包
share:一些错误信息
my.ini 文件:配置文件(将来如果需要修改软件的相关配置,那么就可以通过这个文件去修改)
- e.MySQL数据文件目录(C盘中)
三个文件夹(对应三个数据库|里面存放多个表)
数据库:表
表:数据
数据:—
课程二 实操
一、SQL(语言)介绍
- a.意义:结构化查询语言。其实就是定义了操作所有关系型数据库的规则。
每一种数据库操作的方式存在不一样的地方,称为方言。
- b.SQL通用语法
1.可多行书写,以分号分隔;
2.使用空格和缩进增强可读性;
3.不区分大小写,但是关键字建议大写;
4. 3种注释 单行注释:-- 注释内容 或 # 注释内容 ; 多行注释:/注释内容/
二、SQL分类(4类)
- a.第一类(DDL):操作数据库和表
详细解释:用来定义数据库对象,数据库,表,列。关键字:create drop alter 等
- b.第二类(DML):增删改表中的数据
详细解释:用来对数据库中表的数据进行增删改,关键字: insert delete update 等
- c.第三类(DQL):查询表中的数据
详细解释:查询数据库中表的记录(数据),关键字:select where 等
- d.第四类(DCL):授权设置
详细解释:用来定义数据库的访问权限和安全级别,以及创建用户。关键字: GRANT REVOKE 等
三、DDL 操作数据库、表
- a.操作数据库:CRUD
1.Create:创建
创建数据库的完整流程: create database if not exists db4 character set gbk;
2.Retrieve:查询
查询所有数据库的名称: show databases;
查询某个数据库的字符集:show create database 数据库名;
3.Update:修改
修改数据库的字符集: alter database 数据库名称 character set 字符集类型(编码类型)
4.Delete:删除
删除数据库: drop database if exists 数据库名称;
5.使用数据库
使用数据库: use 数据库名称;
查询当前正在使用的数据库名称:
select database();
- c.操作表:CRUD
1.Create:创建表
复制表的操作: create table 目标表名 like 源头表名; 示例:create table stu like student;
创建表:注意最后一列是不用加逗号的
create table 表名(
列名1 数据类型1,
列名2 数据类型2,
列名3 数据类型3,
- …
列名4 数据类型4
);
示例:create table student(
id int,
name varchar(32),
age int,
score double(4,1),
birthday date,
inset_time timestamp
);
数据类型(常用):
int:整数类型 示例:age int,
double:小数类型(参数一:小数总共最多有五位 参数二:小数点后保留 两位) 示例:score double(5,2) 表示这个小数最大是999.99
date(int a,int b):日期,只包含年月日,yyyy-MM-dd
datetime:日期时间:yyyy-MM-dd HH:mm:ss
timestamp:时间错类型 格式同datetime 注意:这个数据类型在没有被赋值时,自动赋值系统时间。
varchar(int a):字符串(参数:指定最大的字符) 示例:name varchar(6) 指定名字最长为三个字符
2.Retrieve:查询表
查询某个数据库中所有的表名称:show tables;
查询表结构: desc 表名;
3.Update:修改
修改表名: alter table 表名 rename to 新的表名;
修改表数据的字符集:alter table 表名 character set 字符集名称;
添加一列: alter table 表名 add 列名 数据类型;
修改列名称|数据类型:alter table 表名 change 列名 新列名 新数据类型;
alter table 表名 modify 列名 新数据类型;
删除列: alter table 表名 drop 列名;
4.Delete:删除
删除一个表: drop table if exists 表名;
四、SOLyog介绍
- a.方便了视觉体验,但是仍然建议手敲代码。
五、DML:增删改表中的数据
- a.添加数据:
添加数据:insert into 表名(列名1,列名2…) values(值1,值2…)
注意:
1.列名要和值的数量对应(列名数量>=值的数量);
2.要是要对表中所有值进行赋值,那么可以不写列名;
3.不确定要赋值什么的话可以赋值为null;
4.除了数字类型的值,其他都要用单引号或者双引号引起来;(日期示例:‘2017-12-28’)
- b.删除数据:
删除数据:delete from 表名[where 条件]
注意:1.不加条件时,会删除所有表中的数据,但是不推荐使用,因为有多少条记录就会执行多少次操作;
2.如果要删除所有记录(推荐使用):truncate table 表名 这个是先删除表,然后创建空表。
- c.修改数据:
修改数据:UPDATE 表名 SET 列名1=值1,列名2=值2… WHERE 条件;
注意:不加条件时,会修改所有表中的数据。
六、DQL:查询表中数据
- a.完整语法
– DQL查询数据
select – 字段列表(列名称)
from – 表名列表
where – 条件列表(对值进行筛选)
group by – 分组字段(通过列名称对应的值进行分组)
having – 分组之后条件
order by – 排序
limit – 分页限定
;
- b.查询完整的数据
格式:SELECT * FROM 表名;
- c.一些额外的语法归纳:
1.在select后边:distinct 去重复结果;AS 或者 空格 给字段重命名;
IFNULL(字段名,替换的值) 判断是否是null并且将其替换;
2.在where后边:java中的比较运算符逻辑运算符; 建议使用 and|or|is|is not(is
用于和null的比较);between 值1 and 值2 判断阈值,包括等于;
in(值1,值2…)判断相等;like(用于匹配字符串) 模糊运算
符(用到占位符 _|代表一位 和 %|代表任意长度)
- d.筛选操作示例:
– 去重复结果
select distinct address from student3;
select distinct name,address from student3;
– 计算math和english分数之和(注意null和任何数相加为null)
select name,math,english,math+english from student3;-- 去除重复 distinct
select name,math,english,math+ifnull(english,0) from student3;-- 使用函数 IFNULL(字段名,值)
select name,math 数学,english 英语,math+ifnull(english,0)as 总分 from student3; – 别名用 AS 或者 空格
– 查询年龄大于|等于|小于20岁(用到比较运算符)
select * from student3 where age>=20&&age<=30;
select * from student3 where age>=20 and age<=30;-- 推荐使用and
select * from student3 where age between 20 and 30;-- 也可以使用between
select * from student3 where age in(20,22,23);-- 使用in函数,判断或者相当于20||22||23
select * from student3 where english=null;-- 报错,null比较特殊,不能用来比较运算
select * from student3 where english is null;-- 当有值要和null做比较时,要用is关键字
select * from student3 where english is not null;-- 注意 is not中的not要放在is的后边
– 查询姓马的人(用到模糊查询)
select * from student3 where name like ‘马_’;-- 使用的时候要注意了,你可以筛选的字段的长度范围<=你like表达式后面跟的字段+占位符的长度
select * from student3 where name like ‘%德%’;-- 注意,这里的%可以长度为0,代表的长度是任意的
select * from student3 where name like ‘___’;
数据库入门语法归纳
一、DDL(date definition language)数据定义语言
- a.数据库操作
1.创建 create database if not exists 数据库名 character set 字符编码格式;
2.查询 show databases;
show create database 数据库名;
select database(); 查看当前数据库
3.修改 alter database 数据库名称 character set 字符编码格式;
4.删除 drop database if exists数据库名称;
5.使用 use 数据库名;
- b.表操作
1.创建 create table 目标表名 like 源头表名; 复制表
create table 表名(列名1 数据类型1,列名2 数据类型2,列名3 数据类型3,…列名4 数据类型4);
2.查询 show tables;
desc 表名;
3.修改 alter table 表名 change 原列名 新列名 新数据类型;
alter table 表名 modify 原列名 新列名;
alter table 表名 rename to 新表名;
alter table 表名 character set 新字符编码格式;
alter table 表名 add 列名 数据类型;
alter table 表名 drop 列名;
4.删除 drop table if exists 表名;
二、DML(date manipulation language)数据操作语言
- a.插入数据 insert into 表名(列名1,列名2…) values(值1,值2…)
- b.删除数据 delete from 表名[where 条件]
truncate table 表名;
- c.更新数据 UPDATE 表名 SET 列名1=值1,列名2=值2… WHERE 条件;
三、DQL(data query language)数据查询语言
- a.完整语法
– DQL查询数据
select – 字段列表(列名称)
from – 表名列表
where – 条件列表
group by – 分组字段(通过列名称对应的值进行分组)
having – 分组之后条件
order by – 排序
limit – 分页限定
- b.现阶段使用
select|字段 distinct|
as|
空格|
算术运算符|
ifnull(字段名,替换的值)
from|表名
where|条件(值) 逻辑运算符|
比较运算符|
and|
or|
between 值1 and 值2|
is(值|null)|
is not(值|null)|
like (_|%)|
in(values…)
四、DCL权限定义
总结理解:
一、对三大类语法的使用选择判别:DDL数据库,表属性类型设置建设根基;DML对表中数据进行
操作,属性值的内容在这里基本完成;DQL对已经处理好的表格的数据过滤分析,取出我们需
要的数据。