【mysql数据库初级讲解】

mysql学习
数据库概念:
1 关系型数据库:
oracle、mysql(mariadb)、sqlite3数据库
2 非关系型数据库(NoSQL):

1. sql语句

:(专门用来操作关系型数据库的)
mysql -u root -p密码 -hip -P端口号 #进入mysql数据库
show databases; #展示库
show tables; #展示表
use 库名; #进入库
use 表名; #进入表
create database 库名 charset=utf8; #创建库
drop database 库名; # 删除库
create table 表名(字段 数据类型 [约束],字段2 数据类型 [约束]…); #创建表
desc 表名; #查看表结构

alter table 表名 add 字段 数据类型 【约束】【first(最前面) after(最后面)】; #修改字段
alter table 表名 drop 字段名称; #删除字段

alter table 表名 modify 字段 字段类型 【约束类型】 #修改表字段的类型和约束 不可用于修改字段的名称

alter table 表名 change 老字段名称 新字段名称 字段类型 【约束类型】; #修改字段的名称和类型以及约束

rename table 旧表名 to 新表名;#重新命名表名称

对表格中数据操作CRUD:
insert into 增
insert into 表名(字段1,字段2,字段3…) values(值1,值2,值3…)
注意字段和值是按照位置一一对应的
insert into 表名(字段1,字段2,字段3…) values(值1,值2,值3…) , (值11,值22,值33…)

select 查
select 字段名1,字段名2 from 表名

select distinct 字段名 from 表名; #去重(其实就是select语句中多加了一个distinct)

select 要展示的查询的字段信息 from 表名 where 字段名>值; #大于 小于 等于等条件判断 在where后的多个条件之间可以用and or来连接

select * from 表名 where 字段名 between 值 and 值2 #查询字段名的值到值2之间所有信息

select * from 表名 where 字段名 in (值1,值2) #查询字段信息有没有是值1或者值2的

select * from 表名 order by 字段名 desc; #asc 默认升序 desc降序

select * from 表名 where 字段名 like “%” # %为任意多位 _为任意一位

分页
select * from 表名 limit 5 #若果写一个参数 表示获取一个表格的前几条
select * from 表名 limit 2,3; #第一参数表示跳过几条数据 第二个参数表示获取几条数据

分组group by
select * from 表名 group by 字段名; #根据字段名分组

聚合函数(一般配合分组使用)
select count(字段名或者*) from 表名 #查看此次查询信息的所有条数
select count(字段名或者*),字段名2 from 表名#查询字段名的总共条数和字段名2的详细信息
select sum(字段名) as “别名” rrom 表名 #查询相关字段名的总和
select avg(字段名) as “别名” rrom 表名 #查询相关字段名的平均值
select max(字段名) as “别名” rrom 表名 #查询相关字段名的最大值
select avg(字段名) as “别名” rrom 表名 #查询相关字段名的最小值

if函数语句查询
select * ,if(e1,a1,a2) from 表名 #当满足e1条件的,输出a1,当不满足e1条件的 信息后续输出a2,a1和a2是代表表格中的输出内容

case:
select e_pname,case mgr
when 条件1 rhen “语句1”
when 条件2 then “语句2”
when 条件3 then “语句3”
end as “列标题k” from 表名
#满足条件1的信息的“列标题k”内容显示语句1,满足条件2的信息的“列标题k”内容显示语句2,

补充:
having一般配合group by使用

总结构:
select * from 表名 where 条件 group by 字段名 having 条件 order by 字段名 limit 参数一,参数二

多表关联查询
表之间的关系:一对一 一对多 多对多
一对一: 可以通过主键和另一个表的主键关联实现,也可以通过外键关联主键实现,外键要添加唯一约束
例子:create table customer(id int primary ke auto_increment,cname char(20));
create table idcard(id int primary auto_increment,cardno varchar(20),
fk_cusd_id int unique,
foreign key(fk_cusd_id) references customer(id)
)

外键的表示方式为: foreign key(本表的字段名) references 另一个表的表名(要关联的字段)

一对多:(想对一对一就少了一个唯一约束)
create table album(id int primary key auto_increment,aname carchar(32));

create table music(id int primary key auto increment,mname varchar(32),fk_alb_id int,foreign key(fk_alb_id) references music(id))

- 连接查询(重点)

内连接查询(可以通过where语句代替):
显示写法:
select * from 表1 inner join 表2 表1.表1字段=表2.表2字段;# 这是内连接 注意一定要找到两个表之间存在关系的字段
隐士写法(用的较多):
select 表一的字段,表2的字段 where 表1字段名=表2字段名

外连接:
左外连接
select * from 表1 left join 表2 on 表1字段=表二字段
#以关键字左侧的表为基表做查询 首先保证左侧表中数据查询到的情况下显示,如果左侧的表有和右侧表匹配不到的,也会显示出来,只不过匹配不到的数据显示为空,而内连接只会显示匹配到的数据,匹配不到的数据是不会显示的
右外连接:
select * from 表1 right join 表2 on 表1字段=表二字段
#以关键字右侧的表为基表做查询 首先保证右侧表中数据查询到的情况下显示,如果右侧的表有和左侧表匹配不到的,也会显示出来,只不过是显示为空

嵌套子查询:
单行子查询:
select * from 表名 where 字段名= (select语句 )#先执行select语句 在执行主体select语句
多行子查询:
select * from 表名 where 字段名 in (select语句 )#先执行select语句 在执行主体select语句

update 改:
update 表格名 set 字段名=值 where 字段名=值 ;
注:where 字段名=值就是个限定条件

delete from 删
delete from 表名 where 条件;

**2 **数据类型

int 、char(num)、 varchar(num)、 text 、date、datetime

3. 约束类型

唯一约束:一个字段的所有值不能存在重复
非空约束:字段的值不能为空unique
主键约束 primary key:唯一且非空
外键约束foreign key:主键所在表的字段和外表的主键是存在关联的
默认约束default:通过关键字给字段值设置默认值,若不传值时,默认使用默认值
自增约束auto_increment:一般配合主键使用,自增+1
无符号unsigned:

3. 三大范式
第一 要求每一列都是不可分割的原子,即是不可分割的最小单位
第二 非主键都要依赖于主键

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值