MySQL的使用


layout: post
title: MySQL的使用
subtitle: MySQL
date: 2018-01-25
author: ZL
header-img: img/20180125.jpg
catalog: true
tags:
- MySQL


一、数据库的分类

  • DDL: Data Definition Language,用来定义数据库对象:数据库database,表table, 列column等。 关键宇: 创建create, 修改alter, 删除drop等 (结构)。
  • DML: Data Manipulation Language,用来对数据库中表的记录进行更新。关键宇:插入insert,删除delete,更新update等(数据)。
  • DQL: Data Query Language,来查询数据库中表的记录。关键宇:select, from, where等。
  • DCL: Data Control Language,用来定义数据库的访问权限和安全级别, 及创建用户: 关键宇: grant等。

二、数据库指令

2.1 数据库的操作:database

2.1.1 创建数据库 & 显示所有的数据库 & 查看数据库编码

create database 库名
create database 库名 character set 编码
show databases :显示所有的数据库
show create database 库名

  • 创建不带编码的

    6262743-046d2c513c15c2e4.png
    image

  • 创建带编码的

    6262743-433c0ede273a1980.png
    image

  • 查看编码


    6262743-ab8406c446fab5bd.png
    image

2.1.2 删除一个库

drop database 库名

6262743-835871819a706c82.png
image

2.1.3 使用库 & 查看当前正在操作的库

use 库名

6262743-c91d743157d31b11.png
image

select database()

6262743-07fe2eae6f87216e.png
image

2.2 表操作: table

2.2.1 创建表

create table 表名(
字段名 类型(长度) [约束],
字段名 类型(长度) [约束],
字段名 类型(长度) [约束]
);

6262743-395ec2b38ddc5a4b.png
image

primary key auto_increment传入null值的话就会自动增长

2.2.2 查看所有的表 & 查看表的结构

show table

6262743-7ea3d15d5a153ee4.png
image

desc 表名

6262743-a0641d50a1e6a77f.png
image

2.2.3 删除一张表

drop table 表名

6262743-04dbf2f2da0ab146.png
image

2.2.4 修改表

2.2.4.1 添加一列

alter table 表名 add 字段名(列名) 类型(长度)[约束]

6262743-fe9dc29e341aca28.png
image
2.2.4.2 修改列的类型 (长度、约束)

alter table 表名 modify 列名 类型(长度)[约束]

6262743-083b345f0d2ddf22.png
image
2.2.4.3 修改列的列名

alter table 表名 change 旧列名 新列名 类型(长度)[约束]

6262743-a684dfe32a115738.png
image
2.2.4.4 删除表的列

alter table 表名 drop 列名

6262743-05427f3266b27558.png
image
2.2.4.5 修改表名

rename table 旧表名 to 新表名

6262743-35da8aec667b78cc.png
image
2.2.4.6 修改表的字符集 & 查看当前表的编码

alter table 表名 character set 编码

6262743-86faa52f74e60fcd.png
image

show create table 表名

6262743-eadea7c8720f9f1c.png
image

2.3 对记录增删改查

2.3.1 插入记录

insert into table 表名 (列1,列2,列3...) values (值1,值2,值3...)

6262743-41774c62a5df0c65.png
image

insert into table 表名 values (值1,值2,值3...)需要所有的列都赋值(没有值可以赋null)

6262743-ae6e50af2d7eaaf3.png
image

2.3.2 修改记录

  • 不带条件的

update 表名 set 列名 = 值,列名=值,列名=值...

6262743-600de9c81442020e.png
image
  • 带条件的

update 表名 set 列名=值,列名=值... where 条件

6262743-83de2d8be3a2f3ca.png
image

2.3.3 删除记录

  • 带条件的

delete from 表名 where 条件

6262743-a4c149a69a73af51.png
image

删除后,uid不会重置

  • 不带条件的

delete from 表名


6262743-f9e3a89e26089470.png
image

2.3.4 查询记录

数据准备

#创建商品表
create table product(
    pid int primary key auto_increment,
    pname varchar(20),
    price double,
    pdate timestamp
)

insert into product values (null,'谭妮平',0.01,null);
insert into product values (null,'李士雪',38,null);
insert into product values (null,'左慈',-998,null);
insert into product values (null,'黄迎',99999,null);
insert into product values (null,'南国强',99998,null);
insert into product values (null,'士兵',1,null);
insert into product values (null,'李士兵',698,null);

2.3.4.1 简单查询
  • 查询所有

select * from profuct

6262743-a232d44f7e7d66b8.png
image
  • 查询商品名和商品价格

select pname,price from product

6262743-793f6ac055f126ca.png
image
  • 查询所有商品信息使用表别名

select * from product as p //as可以省略

6262743-8f19185966d80273.png
image
  • 查询商品名使用列别名

select pname as p from product

6262743-a8642dda7096f51c.png
image
  • 去掉重复值(按照价格值)

select distinct(price) form product

6262743-5d49cdf7a4824475.png
image
  • 将所有的商品价格+10进行显示

select pname,price+10 from profuct

6262743-ad9aa32e14e81e76.png
image
2.3.4.2 条件查询
  • 查询商品名称位“左慈”的商品信息

select * from product where pname = '左慈'

6262743-75c514ffecdc3f22.png
image
  • 查询价格>60元的所有商品信息

select * from profuct where price>60

6262743-37f291dd218be25a.png
image
  • 查询商品名称含有“士”的商品信息

select * from profuct where pname like '*%士%'

6262743-97f6a933109bf03c.png
image
  • 查询商品id在(3,6,9)范围内的所有商品信息

select * from profuct where pid in(3,6,9);

6262743-7eee9ddff62bd215.png
image
  • 查询商品名称含有"士"字并且id为6的商品信息

select * from product where pname like '%士%' and pid = 6

6262743-e502560a9154e4d6.png
image
  • 查询id为2或者6的商品信息

select * from profuct where pid = 2 or pid = 6

6262743-4d60a23fed51635b.png
image
2.3.4.3 排序
  • 查询所有的商品,按价格进行排序(升序、降序)

select * from product order by pricr desc

6262743-9165cb3057fb4dea.png
image

desc:降序
asc:升序,默认

  • 查询名称有"士"的商品信息并且按照价格降序排序

select * from profuct where pname like '%士%' order by price desc

6262743-c5cc018bc9fae061.png
image
2.3.4.4 聚合函数
  • 获得所有商品的价格的总和

select sum(price) from product

6262743-e4784241433c0869.png
image
  • 获得所有商品的平均价格

select avg(price) from product

6262743-c50e48be2373264c.png
image
  • 获得所有商品的个数

select count(*) from profuct

6262743-4130e2a3be7bff67.png
image
2.3.4.5 分组操作

数据准备

1.添加分类id (alter table product add cid varchar(32);)
2.初始化数据
update product set cid='1';
update product set cid='2' where  pid in (5,6,7);
  • 根据cid字段分组,分组后统计商品的个数。

select count(*) from product group by cid

6262743-51b58494fb24fe23.png
image
  • 根据cid分组,分组统计每组商品的平均价格,并且平均价格大于20000元。

select avg(price) from product group by cid having avg(price) > 20000

6262743-b538b17eb42b3aaa.png
image
2.3.4.6 查询总结

关键字出现的顺序:
select
from
where
group by
having 分组后带有条件只能使用having
order by 它必须放到最后面

MySQL字段类型

6262743-5bbeb79b45467054.png
image

6262743-30a3ada77465db3a.png
image

插入数据中文乱码问题解决

  • 直接修改数据库安装目录里面的my.ini文件的第57行(不建议)
6262743-848f27448fa1e324.png
image
  • set names gbk;
6262743-30d4eefd178f0e8a.png
image

delete和truncate

delete:删除的时候是一条一条的删除记录,它配合事务,可以将删除的数据找回。
truncate:它是将整个表摧毁,然后再创建一张一模一样的表。它删除的数据无法找回。

delete演示:

6262743-ccfc766b6fb01749.png
image

Truncate演示:

6262743-69b8c7147496212e.png
image

delete删除,uid不会重置!而使用truncate操作,uid会重置

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值