7.6上课笔记(数据库的相关知识)

一、数据库介绍
1、什么是数据库?
定义:数据库是存放数据的电子仓库。
sql脚本:存放数据
(1)数据库还原数据:
格式:mysql -u root -p 新库< 路径/sql备份的数据
如:mysql -u root -p kk</home/hh/20170502.sql
(2)mysqldump -u root -p 原库>/路径/存放的文件名
如:mysqldump -u root -p kk>/home/hh/hj81.sql
2、是以某种方式存储百万条,上亿条数据,提供多个用户访问共享。
3、每个数据有一个或多个api用于创建,访问,管理和复制所保存的数据。
如:创建新用户接口(api)数据库==保存数据
4、系统中很多动态数据都存储在数据库中,需要通过访问数据库才能显示;
二、数据库的类型
1、关系型数据库
定义:数据库中表与表之间存在某种关系,数据存储在不同的表中
常见的关系型数据库:
(1)db2 IBM 公司
(2)oracle oracle 公司
(3)mysql oracle公司收购 (我们学习的mysql)
(4)sql server
特点:
a、安全
b、保持数据的一致性
c、实现对表与表进行复杂的数据查询
2、非关系型数据库
定义:通常数据是以对象的形式存储在数据库中
常见的非关系性数据库:缓存数据
1、hbase (列模型)
2、redis (键值对存储) 重点,
3、mongodb (文档类型)
特点:
a、效率高
b、容易扩展
c、使用更加灵活

二、mysql介绍定
1、mysql的定义
mysql是关系型数据库管理系统,我们常说的xxx数据库就是指xx数据库管理系统。
2、mysq数据库是有瑞典mysql db公司开发,目前属于oracle 公司,
3、在web应用方面(bs架构上),mysql是最好的关系型数据管理系统
4、特点:
a.体积小
b.开源,免费
c、使用c++编写
d、支持多系统
e、支持多引擎
f、msyql与其他工具组合可以搭建免费的网站系统
lamj=linux+apache+mysql+java 多有米
lnmp=linux+nginx+mysql+php 论坛

5、mysql的应用结构:
(1)单点数据库:使用于小规模应用(我们现在学的)
(2)复制:适用于中小规模的应用
(3)数据库集群,适合大规模的应用 (目前集群)
比如:mgr集群,三主三从,一主三从;

6、数据库中术语:
(1)数据库
(2)数据表
(3)列
(4)行
(5)值
(6)字段名
(7)字符类型
(8)冗余
(9)主键
(10)外键
(11)视图
(12)索引
(13)单表
(14)多表
(15)存储

三、数据库的安装
1、数据库mysql 可以在linux上安装可以在windows上安装
我们目前讲解在linux上安装
2、安装步骤
(1)打开虚拟机
(2)rpm -qa| grep 服务名称 查看服务是否安装
如:rpm -qa|grep mysql
(3)删除msyql包
a、yum remove mysql * 在线删除msyql所有的包
b、rpm -e --nodeps 包名 删除具体的包
如:rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.i686
用rpm -qa|grep mysql 查询没有删除的包
mysql-libs-5.1.73-8.el6_8.i686
(4)安装mysql的客户端
a、yum install mysql 安装mysql的客户端
b、yum install mysql-server 安装mysql的服务端
(5)启动数据库
service mysqld status 查看数据库的状态
service mysqld stop 关闭数据库
service mysqld start 开启数据库
service mysqld restart 开启数据库
(6)设置mysql的密码:
mysqladmin -u root password "123456"
(7)进入数据库
mysql -u root -p 》敲回车输入“123456”(密码不显示)
进入到mysql的界面》mysql>
进入到linux的界面
》root@localhost
(8)show databases; 显示所有数据库
(9)创建一个仓库
create database 库名;
如:create database sjk1
(10)使用指定的仓库:use 库名
use sjk1
(11)显示所有的表 :show tables ;
(12)建表:
create table 表名( 字段名1 字符类型(字符长度),字段名2 字符类型(字符长度))
如:
create table dd (id int(10),name varchar(20));
(13)授权:
grant all privileges on . to root@"%" identified by "123456";
授予 所有 权限
第一个 * 代表所有的库
第二个* 代表所有的表
root 用户
"%" 所有用户
identified by 设置密码
刷新权限:
flush privileges ;
(14)退出数据库
ctrl+z 或crtl+c

四、navicat 安装
1、下载navicat包
2、解压安装包
3、打开解压后的安装包
4、找到navicat.exe文件
5、点击注册:
6.点击新建:输入名称,ip、账号名、密码
7、链接成功,选择仓库
8、点击仓库名称
9、点击查询,
10、打开查询窗口,输入mysql命令
链接不上:
解决问题:
1、关闭防火墙 service iptables stop (在linux中操作)
2、 开启数据库 service mysqld start (在linux中操作)
3、授权(在mysql中操作)
grant all privileges on . to root@'%' identified by "123456"
4、授权以后要刷新
flush privileges (在mysql中操作)
5、检查连接数据库的参数的正确性如:ip地址,密码,用户名等
6、密码设置:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YSE)
(1)也是修改密码
解决办法
第一步:关闭mysql
第二步:mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
mysql -u root mysql
第三步: UPDATE user SET Password=PASSWORD('123456') where USER='root';
第四步: FLUSH PRIVILEGES;

(在linux中操作)
一、数据库的使用
1、mysql -u root -p 》回车》密码 进入mysql界面
2、show databases 显示所有的仓库
3、create database 库名 创建仓库
4、use 使用库
5、show tables ;显示所有的表
6、创建表
create tables 表名(字段名1 字符类型(字符长度),字段名2 字符类型(字符长度));
7、desc 查看表机构
8、表中插入数据
insert into 表名values (值1,值2)
如:insert into jj values (1,”zs“)
9、查看数据:
select * form 表名
如:select * from jj;
二、建表
(1)建表格式:create tables 表名(字段名1 字符类型(字符长度),字段名2 字符类型(字符长度));
(2)建表的字符类型:
1、数值类型
a、数值类型 int
b、大整数值 、float 浮点数
2、字符类型:
char 定长字符串 0-255字节
varchar 变长字符 0-65535字节
3、时间类型
data:YYYY-MM-DD 日期值 年月日
time: HH--MM--SS 时分秒
datatime:YYYY-MM-DD HH--MM--SS 年月日,时分秒
year :YYYY 年

3、简表的约束
(1)primary key 主键索引
特点:一个表中只有一个主键,不能为空,唯一
(2)unique 唯一索引
特点:一个表中可以有多个主键,能为空,唯一
(3)default 默认值
特点:默认输出,没有值
(4)not null 非空
特点:字段不能为空
(5)auto_increment 字增长,(一般情况是和主键同时使用)

案例:
create table b1(id int(10) PRIMARY key auto_increment,no int(10) not NULL ,name char(20),
sfz int(20) UNIQUE ,age int(10) DEFAULT 18,cj int(20))DEFAULT CHARSET=utf8 ;
插入语句:INSERT INTO b1 VALUES(1,1,"a1","36788899999",20,80)

一、数据库的使用
1、mysql -u root -p 》回车》密码 进入mysql界面
2、show databases 显示所有的仓库
3、create database 库名 创建仓库
4、use 使用库
5、show tables ;显示所有的表
6、创建表
create tables 表名(字段名1 字符类型(字符长度),字段名2 字符类型(字符长度));
7、desc 查看表机构
8、表中插入数据
insert into 表名values (值1,值2)
如:insert into jj values (1,”zs“)
9、查看数据:
select * form 表名
如:select * from jj;
二、建表
(1)建表格式:create tables 表名(字段名1 字符类型(字符长度),字段名2 字符类型(字符长度));
(2)建表的字符类型:
1、数值类型
a、数值类型 int
b、大整数值 、float 浮点数
2、字符类型:
char 定长字符串 0-255字节
varchar 变长字符 0-65535字节
3、时间类型
data:YYYY-MM-DD 日期值 年月日
time: HH--MM--SS 时分秒
datatime:YYYY-MM-DD HH--MM--SS 年月日,时分秒
year :YYYY 年

3、简表的约束
(1)primary key 主键索引
特点:一个表中只有一个主键,不能为空,唯一
(2)unique 唯一索引
特点:一个表中可以有多个主键,能为空,唯一
(3)default 默认值
特点:默认输出,没有值
(4)not null 非空
特点:字段不能为空
(5)auto_increment 字增长,(一般情况是和主键同时使用)
(6)解决字符编码格式:DEFAULT CHARSET=utf8 ;
案例:
create table b1(id int(10) PRIMARY key auto_increment,no int(10) not NULL ,name char(20),
sfz int(20) UNIQUE ,age int(10) DEFAULT 18,cj int(20))DEFAULT CHARSET=utf8 ;
插入语句:INSERT INTO b1 VALUES(1,1,"a1","36788899999",20,80)
三、对表格操作
(1)add 添加字段(默认在最后一位)
格式:ALTER table 表名 add 字段名 字符类型(字符长度);
如:ALTER table b1 add sg int(10);
(2)channge 修改字段
格式:alter table 表名 change 源字段 新字段 字符类型(字符长度);
如:alter table b1 change cj fenshu int(20);
(3)drop 删除字段
格式:ALTER table 表名 drop 存在字段 ;
如:ALTER table b1 drop sg ;
(4)rename 修改表名
格式:
ALTER table 表名 rename 新表名 ;
如:
ALTER table b1 rename b2 ;
(5)modify ..... after 将字段移动到某个字段后
格式:ALTER table 表名 MODIFY 移动字段 字符类型(字符长度) after 指定字段之后 ;
如:ALTER table b2 MODIFY age int(10) after id ;
(6)firsh 添加字段到第一位
格式:ALTER table 表名 add 字段名 字符类型(字符长度) first;
如:ALTER table b2 add bz varchar(20) first;

四、增删改查
(一)新增:insert into
(1)插入全部字段数据
格式:insert into 表名 values (值1,值2)
如:INSERT into jj VALUES(2,"ds")
(2)插入指定字段数据
格式:insert into 表名(字段名1) values (值1)
如:INSERT into jj(name) VALUES("kk")

(二)删除

(1)DELETE FROM 删除数据
格式:DELETE FROM 表 名 ; 删除所有的数据
如:DELETE FROM jj ;
(2)DELETE FROM 表 名 where 字段名=条件; 删除指定数据
如:DELETE FROM jj where id =2;
(3)dorp 删除表和数据
格式:drop table 表名;
如:drop table jj ;

(4)drop database 库名; 删除仓库
如:drop database h1 ;

(5)trucate 表名 快速删除
如:truncate student2;
drop>truncate>delete from

(三)查
建表语句:
create table student2(
id int primary key ,
name char(20),
sex char(10),
age int(3),
mobile char(20),
class char(10),
english int(10),
chinese int(10),
math int(10))engine=innodb default charset=utf8;
insert into student2 values
(1,'小红','女',23,'13813828824','1719',77,88,98),
(2,'小明','男',23,'13713713711','1720',56,66,55),
(3,'小李','男',23,'15915913911','1719',78,64,87),
(4,'小张','男',23,'15915913912','1720',77,76,77),
(5,'小白','女',24,'15915913913','1719',90,89,98),
(6,'小陈','女',19,'15915913914','1719',84,100,81),
(7,'小钱','女',20,'15915913915',null,45,99,93);

1、select
(1)查询所有内容
格式:select * from 表名 ;
如:select * from student2 ;
(2)查询部分字段 ,分割字段(,逗号)
格式:select 字段名1,字段名2 from 表名 ;
如:select name ,age from student2 ;
(3)查询字段可以用as 别名显示
格式:select 字段名1 as "别名", 字段名 "别名" from 表名 ;
如:select name as "姓名",age "年龄" from student2 ;

(4) where +条件

条件1:比较运运算符:>,<,>=,<=,!=,<>,=
案例:
select * from student2 where id >3; # 大于
select * from student2 where id ❤️; #小于
select * from student2 where id =3; #等于
select * from student2 where id !=3; #不等于
select * from student2 where id <>3; #不等于
select * from student2 where id >=3; #大于等于
select * from student2 where id <=3; #小于等于

条件2: and 、or、between ...and ,in, not in,is not null ,is null

and 同时满足条件

select * from student2 where sex="男" and id>3 ;

or 满足其中一个条件就可以

select * from student2 where sex="男" or id>4 ;

在什么范围之间 ,包含开始值和结束值

select * from student2 where id BETWEEN 3 and 6;

in在一组数中选择匹配的数据

select * from student2 where id in(1,4,9,5)

not in不在一组数中选择匹配的数据

select * from student2 where id not in(1,4,9,5)
-- is null 为空
select * from student2 where class is null;
-- is not null
select * from student2 where class is not null;

2、ordery by 排序
(1)升序 从小到大(asc) asc可省略
select * from student2 ORDER BY chinese asc ; #升序

(2)降序 从大到小(desc) desc不可省略
select * from student2 ORDER BY chinese desc ; #降序
(3)二次排序
格式:
如:select * from student2 ORDER BY english desc ,chinese asc; #降序

3、lilke 模糊匹配查询
% 通配符
_ 下划线表示一个字符

匹配某字符7开头的数据

select * from student2 where english like "7%" ;

匹配某字符7结尾的数据

select * from student2 where english like "%7" ;

匹配包含字符7的数据

select * from student2 where english like "%7%" ;

匹配包含_结尾的数据

-- select * from student2 where name like "____" ;

4、limit (索引位,步长) 显示指定的数据行数,限制
根据索引位置来取值,从0开始,一个表的第一行的索引就是0,第二行就是1
如:
select * from student2 LIMIT 2; #2表示2行,默认索引0开始
select * from student2 LIMIT 3,2; #3是索引,表示第4行,2 表示显示2行
select * from student2 ORDER BY chinese desc LIMIT 0,3 ; #排序再取前三行

5、聚合函数
sum、avg 、count、max、min、distinct

sum 求和

select sum(math) from student2 #统计总的分数

COUNT统计

select count(math) from student2 #统计表中的数据一共多少条

avg 平均值

select avg(math) from student2 #数学的平均分

max 做大值

select max(math) from student2 #最大值
-- min 最小值
select min(math) from student2 #最大值
-- DISTINCT去重
select DISTINCT(math) from student2 #最大值

6、分组:group by

having 一般和group by 结合使用

求出:男女的总分数
select sex,SUM(english+chinese+math) from student2 group by sex ;
求出每个班级语文总成绩
接条件:having

求出每个班级语文总成绩大于300分?
select class,SUM(chinese) from student2 group by class HAVING SUM(chinese) >300 ;

函数去别名:as
select class,SUM(chinese) as s from student2 group by class HAVING s >300 ;

having一般是接在group 的后面

四、改
格式:UPDATE 表名 set 字段名="新值" where 字段名=值 ;
如:UPDATE student2 set name="xiaohong" where id=1 ;

五、

单行注释

删除# 取消注释
多行注释 :选中多行,ctrl+/
取消注释: 选中多行 shift +ctrl+/

posted on 2026-07-06 18:37  小房子i  阅读(3)  评论(0)    收藏  举报

导航