使用的MySQL GUI工具-Workbench
1.什么是数据库
- 所谓安装MySQL数据库,就是在主机安装一个数据库管理系统,这个管理系统可以管理多个表
- 一个数据库中可以创建多个表,以保存数据信息
- 数据库管理系统、数据库、表的关系如下图:
2.SQL语句的分类
- DDL:数据定义语句
- DML:数据操作语句
- DQL:数据查询语句
- DCL:数据控制语句
4.指令操作数据库
- 指令运行可以选中命令行运行
- 也可以顺序运行
- 字符集在无指定操作下默认:utf-8
- 校对规则在无指定操作下默认:utf8_general_ci(不区分大小写)
- 校对规则utf8_bin区分大小写
- 创建数据库指令:create database polarBear
- 删除数据库指令:drop database polarBear
- 查看当前数据库服务器中的所有数据库:show databases
- 查看数据库定义信息:show create database polarbear
- 查看表信息:select * from test
- 在创建数据库时可以使用反引号规避关键字
- 删除数据库:drop database polarbear
- 查询字段:select * from polarbear where name = 想要查询的字段;
5.指令创建表
-
GUI工具内创建表
-
DOS窗口创建表,指令一样,只不过此时需要先连接到数据库
-
我是比较喜欢用这个,没有为什么
6.MySQL常用数据类型
7.数据库的完整操作
7.1创建数据库,库名polar
create database polar;
7.1选择数据库
use polar;
7.3创建表,标名为brear
create table bear(
name varchar(32),
sex char(1),
age int,
hobby,varchar(32),
height,int)charest utf8 collate utf8_bin engine innodb;
7.4向表中添加内容
insert into bear values(
'王伟康',
'男',
22,
'爱好学习',
179);
7.5在列sex后增加一个属性emil列
alter table bear
add emil varchar(32) not null default ''
after sex;
7.6修改emil列,使其长度为60
alter table bear
modify emil varchar(60) not null default '';
7.7删除列hobby
alter table bear
drop hobby;
7.8修改表名为polarbear
rename table bear to polarbear;
7.9修改表的字符集为utf8
alter table polarbear character set utf8;
7.10修改列名emil为Emil
- 可以前后名称相同,进而修改列的默认值、字段最大长度
alter table polarbear
change emil Emil varchar(32) not null default '';
- 当然优选此种方式最该字段长度
7.11查看列信息
desc polarbear;
8.数据库C(create)R(read)U(update)D(delete)语句
8.1Insert(增)
#创建数据库
create database insertdateBase;
#选择数据库
use insertDemo;
#创建表
create table insertDemo(
Name varchar(32),
Price double,
DP datetime)charset utf8 collate utf8_bin engine innodb;
#插入内容
insert into insertDemo values(
'蜜桃乌龙茶',
7.9,
'2021-9-4');
8.1.1insert相关细节
- 插入数据应与字段数据类型长度相同
- 数据长度在规定范围内
- 数据插入类型顺序不能乱序
- 字符和日期类型应包含在单引号内
- 列可以插入空值,前提是允许空值
- insert into values(),(),();可以一次添加多条数据
- 字段名称的字节
#当给所有列添加数据时,字段名称(Name,Price, DP)可以省略
insert into insertDemo(Name, Price, DP)
values ('酸奶',3.0,'2021-9-1');
#当给部分列添加数据时,对应字段名称不能省略
insert into insertDemo(Name,Price)
values('卫龙辣条', 2.8);
- 默认值的使用,当不给某个字段值时,如果有默认值就会添加默认值,否则报错
#创建表时指定默认值
create table polarbear(
QQ varchar(32) not null default '898717454')charset utf8 collate utf8_bin engine innodb;
8.2Update(改)
- 当数据被保护,需先执行此命令
set sql_safe_updates = 0;
- 修改某字段所有行的数据
updeta polarbear
set age = 18;
- 修改具体位置的某一字段
update polarbear
set age = 22
where name = '王伟康';
- 增加具体位置的数值
update polarbear
set age = 18
where name = '王伟康';
8.3Delete(删)
//直接删除表
drop table polaebear;
//删除指定位置
delete from polarbear
where name = '王伟康';
- 删除表所有数据,表本身还在
delect from polarbear;
8.4Select(查)
- 查找表全部记录
select * from Demo;
- 查找表指定列信息
select name from Demo;
- 统计
#统计成绩总分
select name as ‘姓名’ , (chinese+english+math) as ‘ 总分’ from Demo;
- 查询指定行信息
select * from Demo where name = '王伟康';
- 查询满足特定过滤条件的信息
select * from Demo
where Chinese > 89;
select * from Demo
where (chinese+english+math)> 288;
select * from Demo
where math > 60 and english > 89;
#between是闭区间
select * from Demo
where between 80 and 99;
select * fron Demo
where math > enhlish;
#like是模糊查询
selest * from Demo
where (chinese+english+math) > 289 and math > chinese and like '王%';
- 排序后输出
#升序是默认的
select * from Demo
order by math
#升序也可以写成这样,asck可以省略如上
select * from Demo
order by math asc;
#降序输出
select * from Demo
order by math desc;
#查询表结构中的desc
desc Demo;
# 查询所有姓王的
select * from Demo
where name like '王%'
order by math;
9.统计函数
9.1count
- 统计表有几条数据
select count(*) from user;
- 统计满足条件的数据有几条
select count(*) from user
where id > 6;
select count(*) from user
where (id + age) > 24;
- count(*)和count()的区别
count(*):统计满足条件的记录的行数
count():统计满足条件的列有多少个,但是会排出为空的情况
select count(id):统计id这一列非空的为多少条
9.2sum
- 计算列的总和,仅对数值起作用,对别的不报错但没有实际意义
select sum(number) from user;
select sum(id) , sum(age) from user;
- select sum(id) as id_total
sum(id) 默认是sum(id)
as id_total把sum(id)修改为id_total
- 求某列平均值
方法一:select sum(number)/count(*) from user;结果为浮点数
方法二:select avg(number) from user;结果为整数
- 求各科成绩总分最高分和最低分
select max(Math + English + Chinese),min(Math,English,Chinese) from student;
- 单科成绩最高分
select max(Math),min(Math) from user;
10.分组统计
- 按照部门分组查询
select avg(sal), max(sal), deptno
from amp group by deptno;
11.事务
11.1如果没有事务会出现
- 脏:读取未提交事务的信息
- 重复度:同一事务中一个查询语句重复执行,读到其他事务增删后的数据
- 幻读:同一事务中一个查询语句重复执行,读到其他事务插入后的数据
11.2事务隔离级别
- 读未提交:如果是一个写事务,不允许其他事务进行写操作,允许读
- 读已提交:如果是一个读事务,允许其他事务读写,如果是写事务禁止其他事务访问
- 可重复度:多次读取未结束前,其他事务不能介入
- 序列化:事务不能并发执行,性能低,一般很少使用
11.3事务特性
- 原子性:事务是最小的工作单元,事务中的操作要么都发生要么都失败
- 一致性:数据库从一个一致性状态变换到另一个一致性状态
- 隔离性:多个用户同时访问数据库。数据库为每个用户开启一个事务,他们互不干扰
- 持久性:事务一旦提交成功,对数据库的修改时永久的
12.索引
12.1索引类型
- 主键索引
- 唯一索引
- 普通索引
- 全文索引:适用于MyISAM的存储引擎
12.2不适合作为索引的种类
- 频繁被修改的字段
- 唯一性差的字段,比如性别
- 不作为查询条件的字段