数据库Mysql

本文详细介绍了如何下载并安装MySQL,包括设置编码和密码。接着讲解了数据库的基本概念,如创建、查看、修改和删除数据库。深入探讨了表的操作,包括创建、修改、删除表以及CRUD操作,如插入、查询、更新和删除数据。内容涵盖条件查询、分组、排序和聚合函数等,是MySQL数据库操作的全面指南。
摘要由CSDN通过智能技术生成
程序中数据存储方式
三种方式

在这里插入图片描述

数据库操作

安装
下载:
www.oracle.org 去oracle公司的官网下载MySQL数据。
安装:
双击: mysql-5.5.36-win32.msi
注意:

  1. 编码。
  2. 输入登陆用户root 的密码。

安装成功,测试:
在这里插入图片描述
出现welcome表示安装成功。
输入命名, mysql –u root –p 不能访问mysql解决办法。
检查电脑服务中,mysql服务有没有启动,没有启动就手动启动它。
数据库操作
数据库, Database, DB:存储数据的仓库。
mysql> show databases; 查看所有数据库:
1.系统数据库 。2. 用户自己创建的数据库
注意: 对数据库、数据的操作,都是在自己的数据库下完成。
在这里插入图片描述
创建数据库
方式1:
在这里插入图片描述
方式2: 创建数据库,指定编码、指定编码对应的效验规则

在这里插入图片描述
create database day14 指定数据库名称
character set utf8 指定数据库对应的编码
collate utf8_general_ci; 指定编码对应的效验规则
查看效验规则
show character set; 查看每一个编码对应的效验规则
在这里插入图片描述
查看数据库创建语法
在这里插入图片描述
修改数据库
在这里插入图片描述
查看:
在这里插入图片描述
删除数据库
方式1:
在这里插入图片描述
如果不存在需要删除的数据库则报错。
在这里插入图片描述

方式2:判断一下

在这里插入图片描述
语法:
Use 数据库; 表示在哪个数据库下执行操作。
在这里插入图片描述

表操作

数据是存储到数据库的表中。
建表之前,要选择在哪个数据库下建表。
语法:
Create table 表名(
列名称1 类型,
列名称2 类型,
列名称3 类型,
列名称4 类型,
列名称5 类型
);
第一步,指定在哪个数据库下创建。
在这里插入图片描述
第二步,创建。
在这里插入图片描述
查看:
在这里插入图片描述
继续添加表:
在这里插入图片描述
查看;
在这里插入图片描述
查看表的创建语句: show create table 表名
在这里插入图片描述

描述一张表: desc 表名
在这里插入图片描述

给表添加列:
需求:给student表添加分数字段
语法: alter table 表名 add [column] 列名称 列类型
实现:
mysql> alter table student add score varchar(20); 在这里插入图片描述

修改列名称:
需求: 把student 表的name 名称,改为新的名称“studname”
语法: alter table 表 change 旧列 新列 新列类型
实现: mysql> alter table student change name studname varchar(100);
总结:
change是用来修改列名称(也可以改类型)。
在这里插入图片描述
修改列类型:
需求: 把名字字段的长度改为80个字符
语法: alter table student modify 列名称 新的类型
实现:mysql> alter table student modify studname varchar(80);
在这里插入图片描述

改表名:
需求: 把student改为Student表
语法; alter table 旧表 rename to 新表;
实现:
mysql> alter table student rename to Student;
在这里插入图片描述

删除表

mysql> drop table test; 删除表
mysql> drop table if exists test; 表存在就删除
在这里插入图片描述

表数据操作

CRUD, create read update delete 增删改查.
已有表:

mysql> desc test; 查看表结构
在这里插入图片描述

插入数据
语法: insert into 表名(列名称1, 列名称2, 列名称3) values (值1, 值2, 值3);
举例:
mysql> insert into test(
-> id,name,address,salary) values
-> (1,“miemie”,“CSDN”,20000);
Query OK, 1 row affected (0.00 sec)
在这里插入图片描述

注意:

  1. 插入要指定列名称
  2. 列值要与列名称一一对应
  3. 指定了多少个列,就一定要有多少个值。

补充:
mysql> insert into test(id,name,address,salary) 依次指定所有列插入
-> values(10,‘Jack’,‘CSDN’,100000);
在这里插入图片描述

mysql> insert into test(id,address,name) 指定部分列插入
-> values(11,‘CSDN’,‘Rose’);
在这里插入图片描述

mysql> insert into t_student values(13,‘Lucy’,‘CSDN’,15000); 不指定列名称插入,就必须依次给所有的列指定值。
在这里插入图片描述

如果使用的是命令提示符工具,需要对插入的中文进行设置:
set character_set_client=gbk; 插入
set character_set_results=gbk; 查询
控制台只接受gbk编码,mysql数据库会自动转换为具体的数据库编码。

查询数据
语法: select * from 表名
mysql> select * from test;
在这里插入图片描述

修改删除
需求: 把id为1的学生工资修改为30000
语法: update 表名 set 字段 = 值 where 条件
实现:
mysql> update test set salary=30000 where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

在这里插入图片描述

补充:
需求: 把编号为1的学生(test)姓名(name)改为“咩咩”,
地址(address)改为”CSDN博客”
实现:
mysql> update test set stuName=‘咩咩’,address=‘CSDN博客’
-> where id=1;
在这里插入图片描述

注意:
1. 修改语句,一定要带上where条件,否则整个表都会修改,造成数据混乱。
2. 通常,修改语句的条件是编号(唯一)。
3. 修改多列, 用逗号分隔。
删除数据
语法: delete from 表
mysql> delete from test where id=1;
Query OK, 1 row affected (0.00 sec)
在这里插入图片描述
删完,只是删除了数据,但表还在。

数据查询

录入测试数据:
mysql> desc test;
在这里插入图片描述

查询全部列:

  • 通配符,表示所有的列。
    mysql> select * from test;
    在这里插入图片描述
    开发中,
    需要哪些列,查询哪些列。

查询部分列:
mysql> select id,name from test ;
在这里插入图片描述

给列指定别名
mysql> select id as ‘编号’, name as ‘姓名’ from test ;
在这里插入图片描述

mysql> select id 编号 , name 姓名 from test ; 效果一样
在这里插入图片描述

给表指定别名
mysql> select test.id,test.name from test; 通过表名.列名称(太长)
在这里插入图片描述

mysql> select t.id,t.name from test as t; 给表指定别名: 别名.列名称
确定列是来自哪个表。
在这里插入图片描述

给列添加常量列
如果从表中查询的信息满足不了需求,还需要增加额外的字段,可以选择使用查询常量列。
mysql> select id,name,100 as “成绩” from test;
在这里插入图片描述

特点:
1. 成绩列,在数据库表中不存在,只是查询的时候额外添加显示。
2. “成绩”列,就叫做常量列。
3. 常量列的值,全部一样。

查询带条件
数据基础:
mysql> select * from test;
在这里插入图片描述

一个条件
需求:根据编号查询为1的记录
mysql>select * from test where id=1;
在这里插入图片描述

需求: 查询名称是’miemie9’的用户
mysql> select * from test where name=“miemie9”;
在这里插入图片描述

多个条件
and 连接多个条件
连接的多个条件要同时成立。

需求: 查询地址是“CSDN”,薪水是”salary” 的学员
mysql> select * from test where address=“CSDN” and salary=20000;
在这里插入图片描述

or 连接多个条件
连接的多个条件,只要有一个成立,就返回当前成立的记录。
mysql> select * from test where address=“CSDN” or salary=20000;
在这里插入图片描述
查询编号为1 2 3 4的学生
mysql> select * from test where id=1 or id=2 or id=3 or id=4;
在这里插入图片描述

mysql> select * from test where id in(1,2,3,4); 同上
在这里插入图片描述
between … and … 范围查询
注意:
1. 只能对数值类型进行范围查询。
2. between 范围的开始 and 范围的结束。
相当于: 字段>=范围的开始 and 字段<=范围的结束。

mysql> select * from test where salary>=30000 and salary<=40000;;
在这里插入图片描述

mysql> select * from test where salary between 30000 and 40000;
在这里插入图片描述
模糊查询
语法: select * from 表 where 字段 like ‘%字符%’;
Like 关键字
通配符:
% 匹配任意长度的字符
_ 匹配单个字符

已有表格:
在这里插入图片描述

需求: 名称中包含’t’ 的学生
mysql> select * from test where name like “%t%”;
在这里插入图片描述
k前的%表示 前面有任意长度字符,
k后的%表示 后面有任意长度字符,

mysql> select * from test where name like “%y”; 查询地址中最后一个字符是y的学员
在这里插入图片描述

mysql> select * from test where name like “%o_”; 查询名称中有o字符,且o后面只有一个字符
在这里插入图片描述

查询去重
mysql> select salary from test;
在这里插入图片描述

mysql> select distinct(salary) from test; 去重函数
在这里插入图片描述
mysql> select t.id from(select * from test) t;
在这里插入图片描述
聚合函数统计
需求: 对结果求和、平均值、最大值、最小值。

mysql> select sum(salary) from test; 求和
在这里插入图片描述
mysql> select avg(salary) from test; 求平均值
在这里插入图片描述
mysql> select max(salary) from test; 最大值
在这里插入图片描述
mysql> select min(salary) from test; 最小值
在这里插入图片描述

统计总记录数:
mysql> select count(*) from test;
mysql> select count(1) from test;
执行效率: count(1) 效率更高。
在这里插入图片描述
在这里插入图片描述

mysql> select count(address) from test; 忽略字段为null的记录。
在这里插入图片描述

执行效率:
Count(1) > count(字段) > count(*)

分组、分组后的筛选
分组
mysql> select * from test;
在这里插入图片描述

需求: 统计每个address的人数
期望结果:
年级 人数
NULL 2
China 2
CSDN 9
CSDN博客 1

mysql> select count(*) from test group by address;
在这里插入图片描述

mysql> select address,count(*) from test group by address;
在这里插入图片描述

mysql> select address 地址,count(*) 数量 from test group by address;
在这里插入图片描述

总结:
按照address分组,即把address分类,再统计。
一个address,对应一个统计。
最后,分组查询,查询的结果,要么是聚合函数,要么是分组字段。
mysql> select address 地址,count(1) 数量 from test group by address;
在这里插入图片描述
mysql> select id,address 地址,count(1) 数量 from test group by address;
在这里插入图片描述

错误写法,结果不对。 年级对应的人数只有一个结果,但id是多个结果。对应不上。但MySQL 没有报错,执行的结果不符合语意。如果是在oracle/sqlservlet,执行就直接报错。

对多个字段分组:
mysql> select id,address 地址,count(1) 数量 from test group by id,address;
在这里插入图片描述

按照address、id当成一组,因为id是唯一,所以每一条记录都是一组。

分组后筛选
mysql> select address 地址,count(1) 数量 from test group by address;
在这里插入图片描述

需求: 统计address人数,显示address人数>2的address。

mysql> select address 地址,count(1) 数量 from test group by address
-> having count(*)>2;
在这里插入图片描述

注意:
对分组后的查询进行筛选,不能用where (因为要分组、统计后,才能对结果筛选),必须用having语句。
查询排序
排序语法:
Order by 字段 默认是升序(asc)
desc 指定为降序
mysql> select * from test order by salary; 默认是升序
在这里插入图片描述
mysql> select * from test order by salary asc; 表示升序(从小到大)
在这里插入图片描述

mysql> select * from test order by salary desc; 表示降序 (从大到小)
在这里插入图片描述

注意:
排序会对全表重新检索,影响性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值