文章标题

MySql

1.数据库概念

  • 文件系统,需要标准的sql语句才能访问它

2.常见数据库

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

和java相关的数据库:

  • mysql,oracle(hibernate)
  • sqlite(greedao,ormlite)

3.mysql的安装和卸载

卸载:

  • 去控制模板或者360卸载
  • 删除两个文件夹(数据库安装路径,数据库数据存放的路径)
  • 回收站需要清除

4.关系型数据库

  • 实体(表)和实体之间存在关系

5.数据库服务器内部结构

6.sql概念

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

    java: int a = 5; int b = 4; int sum = a+b;

7.sql分类

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

8.命令行连接数据库

  • mysql -u root -p

9.学习列表

  • 操作数据库(crud)
  • 操作表(crud)
  • 操作表里面的数据(crud)*重点
二,对数据库的CRUD

1.创建数据库

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

1)创建day02_1的数据库(默认编码)

2)创建day02_2的数据库(指定编码为gbk)

create database day02_2 character set gbk;

2.查看数据库

1)查看所有的数据库

show databases;

2)查看数据库的定义

show create database 数据库名;

3.删除数据库

  • drop database 数据库名;

    删除day02_2的数据库
    drop database day02_2;

4.修改数据库(不是指的修改数据库名称,修改的是字符集)

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

注意:

  • 是utf8,不是utf-8

5.其它操作

1)选择数据库;

use 数据库名;

2)查看正在使用的数据库

select database();

注意:

  • 在创建表之前或者操作数据之前,要指的数据库 (use 数据库名)
三,对表的CRUD

1.创建表

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

1)类型

Java                MYSQL
int                 int
float               float
double              double
String              char/varchar
Date                date,time,datetime,timestamp
文件类型                BLOB、TEXT   TEXT指的是文本文件  BLOB二进制文件

不同的:

1.mysql里面通过char和varchar来定义字符串

    char(5) 固定长度,最大只能存放5个字符。 李四  --->身份证18
    varchar(5) 可变长度,最大只能存放5个字符。 李四

2.mysql里面的时间和日期

  • date;只有日期
  • time;只有时间
  • datetime;既有时间又有日期
  • timestamp;时间戳,传值传null,系统会自动的把当前的系统时间赋值。eg:下订单的时候

3.文件

注意:

  • 把文件放在服务器的硬盘上,把文件的路径存入数据库

2)约束

  • 规则,条件

  • not null;非空约束

  • unique;唯一约束
  • primary key;主键约束(非空+唯一) —> id

注意:

  • id一般设置为int类型,设置为主键,自动增长(auto_increment)
  • 或者id设置成字符串类型,设置成主键,UUID

1)创建一张student表,id(设置为主键,字段增长),姓名,性别字段

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

);

2.查看表

1)查看指定数据库所有的表;

show tables;

2)查看表的结构

desc 表名;

3.修改表

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

1)student表增加一个班级的字段
alter table student add class varchar(10);

2)student表,修改sex字段为字符串类型

alter table student modify sex varchar(10);

3)student表,把class字段修改成grade字段

alter table student change class grade varchar(10);

4)student表,删除grade

alter table student drop grade;

5)把student修改成teacher

rename table student to teacher;

4.删除表

  • drop table 表名;

    删除teacher表
    drop table teacher;

三,对表的数据CRUD

1.插入数据

insert into 表名 values(值,值....)
insert into 表名(字段,字段...)values(值,值...)

向分类表插入数据:

insert into category values(null,'手机数码');
insert into category(cid,cname) values(null,'食物');

注意:

  • 如果是字符串类型,值要用”括起来
  • 插入的值要和字段的类型一致
  • 值的个数要和字段对应起来

2.更新记录

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

eg:把分类表的cname字段全部改成书籍

update category set cname = '书籍;

注意:

  • 如果没有加条件,操作表的对应的字段全部被修改了

3.删除记录(表还在)

1)delete from 表 [where条件]

2)truncate table 表

区别:
- delete一条一条的删除,受事物控制
- truncate把整张表删除,然后再创建一张表,不受事物控制

4.查询记录(*重点)

selct [*][字段,字段..][distinct] from 表 [where条件]

1)查询所有的记录

  • select *from 表名;

eg:查询category表里面的所有字段

select *from category;

2)查询某张表特定字段的记录

  • select 字段,字段…from 表名

eg:查询product的商品名称和商品价格

select pname,price from product;

3)去重查询

  • select distinct 字段 form 表;

注意:

  • 去重需要全部一样的

4)别名查询

  • 字段的别名;select 字段 as 别名 from 表名
  • 表的别名;表名 as 别名

eg:把price字段用别名’价格’查出来

select pname,price as '价格' from product

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

eg:把价格+10块钱的商品查出来

select pname,price+10 from product;

6)where条件查询

img

1)查找价格大于3000的商品

select *from product where price>3000;

注意:

  • 不等于是<>

2)查找价格在3000到4500之间的商品(3000<=price<=4500)

select *from product where price between 3000 and 4500;

3)查找id在1,5,10,12的商品

select *from product where id in(1,5,10,12);

4)查找商品名以Ip开头的商品

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

占位符:

  • %;占多位(0~n)
  • _;占一位

5)查找价格大于3000的并且数量大于10的商品

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

7)排序查询

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

1)根据价格查出商品(升序)

select *from product order by price;

2)根据价格查出商品(降序)

select *from product order by price desc;

8)聚合函数

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

1)查找商品的总个数

select count(id) from product;

2)查找商品价格的总和

select sum(price) from product;

3)查找商品的平均价

select avg(price) from product;

4)查找商品中最大的价格

select pname,max(price) from product;

9)分组查询

  • group by 字段

    统计不同类别商品的个数
    select cno,count(*) from product group by cno;
    

注意:

  • 通过分组,字段只能包含聚合函数和分组的字段才有意义。

10)分组后筛选

  • having 条件

    查找商品平均价格大于3000的类别
    select cno, avg(price) from product group by cno having avg(price)>3000;
    

注意:

  • having分组之后的筛选,有having一定得有group by。

11)查询语句出现的顺序

select   from  where  goup   having order

注意:

  • 聚合函数不能作为where的条件,where后面不能直接根聚合函数
四,多表间关系

1.外键约束

  • alter table 表 add foreign key(字段) references 表(字段);

    给商品表设置外键约束
    alter table product add foreign key(cno) references category(cid);
    

2.多表的关系

1)一对多关系

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

2)多对多的关系

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

3)一对一

  • 先当做一对多,在外键那个字段添加唯一约束

3.网上商城案例实体的抽取

五,第三方软件
六,数据库常见问题解决

1安装路径

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

2.没有安装服务

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

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

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

4.解决命令行乱码

如果在命令行里出现中文乱码,到my.ini配置文件里面修改和命令行一致的编码。

img

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值