Mysql

数据库操作

登陆

mysql -u root -p

退出登录

quit
或
exit

查看数据库

show databases

创建数据库

create database database_name default charset=utf8;

删除数据库

drop database database_name;

切换数据库

use database_name;

查看当前选择的数据库

select database();

表操作

查询完整的sql语句

select 
from 表名
where ....
group by ... 
having ...
order by ...
limit star,count

查看当前数据库中所有表

show tables;

创建表

auto_increment表示自动增长,只能是数字类型;
主键本身是用来唯一标识这一行,没有业务逻辑意义,所以是什么值不重要,只要唯一就行,所以如果是主键不需要修改.

create table 表名(列及类型);
如:
create table students(
	id int auto_increment primary key,
	sname varchar(10) not null
);
自关联:
create table areas(
	id int primary key,
	atitle varchar(20),
	pid int,
	foreign key(pid) references areas(id)
);

表创建后添加外键约束:
alter table scores add constraint stu_sco foreign key(stuid) references students(id) on delete cascade;
创建表时添加外键约束:
create table scores(
	id int primary key auto_increment,
	stuid int,
	subid int,
	score decimal(5,2),
	foreign key(stuid) references students(id),
	foreign key(subid) references subjects(id)
);

外键的级联操作

restrict(限制):默认值,抛异常
cascade(级联):如果主表的记录删掉,则从表中相关联的记录都将被删除
set null:将外键设置为空
no action:什么都不做
alter table scores add constraint stu_sco foreign key(stuid) references students(id) on delete cascade;
【on delete cascade】

修改表中字段,urd

alter table 表名 add|modify|drop 列名 类型;
如:
alter table students add birthday datetime;

删除表

drop table 表名;

查看表结构

desc 表名;

更改表名称

rename table 原表名 to 新表名;

查看表的创建语句

show create table '表名';

表中数据操作

查询

select * from 表名

聚合

count():统计表中有多少行,不会忽略null。
例如统计班级中有多少学生?select count(
) form student;

count(列名):不会统计null,只统计有此列有值的个数。

分组

group by 比如统计操场上有多少男生,多少女生。
第一步:分组,第二部:统计count(*)

where:分组前的筛选。
having:分组后的筛选。
分组后只能查被分组的列,聚合函数,其他不能查,查了报错🤢🤢

增加表内容

全列插入:insert into 表名 values(...)
缺省插入:insert into 表名(列1,...) values(值1,...)
同时插入多条数据:insert into 表名 values(...),(...)...;
或insert into 表名(列1,...) values(值1,...),(值1,...)...;
主键列是自动增长,但是在全列插入时需要占位,通常使用0,插入成功后以实际数据为准

修改表内容

update 表名 set 列1=值1,… [where 条件]

删除表内容

delete from 表名 [where 条件]

备份与恢复

  1. 数据备份
    进入超级管理员
    sudo -s
    运行mysqldump命令
    mysqldump –uroot –p 数据库名 > ~/备份文件.sql;
    按提示输入mysql的密码

  2. 数据恢复
    连接mysql,创建数据库
    退出连接,执行如下命令
    mysql -uroot –p 数据库名 < ~/备份文件.sql
    根据提示输入mysql密码

开发过程中需要的问题记录

连接查询

笛卡尔积会产生多余的数据条数,避免笛卡尔积要使用条件,至少有集合-1个条件约束

内连接

从任一方出发结果相同,连不上就放弃。内连接的两种方式(左,右内连接),sql默认用的是内连接😢
内连接的两种写法:

方式一
select * from student st,score sc where st.id=sc.id;
方式二
select * from student st inner join score sc on st.id = sc.id [where ...];

外连接

分主表,次表。
指定主表。
从外键表出发,结果与内连接相同,从主键表出发,结果与内连接可能同。
连不上置为null。

select * from student st left outer join score on sc st.id=sc.id [where ...]
select * from student st right outer join score on sc st.id=sc.id [where ...]

left outer join == left join outer可以省略,他俩是一个意思
on后面只能跟一个条件,其他的条件写到where中🎉😊

自连接

比如权限,上下级,商品分类,论坛贴吧

内置函数

ifnull

null参与运算,结果是null 避免这种情况,使用ifnull函数 ifnull(数值,0),把是null的数据替换成0。

trim 去除空格

select trim(’ a’);a

replace

select replace(‘abc123’,‘1’,‘def’)
select replace(原字符串,要替换的部分,替换成xx)

在这里插入图片描述

精度,保留六位小数

一般来讲:数据库中保留六位,页面上保留两位

sql_model_

select version();
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

mysql 增删一个字段

double类型的 DOUBLE(11,2)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值