mysql入门

一.数据库介绍

1.数据库

文件系统,需要标准的sql来操作

2.常见数据库

  • MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费.
  • Oracle :收费的大型数据库.Oracle公司的产品.Oracle收购SUN公司,收购MYSQL.
  • DB2:IBM公司的数据库产品,收费的.银行系统中.
  • SQLServer:MS公司.收费的中型的数据库.
  • SyBase :已经淡出历史舞台.提供了一个非常专业数据建模的工具PowerDesigner.
  • SQLite : 嵌入式的小型数据库,应用在手机端.

3.mysql的安装和卸载

卸载:
1.去控制面板卸载
2.删除数据库安装路径和数据库存放路径
3.清空回收站

4.关系型数据库

实体和实体之间存在关系

5.数据库

6.sql概念

结构化查询语言,非过程化语言
一条语句对应一个结果

7.sql分类

DDL:数据库定义语言
    create,alter,drop
DML:数据操作语言
    insert,delete,update
DCL:数据控制语言
    grant
DQL:数据查询语言(重点)
    select

8.命令行连接数据库

mysql -u root -p
二.对数据库的crud

1.创建数据库

create database 数据库名[character set 字符集]

2.查看数据库

show databases;//查看数据库
show create datebase 数据库名;//查看数据库的定义结构

3.删除数据库

drop database 数据库名;

4.修改数据库(不是修改数据库名,是修改编码集)

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

注意:
是utf8不是utf-8

5.其他操作

use 数据库名;
select database();//查看正在使用的数据库
三.对表的crud

1.创建表

create table 表名(
    字段 类型 约束,
    字段 类型 约束,
    字段 类型 约束
);

1.类型
不同:
java:String
mysql:char/varchar:定义字符串,并且要指定长度 name char(10)
char(5):最大能存放5个字符,固定长度
varchar(5):最大能存放5个字符,可变长度

2.java:date;
mysql:
date:只有日期
time:只有时间
datatime:既有时间又有日期
timestamp:时间戳,null,如:用在下订单时

3.注意:在公司里,一般不把大文件存入bloo和text里面,把文件存在硬盘上,存放路径

1.2.约束(规定,规矩)

not null;//非空
unique;//唯一约束
primary key ;//主键约束

注意:

1.一般把ID设置为主键约束,并且设置为自动增长;

2.把id设置为字符串类型,设置为主键,UUID

1.3.创建表

create table student(
    id int primary key auto_increment,
    name varchar(20),
    sex int 
);

2.查看表

show tables;//查看所有的表
desc 表名;//查看表的定义结构

3.修改表

增加一个字段:
alter table 表 add 字段 类型 约束;
修改 列的类型约束:
alter table 表 modify 字段 类型 约束;
修改列的名称:
alter table 表 change 旧列 新列 类型约束;
删除一列:
alter table 表名 drop 列名;
修改表名:
rename table 旧表名 to 新表名;

4.删除表

drop table 表名;
四.对表数据的crud

1.插入数据

insert into 表名 value(值,值,值,...);//第一种方式
insert into 表名 (字段,字段,...) value(值,值,...);//第二种方式

注意:

值要和字段类型匹配
值的个数要和字段个数一致
如果值是字符串类型,需要用''括起来

2.更新记录

update 表名 set 字段=值[where 条件]

注意:
如果没有加条件,会把操作的字段全部修改

3.删除记录(表还在,删除数据)

delete from 表[where 条件]
truncate table 表

区别:
1.delete是一条一条的删除,truncate把整张表删除在创建一张新表;
2.delete是受事物控制的,truncate不受事物控制的;

4.查询记录(重点)

select [*][字段,字段][distinct 字段] from 表名 [where 条件]

4.1查询所有的字段

select * from 表名;
select * from student;

4.2查询指定字段的记录

select 字段,字段,... from 表名;
select sid,sname from student;

4.3去重查询

distinct 字段
select distinct price from  product;

注意:
重复需要全部一样才能筛选

4.4别名查询

字段别名:字段 as 别名;
表别名:表 as 别名;

注意:as可省略

4.5运算查询(+,-,*,/等)

select pname,price+10 from product;

注意:
字段之间进行运算
字符串类型做运算查询没有意义

4.6 where条件查询

select * from product where pid = 1;

select * from product where price>3000;

注意:
不等于是<>;

查找价格在3000到8000之间的商品(包含3000和8000)

select * from product where price between 3000 and 8000 ;

查找id在1,5,8,10这个集合的id

select * from product where pid id(1,5,8,10);

查询pname以Ip开头的商品

select * from product where panme like 'Ip%';

注意:
like一般和占位符一起使用;
%:指的多位(0-n);
_:一位;

查询价格>3000并且数量>10的商品

select * from product where price>3000 and num>10;

查询价格>3000并且数量>10的商品

select * from product where price>3000 or num>10;

7.排序查询

order by 字段
desc:降序;
asc:升序;

根据商品价格查询商品信息

select * from product order by price;

8.聚合函数

count(*[字段]);//统计个数,过滤null
sum();总和
avg();平均值
max();最大值
min();最小值

统计商品表里面商品的个数

select count(pid) from product;

统计商品价格总和

select sum(price) from product;

查询商品表平均价格

select avg(price) from product;

查询商品表中价格最高的

select max(price) from product;

查询商品表中价格最低的

select min(price) from product;

9.分组查询

group by 字段

统计商品表中不同类别的个数

select cno,count(id) from product group by cno;

注意:
一般,通过分组,只有包含分组的字段和聚合函数才有意义;

10.分组后的筛选

having

根据类别分组,查询出商品的平均价格并且平均价格大于3000;

select cno,avg(price) from product group by cno having avg(price)>3000;

注意:
having是分组后的筛选,不能离开group by单独存在,有having一定有group by,有group by 不一定有having;

11.查询语句出现的顺序

select ... from ...where ...group by ...having ...order by

注意:
where不能用聚合函数作为条件,聚合函数不能跟在where后面

五.多表间关系

1.外键约束

alter table 表 add foreign key(字段) reference 表(字段);

2.多表的关系(重点)

2.1一对多

在多的一方创建一个字段作为外键指向一的一方的主键

2.2多对多

新建一张表,至少包含两个字段作为外键,分别指向各自的主键

2.3一对一(了解)

先当作一对多,在外键字段上添加唯一约束

注意:
主键与外键类型要一致

六.数据库常见问题解决

1安装路径

安装文件存放路径:不能有中文和空格!

2.没有安装服务

    (没有安装服务)安装服务:
    管理员权限进入mysql的bin目录下:
    mysqld.exe -install 安装服务:
    如果有服务已经存在可以先移除
    mysqld.exe -remove  移除服务

3.3306端口号被占用导致服务开启不了

已经安装服务,端口号被占用:
    命令行输入:netstat -ano
    找到对应端口的pid,去任务管理器去查找pid对应的软件。kill掉软件。

4.解决命令行乱码

如果在命令行里出现中文乱码,到my.ini配置文件里面修改和命令行一致的编码。
改完之后,重启服务。重新打开命令行

5.重置密码

    方法一:
    1.在my.ini的[mysqld]字段加入:
    skip-grant-tables
    2.重启mysql服务,这时的mysql不需要密码即可登录数据库
     然后进入mysql
    3.mysql>use mysql;
        mysql>update user set password=password('新密码') WHERE User='root';
    4.mysql>flush privileges;
        运行之后最后去掉my.ini中的skip-grant-tables,重启mysqld即可。


    方法二:
     不使用修改my.ini重启服务的方法,通过非服务方式加skip-grant-tables运行mysql来修改mysql密码
     1.停止mysql服务
     2.打开命令行窗口,在bin目录下使用mysqld-nt.exe启动,即在命令行窗口执行: mysqld-nt --skip-grant-tables
     3.然后另外打开一个命令行窗口,登录mysql,此时无需输入mysql密码即可进入。
     4.按以上方法修改好密码后,关闭命令行运行mysql的那个窗口,此时即关闭了mysql,如果发现mysql仍在运行的话可以结束掉对应进程来关闭。
     5.启动mysql服务
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值