首页 > 数据库 >MySQL基础知识,入门必备

MySQL基础知识,入门必备

时间:2022-12-25 22:55:13浏览次数:40  
标签:name 示例 必备 基础知识 high hcf MySQL 数据库 select

1.MySQL数据库

1.概念
什么是数据库?
数据库说白了就是,仓库。这里有小伙伴要问了。仓库!我知道!俺家就是送快递的,好几个仓库的!这样说的仓库和数据库有神马相同之处,可以类比?就依这小伙家的仓库做类比吧。仓库里有快递对吧,然后这小伙是负责管理在这个仓库里的快递,这样一来进一步类比,你把快递当作数据,把那小伙当作管理员,埃~搁到一块就是管理仓库。
这就叫数据库!!!!一句话:就是存储、管理数据的仓库!!
外日忒得!!!
1.1数据库的分类
1)关系型数据库:比如Oracle、MySQL、SQLServer
2)非关系型数据库:比如Redis、HBase、MongoDB
1.2数据库

1.MySQL服务端:是处理具体数据维护、保存到磁盘中
2.MySQL客户端:常用操作CRUD就是增删查改
2.1 .DOS窗口和可视化窗口

2.数据库结构
结构:数据库、表
SQL语句
定义:1.结构化查询语句
2.存储数据增删查改
3.管理数据库系统
4.数据库脚本文件的扩展名
5.一种标准的数据库语言
分类:1. DML 数据库的操纵语言。作用:增删查改
2. DDL 数据库定义语言。作用:创建表
3. DCL 数据库操纵语言。作用:grant、deny、revoke,只有管理员才有相应的权限
4. DQL 数据库查询语言。作用:查询

3.数据类型
1.命名规则
1.长度不管超过30
2.不能使用保留字
3.只能使用字母、数字、$、_
4.不区分大小写,习惯全小写
5.多个单词用下滑线隔开
2.字符
1.char()长度撑死2000字符如果不认识这个单词,可以用俺的方式记叫:插,插得时候一定要注意,别插的超过2000)
优点:查询快
缺点:浪费空间
2.varchar()长度撑死4000字符(如果不认识这个单词,可以用俺的方式记叫:我插,插得时候一定要注意,别插的超过4000)
优点:省空间
缺点:查询慢
3. utf-8中的汉字是占用3个字符的
3.数据类型
1.整型:tiny、int
2.小数类型:float、double
3.numberic(A,B) decimal(A,B) ,可以表示小数,A:表示总位数,B:保留的位数
4.日期
1.包含年月日:date
2.时分秒:time
3.年月日时分秒:datetime
4.时间戳:timestamp
5.图片
blod二进制数据,可以存储图片、声音、容量4G
6.字段、行
行就不解释了。。。字段就是 列。。

3.数据库常用操作

1.创建数据库:
create database 库名 默认字符集
默认字符集:default character set utf8;

 #示例
 create  database  a  default character set utf8;

 

强调一下!一定要加英文的分号,要不然不会结束
2.删除数据库:
drop database 库名;

 #示例
 drop database a;

3.查询所有数据库:
show databases;

 #示例
 show databases;

3.1表的操作
** 二话不说!上表!下面的示例会用此表ooooo**

1.使用数据库: use 库名;

#示例
 use  hcf;

2.创建表: create table 表名(字段 字段类型(字段长度)…);

 #示例
 create table  hcf(id int(10),name varchar(20),high dauble(4,1));

3.修改(添加字段)表:alter table 表名 add column 字段名 字段类型(长度);

 #示例
 alter table hcf add column address varchar(33);

4.删除表:drop table 表名;只删除表里的内容

 #示例
 drop table hcf;

5.查看所有表:show tables;查看当前数据库中的所有表

#示例
 show tables;

6.查看表结构:desc 表名;

#示例
 desc hcf;

3.2表记录操作
1… 插入记录:insert into 表名 values (A); A:表示要和当前表中数据类型的位置对应,不可乱插哦

#示例
insert into hcf values(1000,’allow',185.5);

2.查询记录:select * from 表名;

#示例
select * from hcf;

3.修改记录:update 表名 set 字段名=新值;

#示例
update hcf set id=1001;

4.删除记录: delete from 表名;

#示例
delete from hcf;

3.3.字段约束
1.主键约束:primary key
特点:数据唯一性,非空性

#示例:
create  table  hcf(id int(10) primary key;

1.1:主键自增策略 :primary key auto_increment
特点:1.可以按顺序自动递增。2.被删除的行不能再使用,只能按顺序添加

#示例
create table hcf(id int(10) )primary key  auto_increment;

2.非空性:not null
特点:数据不能为空

#示例
create table hcf(name varchar(20))  not null;

3.唯一约束:unique
特点:数据不可以重复

#示例
create table hcf(id inta(10)) unique;

4.函数
lower(字段) 数据转小写

#示例
select  name, lower(name) from  hcf;

2.upper(字段) 数据转大写

#示例
select name,upper(name) from hcf;

3.length(字段) 数据长度

#示例
select length(name) from hcf;

4.sudstr(字段,A,B) 截取数据。A:开始截的位置。B:要截取的长度

#示例
select  name , substr(name,1,3) from hcf;

5.concat(字段,A) 末尾拼接数据。A:要拼接的内容

#示例
select name,concat(name,love) from hcf;

6.replace(字段,A,B) 数据替换。 A:字段里的数据会被B替换。B:所要替换的内容。

#示例
select  name,replace(name,'w','acb') from hcf;

7.ifnull(字段,A) 为空替换。A:要替换的内容

#示例
select ifnull(name,'super') from hcf;

8.round(字段) 四舍五入

#示例
select high,round(high) from hcf;

9.ceil 向上取整

#示例
select high,ceil(high) from hcf;

10.floor 向下取整

#示例
select high ,floor(high) from hcf;

5.条件查询函数
distinct 去除重复记录

#示例
select distinct name from hcf;

2.where 过滤记录。

#示例
select * from hcf where id=1000;#过滤id为1000的
select * from hcf where id=1000 and name='allow';#过滤id为1000,name为allow的,必须全满足。
select * from hcf where id=1000 or name='allows';#过滤id为1000,name为allows的,满足一个即可。
select name,id from hcf where name in('allow',1000);
select name,id from hcf where name not in('allow',1000);

3.like 模糊查询 (以后再给小姐姐表白不要这么洋气了,说中文多好直抒胸臆。要不然小姐姐又要揣摩你的心意了,女生的心理男人不懂啊哈哈哈哈哈哈)
通配符:1. % 代表0到n个字符;2. 下划线_ 代表一个字符

#示例
select * from hcf where  name like 'o%';#查询以o开头的
select * from hcf where name like '%o';#查询以o结尾的
select * from hcf where name like '%o%';#查询o在中间的
select * from hcf where name like ‘a__';#查询共三个字符并以a开头的(这里有两个下划线)

4.null 过滤null字段的值

#示例
select * from hcf where name is null;#过滤掉字段值为空的
select * from hcf where name not null;#过滤掉字段值不为空的

5.limit A 查看条数。A:想查看几条。
limit A,B ; A:从n+1开始展示。B:总共展示几行

#示例
select * from hcf limit 3;#查看3条
select * from hcf limit 1,2;# 从第二条开始展示,共展示两行

6.order by 升排排列
order by 字段 desc 降序排列
扩展:1.字母按字母顺序排列。2.数字递增排列。3.汉字按utf-8的码表顺序排列

   #示例
   select * from hcf order by id;#升序
   select * from hcf order by name desc;#降序

6.聚合函数
概述:求出字段中的最大值max(字段)、最小值min(字段)、平均值avg(字段)、求和sum(字段)、求个数count(字段\1*)
在这里就一起写了!!!!

#示例
select max(high) from hcf;#最大值
select min(high) from hcf ;#最小值
select avg(high) from hcf ;#平均值
select sum(high) from hcf ;#求和
#count()有三种方式
select count(*) from hcf;#底层优化过
select count(1) from hcf ;#和*效果一样
select count(id) from hcf;#效率不高哦,只统计非NULL的,存在误差


7.分组函数
1.group by 分组 语法:select 字段 A,max(字段B),avg(字段C) from 表名A group by 字段A;
解释:求出表名A的字段B和字段C的最大值与平均值,以字段A分组输出
2.having 过滤 语法:select 字段A,avg(字段B) from 表名A group by 字段A having avg(字段B)<100;
解释:求出表名A中的字段B的平均值并以字段A分组,然后判断输出平均值小于100的值

示例:
select high  ,avg(high)  from  hcf  
group  by high;
select  high  ,avg(high) from hcf
group by high
having  avg(high)>150;  

8.事务 transaction
1.概述:单个逻辑工作单位执行的一系列 操作,要么全执行,要么全不执行
2.四大特性ACID:
1)原子性:所有的事务中要么全执行成功,要么全失败.
2)一致性:在各个程序中都能保持数据都是一样的
3)持久性:通过事务可以永久存到数据库中
4)隔离性:在高并发的情况下用户之间的操作互不影响
3.隔离级别
1)读未提交:安全性差,可能发生数据问题,性能最好
2)读已提交:Oracle默认的隔离级别
3)可读重复性:MySQL默认隔离级别,安全性较好,性能一般
4)串行化:表级锁,效率低,安全性高,能并发
4.MySQL的隔离级别
1)开启事务:start transaction
2)结束事务:
1.commit :提交事务 多条SQL语句做的影响会持久到数据库中
2.rollback:回滚事务 多条SQL语句做的操作都将被撤销
5.事务处理
1)可以维护数据的完整性
2)MySQL默认数据库的事务是开启的,执行后自动提交
3)手动提交:先开启,写完SQL后,再手动提交
4)使用innodb数据库引擎的数据库或表才支持事务
6. commit/rollback
begin;语句;
commit/rollback
语句可以进行多条事务处理
7.外键约束 foreign key references
1.语法:foreign key(当前表主键) references 对方表名(对方主键);
tip:外键在哪里创建,哪里就是当前表
2.外键约束效果
1)子表的ID必须取自主表的ID
2)想要删除主表中的数据,必须先要删除子表中的数据
8.默认约束default : 值 字段类型() default 值
9.检查约束check : check(判断条件)

9.SQL优化
查询要用字段代替 *
避免在where子句中使用or来连接条件:使用or可能会造成索引失效,扫描全表
使用varchar代替char:varchar可变储节省空间,char声明储存大小,不足用空格补充
尽量使用数字代替字符串类型
查询尽量避免返回大量数据
使用explain分析SQL执行计划
创建字段索引
避免在where中对字段进行表达式操作
避免在where子句中使用!= 或 <>操作符
去重是过滤的字段尽量减少
where中使用默认值代替null

10.多表联查
10.1笛卡尔积
查询两张表的方式

SELECT * FROM  dept,emp

10.2 join 方式的连接
10.2.1内连接 inner join

取两张表的交集

SELECT * FROM emp e  
INNER JOIN empext t 
ON e.empno=t.empnpo  
WHERE e.ename='tony'

 

10.2.2左连接 left join
左表中的数据都出现,右边表没有数据一null填充

SELECT * FROM     emp e  
LEFT  JOIN empext  t 
ON  e.empno=t.empnpo  
WHERE  e.ename='tony'

10.2.3右连接 right join
右表中的数据都出现,左边表没有数据一null填充

SELECT * FROM  emp e  
RIGHT JOIN empext  t 
ON  e.empno=t.empnpo  
WHERE  e.ename='tony'

10.3子查询
又称之为嵌套查询,效率较低 ,就是把第一个SQL放在第二个SQL中.

SELECT deptno 
FROM emp 
WHERE  ename='tony'

SELECT * FROM emp 
WHERE  deptno =( 
SELECT deptno 
FROM emp 
WHERE  ename='tony' ) 

10.4多行子查询

SELECT * FROM emp WHERE job in ('经理','员工')

SELECT * FROM emp 
WHERE job in (SELECT distinct job FROM  emp)

标签:name,示例,必备,基础知识,high,hcf,MySQL,数据库,select
From: https://www.cnblogs.com/brandon-i/p/17004816.html

相关文章