Mysql学习笔记

Posted 唥小雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql学习笔记相关的知识,希望对你有一定的参考价值。

数据库笔记

一、初识数据库:

1、什么是关系型数据库设计?
数据库设计就是将数据库中的数据实体及这些数据实体之间的关系,进行规划和结构化的过程。
2、数据库规范设计:
第一范式:原子性
第二范式:确保表中每列都跟主键相关
第三范式:确保表中每列都与主键直接相关,而不能间接相关
(A\\B\\C三列,A列是主键,C列依赖B列,B列与A列直接相关,这就是错误的设计,因为C列不是与主键直接相关)
windows+r–>services.msc

二、基本sql语句DDL、DML、DQL

1、创建数据库:create database 数据库名;
2、查看数据库列表:show databases;
3、使用数据库:use 数据库名;
4、数据类型:
varchar字符串类型
int整数类型
float、double小数类型
date YYYY-MM-DD年月日类型
datetime yyyy-mm-dd hh:mm:ss年月日时分秒类型
timestamp YYYYMMDDHHMMSS 精度为1秒,时间戳–格林时间、东八区(公务员考题:北京时间指的是北京这个地址么)
例:2018年某时刻~2019年某时刻
5、创建表:创建表前必须使用某个数据库
create table [if not exists] 表名(
字段1 数据类型[字段属性|约束][索引][注释],
字段2 数据类型[字段属性|约束][索引][注释],…
字段n 数据类型[字段属性|约束][索引] comment “字段注释”
)[表类型][表字符集] comment = “练习表”;
约束:
非空约束:not null
主键约束:primary key
自动增长:auto_increment
外键约束:foreign key references

6、删除数据库:drop database 数据库名;
7、查看所有表:show tables;
8、查看某个表:describe 表名;
9、删除表:drop table 表名;
10、修改表名:alter table 旧表名 rename 新表名;
11、添加字段:alter table 表名 add 字段名 数据类型(长度) 约束 注释;
12、修改字段:alter table 表名 change 原字段名 新字段名 数据类型(长度) 约束 注释;
13、删除字段:alter table 表名 drop 字段名;

三、新增sql语句:

1、标准写法:insert into 表名 (字段1,字段2…) value (对应值,对应值…)
2、简洁写法:insert into 表名 value (对应值,对应值…)
注:value和values都可用
3、同时新增多条数据: insert into 表名 value (列1值,列2值…),(列1值,列2值…),(列1值,列2值…)…
4、insert into 表1 select (字段) from 表2
注:表1和表2完全相同的情况下
5、insert into 表名 value
(值1,(从别的表查出的值))

四、修改sql语句:

1、修改一条记录:update 表名 set 字段=新的值 where 条件
2、修改多条记录:update 表名 set 字段1=新的值,字段2=新的值,… where 条件

五、删除sql语句:

1、删除一条记录:delete from 表名 where 条件
2、删除表中所有数据:truncate table 表名

六:查询sql语句:

1、查询表中所有数据:
select * from 表名
2、查询表中id为1的数据:
select * from 表名 where id=1
3、查询表中某个字段,条件为id=1:
select 某字段 from 表名 where id=1
4、查询某个范围的记录:
select * from 表名 where 查询条件 limit 位置偏移量,行数
注:常作用于分页查询
位置偏移量:从第几行开始查询,从0开始
行数:查询几行
5、查询表中是否存在某条数据:
select count(1) as 别名 from 表 where 条件
select count(*) as 别名 from 表 where 条件
如果存在,结果为1,否则结果为0
6、一堆函数:
avg() —返回某字段的平均值
max() —返回某字段的最大值
min() —返回某字段的最小值
sum() —返回某字段的和
例:select avg(某字段) from 表名;
7、关联查询
(1)左关联:
select 要查询的列 from 表1 left join 表2
on 表1.关联列 = 表2.关联列
where 条件;
注:
右关联:将上述sql语句中的left改成right
中间关联:将上述sql语句中的left改成inner
(2)、直接关联:
select 要查询的列 from 表1,表2
where 条件 and 表1.关联列 = 表2.关联列;

8、子查询:
(1)、语法:select * from 表名
where 字段1 比较运算符 (子查询);
例:查询成绩大于吴春雷的成绩信息
select * from mark where grade >
(select grade from mark
where username = ‘wcl’);
(2)、语法:select * from 表名
where 字段1 in (子查询);
例:查询成绩在50~61范围内的成绩信息
select * from mark
where grade in
(select grade from mark
where grade <= 61 and grade >= 50);
9、模糊查询:%可以匹配多个字符,_只匹配一个字符
语法:select * from 表 where 某字段 like ‘%字符1%’;
注:查询某字段存在字符1的数据
10、排序:
语法:select * from 表 order by 字段名;
注:查询某表所有数据,根据某字段进行排序,默认升序排列
order by 字段名 desc:为降序排列
11、子查询:exists
(1)、语法:select * from 表 where exists (子查询)
注:如果子查询成立,才能查出结果,否则结果为空
(2)、语法:select * from 表1 where exists
(select 1 from 表2 where 表1.字段 = 表2.字段)
注:exists可用于多表关联查询,子查询语句可以直接利用主查询语句的表
12、case when判断语句:
语法:select case 字段名
when 字段值1 then 返回值1
when 字段值2 then 返回值2…
else 返回值3 end 列别名
from 表名;

七、事务、视图、索引

1、什么是事务:
事务是一种机制、一组操作序列,要么都执行,要么都不执行,是一个不可分割的逻辑元。
2、事务四大属性:
(1)、原子性:一组操作序列作为一个整体去提交或回滚
(2)、一致性:某个正在进行的事务导致数据可能不在一致的状态,当此事务成功完成时,数据必须再次回到一致状态。
(3)、隔离性:对数据进行修改的所有并发事务是彼此隔离的,事务相对都是独立的
(4)、持久性:不管系统是否发生故障,事务处理的结果都是永久的
3、如何执行事务
(1)、开始事务:begin或start transaction
(2)、提交事务:commit
(3)、回滚(撤销)事务:rollback
注:查询所有进程:show processlist
找到锁死的进程,kill 锁死进程的id
4、什么是视图:视图是另一种查看数据库中一个或多个表数据的方法,视图是一种虚拟表
注:视图作用:
(1)、筛选所要查询的行、列
(2)、防止未经许可的用户访问敏感数据
(3)、将多个物理数据表抽象为一个逻辑数据表
使用sql创建视图:
create view 视图名 as select语句;
5、什么是索引:
给某个表创建索引后,查询效率会提高,增删改效率会降低,有了索引后无需对整个表进行扫描,利用索引就能找到所需数据
索引分类:
普通索引、唯一索引、主键索引、复合索引、全文索引、空间索引
创建索引:
(1)、create unique index 索引名 on 表名 列名(长度)
(2)、CREATE TABLE 表名(
列名1 数据类型(长度),
列名2 数据类型(长度),
INDEX [索引名字] (列名1(长度))
);
删除索引:drop index 索引名 on 表名;

必考单词:

主键约束:primary key
自动增长:auto_increment
外键约束:foreign key references
索引:unique
修改表名:alter table 旧表名 rename 新表名;
添加字段:alter table 表名 add 字段名 数据类型(长度) 约束 注释;
修改字段:alter table 表名 change 原字段名 新字段名 数据类型(长度) 约束 注释;
模糊查询:%可以匹配多个字符,_只匹配一个字符
开始事务:begin或start transaction
提交事务:commit
回滚(撤销)事务:rollback
create view 视图名 as select语句;

以上是关于Mysql学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

一份超长的MySQL学习笔记(正在更新)

MySQL - 学习笔记 - 表连接 SQL JOIN

MySQL - 学习笔记 - 表连接 SQL JOIN

MySQL - 学习笔记 - 标准SQL函数 Standard SQL Functions

MySQL - 学习笔记 - 标准SQL函数 Standard SQL Functions

MySQL学习笔记