mysql数据库入门——笔记

1. 数据库的简介

1.1 什么是数据库?就是一个文件系统,使用标准sql对数据进行操作(crud)

1.2 常见的数据库

· oracle:是oracle公司的产品,是大型的收费的数据库

· db2:是ibm公司的产品,是大型的收费的数据库

· SQLServer:微软公司的产品,是中型的数据库

· MySQL:在oracle收购之后6.x版本开始收费,之前的版本都是免费的

· SQLite:是小型的嵌入式数据库,应用在客户端开发中,比如安卓

1.3 关系数据库:存储的是实体之间的关系

· 比如:购物网站,有用户、订单、商品,称为实体

· 用户、订单和商品之间的关系称为实体之间的关系

· 使用er图表示实体之间的关系

——实体使用矩形、在实体上属性使用椭圆,之间的关系使用菱形


2. mysql的安装和卸载

2.1 安装mysql 5.x版本(毕竟之前的是收费的)

2.2  mysql的安装——百度一大堆

2.3  mysql的卸载

第一步:在mysql的安装路径里面,找到一个文件my.ini,在里面找到2个路径,复制出来

basedir="C:/Program Files (x86)/MySQL/MySQL Server 5.5/"

datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"

第二步:打开控制面板,找到mysql数据库,进行卸载

第三步:找到第一步复制出来的2个路径,把这2个路径里面所有的文件都删除

第四步:打开注册表regedit,搜索mysql,找到了都删除

第五步:重启系统

3. mysql服务器的存储结构

3.1 mysql服务器

· 服务器:从硬件上,服务器就是一台电脑;从软件上,在电脑上安装了服务器软件

· mysql服务器:在一台电脑上,安装了mysql数据库,这台电脑称为mysql服务器

3.2 mysql服务器的存储结构

· 有多个数据库,在每个数据库里面有多个数据库表,在每个表里面有多条记录

· 学习重点:对数据库、数据库表、表中的记录的操作(crud操作)


4. sql语言简介

4.1 数据库是文件系统,使用标准sql对数据库进行操作

· 标准sql,在mysql里面使用语句,在oracle、db2都可以使用这个语句

4.2 什么是sql?

· Structured Query Language,结构化查询语言,对数据库进行操作

· sql是非过程性语言,不需要依赖其他的条件就可以运行

——在java中:需要

if(a >5 ) {System,out.......}

4.3 sql的分类

第一类:DDL(数据定义语言)

· 创建数据库,创建数据库表

· 常用的语句create

第二类:DML(数据操纵语言)

· 对表中的记录进行增加 修改 删除操作

· 常用的语句 insert update delete

第三类:DCL(数据控制语言)

· 数据库的编程语言

第四类:DQL(数据查询语言)

· 对表中的记录进行查询操作

· 常用的语句 select

5. 使用sql对数据库操作

5.1 连接数据库

· 打开cmd窗口,使用命令,连接mysql数据库

· 命令:mysql -u root -p 密码

5.2 创建数据库

· 语句:create database 数据库名称;

· 示例:create database testdb1;

5.3 查看所有数据库

· 语句:show database;

5.4 删除数据库

· 语句:drop database 要删除的数据库的名称

· 示例: drop database testdb1;

5.5 切换数据库

· 如果想要创建一个数据库表,这个表要在一个数据库里面,所以需要切换到数据库

· 语句:use 要切换的数据库名称;

· 示例:use testdb2

6. 使用sql对数据库表操作

6.1 创建数据库表

· 语句 create table 表明 (

            字段 类型,

            字段类型

            )

· 示例:创建表user,字段id username password sex

create table user(

id int,

username varchar(40),

password varchar(40),

sex varchar(10)

)

6.2 mysql的数据类型

字符串类型: VARCHAR CHAR

· 当创建表的时候,使用字符串类型,name varchar(40),指定数据的长度

· varchar和char的区别:

(1)varchar的长度是可变的,比如name varchar(5),存值a,会直接把a存进去

(2)char的长度是固定的,比如name char(5),存值b,把b村进去,后面加很多空格

大数据类型:BLOB TEXT

· 使用这个类型可以存储文件,一般开发,不会直接把文件存到数据库里面,存文件路径

数值型:

TINYINT     SMALLINT     INT     BIGINT     FLOAT     DOUBLE

· 对应java里面的

byte             short                int        long         float           double

逻辑型:BIT

· 类似java里面的boolean

日期型:

DATE:用于表示日期 1945-08-15

TIME:用于表示时间 20::13:14

下面的两个类型可以表示日期和事件

DATETIME:手动添加时间到数据库表里面

TIMESTAMP:自动把时间添加到表里面

6.3 查看表的结构:

· 语句:desc 表名称

6.4 mysql的约束有三种

· 第一种:非空约束 not null

            表示数据不能为空

· 第二种,唯一性约束 unique

           表示表中的记录不能重复

· 第三种,主键约束 primary key

          表示非空,唯一性

          自动增长 auto_increment

6.5 创建带约束的表

create table person(

 id int primary key,

username varchar(40) not null,

sex varchar(20)

)

6.6 删除表

· 语句:drop table 要删除表的名称

6.7 查看当前数据库里面有哪些表

· 语句 show tables;

6.8 修改表结构

修改字段(字段名或者类型):alter table 表名称 change 旧字段 新字段 类型

修改字段类型(标准方式):alter table 表名称 modify 字段名 字段类型

添加字段:alter table 表名称 add 新字段名  字段类型

删除字段:alter table 表名称 drop 字段名


7. 使用sql对表中的记录进行操作(增删改查)

7.1 向表里添加记录insert

· 语句: insert into table values(要添加的值) 

· 注意:当添加的字段的数据类型是int类型,直接写值;

             当添加的字段的类型是varcahr类型和日期类型,使用单引号包起来;

              要添加的值必须和表的结构一一对应

· 练习:向user表里面添加记录

insert into user values(1,'aaa','123','man');

insert into user(username,password) values('aaa','123');

· 自动增长的效果

create table stu (

id int primary key auto_increment,

sname varchar(30)

)

insert into stu values(null,'aaa');

7.2 修改表里面的记录 update

· 语句update 表名称 set 要修改的字段的名称1=修改的值,要修改的字段的名称2=修改的值2 where 条件

· 练习:修改user表里id=1的username修改为QQQ,修改passwod为999

update user set username='QQQ',password='999' where id=1;

7.3 删除表里的记录 delete

· 语句 delete from 表名称 where 条件

· 练习:删除user表里id=2的记录

delete from user where id=2;

· 如果不写where条件,会把表里的所有的记录都删除

7.4 查询表中的记录select

· 语句 select 要查询的字段的名称(*) from 表明 where 条件

create table user(

id int,

username varchar(40),

chinese int,

math int

)

insert into user values(1,'luck',100,30);

insert into user values(2.'mary',60,80);

insert into user values(3,'jack',90,20);

· 练习1:查询user表里面的所有数据

select * from user;

· 练习2:查询user表里面用户名和语文成绩

select username,chinese from user;

· 练习3:查询user表里面id=2的数据

select * from user where id=2;

7.5 别名

· 格式: as 别名

select username  as u1,chinese as c1 from user;

as可以省略不写

7.6 distinct,去除表里面重复记录

· 语句 select distinct * from 表名;

7.7 where子句

(1)运算符 < <= > >=

· 练习:查询user表里面语文成绩大于60的所有人员

select * from user where chinese > 60;

(2)in:在范围内

· 练习:查询user表里面英语成绩是80,90的人员信息

select * from user where in(80,90);

这句话是说成绩是80,90的人,不是80到90之间

(3)and:在where里面如果有多个条件同时存在,用and连接,表示需要同时满足

· 练习:查询user表里面语文成绩是100,并且英语成绩是30的人

select * from user where chinese=100 and enligh=30;

(4)得到区间范围的值

· 练习:查询user表里面语文成绩在70-100之间的人

· 写法一:select * from user where chinese>=70 and chinese<=100;

· 写法而:select * from user where chinese between 70 and 100;

(5)like 模糊查询

· 练习1:查询user表里面username包含a的人员信息

select * from user where username like '%a%';

· 练习2:查询user表里面username第二位是a的人员信息:

select * from user where username like'__a';

下划线表示占位符,一个下划线表示一个占位符

7.8 查看当前运行的数据库

select database();

7.9  对表中的记录排序 order by

· order by写在select语句的最后

(1)升序 order by 要排序字段 asc(asc可以省略不写,默认情况就是asc)

(2)降序 order by 要排序字段 desc

· 练习:对user表里的记录进行降序排列

select * from user order by enligh desc;

8. 聚集函数

8.1 使用提供一些函数,直接实现某些功能

8.2 常用的聚集函数

(1)cuount()函数

· 根据要查询的结果,统计记录数

· 写法:select count(*) from .... where ....;

· 练习1:查询user表里面有多少条记录

select count(*) from user;

· 练习2:查询user表里面语文成绩大于60的人员有多少

select count(*) from user where chinese>60;

(2)sum()函数

· 求和的函数

· 格式: select sum(要进行求和的字段) from .... where ....

· 练习1:得到user表里面的语文的总成绩

select sum(chinese) from user;

· 练习2:得到user表脸语文总成绩和英语总成绩

select sum(chinese),sum(enligh) from user;

· 练习3:得到user表里面语文成绩的平均分(总的成绩/总的人数)

select sum(chinese)/count(*) from user;

(3)avg函数

· 计算平均数的函数

· 格式: select avg(要计算的平均数的字段名称) from.....

· 练习:得到user表里面语文成绩的平均分

select avg(chinese) from user;

(4)max()函数:计算最大值

· 写法:select max(字段) from ....

(5)min()函数:计算最小值

· 写法: select min(字段) from....

· 练习:得到user表里面语文成绩的最高分数,英语成绩的最低分数

select max(chinese),min(enligh) from user;

9. 分组操作

· 分组使用group by根据分组的字段

· 在分组的基础山再进行条件的判断 having,后面可以写聚集函数

(1)示例:

create table orders (
id int,
name varchar(40),
price int
)
insert into orders values(1,'电视',2000);
insert into orders values(2,'电视',2000);
insert into orders values(3,'苹果',10);
insert into orders values(4,'手机',500);
insert into orders values(5,'手机',500);
insert into orders values(6,'鼠标',33);
insert into orders values(7,'鼠标',33);

(2)练习1:统计orders表里面每类商品的价格

select name,sum(price) from orders group by name;

(3)练习2:对商品进行分类,得到每类商品的总价格大于66的商品

select name,sum(price) from orders where sum(price)>66 group by name;

这里的语句逻辑上是没有错误的,但是在语法上,where里面不能写聚集函数

select name,sum(price) from orders group by name having sum(price)>66;

10. mysql的可视化工具使用:Navicat

11. mysql的关键字limit

11.1 limit关键字查询表中的某几条记录

11.2 limit关键字不是标准的sql关键字,只能在mysql数据库里面使用,可以实现分页的功能

· 在oracle里面特有关键字:rownum

· 在sqlserver里面特有关键字top

11.3 使用limit查询前几条记录

· 格式:limit 前几条记录 limit3

·练习:查询user表里面的前三条记录

select * from user limit 3;

select * from user limit 0,3;

11.4 使用limit查询第几条到第几条记录

· 写法:limit第一个参数,第二个参数

注意:第一个参数开始的记录数的位置,从0开始

            第二个参数是从开始位置向后获取几条记录

· 练习:查询user表里面第二条到第四条的记录

select * from user limit 1,3;

12. 重置mysql的root密码:

(1)知道密码,修改密码

第一,连接mysql数据库
第二,切换数据库 mysql  use mysql
第三,进行密码的修改 update user set password=password('要修改成的密码的值') where user='root';
第四,重新启动mysql服务

(2)忘记密码,重置密码

第一,把mysql的服务关闭
第二,打开cmd窗口,输入命令 mysqld --skip-grant-tables(不要加分号)
第三,再打开cmd窗口,连接数据库,不需要输入密码  mysql -u root
第四,切换数据库 mysql  use mysql
第五,进行密码的修改 update user set password=password('要修改成的密码的值') where user='root';
第六,把两个cmd窗口都关闭,打开任务管理器,找到mysqld进程,结束
第七,启动mysql服务

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值