数据库 | MySQL基本操作

  • 命令
    以;结尾
    mysql -u root -p 输入密码进入数据库
数据库操作

显示数据库列表:show databases;
创建数据库:create database 数据库名 charset=utf8;
删除数据库:drop database 数据库名;
切换数据库:use 数据库名;
查看当前选择的数据库:select database();

表操作

首先进入某数据库 use database1
show tables;
create table 表名(列名 列类型 约束1 约束2,列名 列类型…);
desc 表名;
drop table 表名;
alter table 表名 add 列名 类型 约束;
alter table 表名 drop 列名;
alter table 表名 change 原列名 新列名 列类型 约束;
alter table 表名 rename 新表名

数据操作

查看数据:select * from table1*可改为(列名1,列名2…)

  1. 插入数据:
    插入整列数据:insert into table1 values(value1,value2,value3...)
    指定列插入:insert into table1(row1,row2...) values(value1,value2...)
    insert into table1 set row1=value1, row2=value2...
    插入多条数据:insert into table1 values(value1,value2,value3...),(value1,value2,value3...),...
  2. 修改数据
    update table1 set row1=value1,row2=value2,... where 条件
  3. 删除数据
    delete from table1 where 条件
外键
  1. 定义外键
    constraint 自定义的约束名 foreign key(作为外键的列名) references 链接的表名(链接的列名) ON DELETE RESTRICT ON UPDATE RESTRICT;
  2. 添加外键
    alter table table1 add constraint 约束名 foreign key(外键列名) references 链接的表名(链接的列名);
  3. 删除外键
    alter table table1 drop foreign key 约束名;

在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on update/on delete子句。

进阶命令

列别名:select row1 as r from table1

where条件:
<、>、=、!=、<>
and、or、not
like ‘d%’ 以d开头后面任意字符
like ‘_d’ 以d结尾,d前一个字符
in (1,3,7) 在[1,3,7]中
between(10,20) 在[10,20]之间
is null 为null

select count(*) from table1
查看table1的行数

select max(id) from table1
select max(id) from table1

select sum(id) from table1
select avg(id) from table1

select row1,row2 from table1 group by row3,row4,row5
按照列3、4、5分组,显示列1、列2

select * from table1 order by row1
按列1排序,默认升序
select * from table1 order by row1 desc
按照列1排序,降序

select * from table1 limit 10,10
从第十页开始查看10行数据

视图
  1. 是啥
    视图是一张虚拟表(操作等等同表)
    视图中的数据来源于真实表
    修改视图中数据真实表中数据也会发生变化
  2. 为什么要有视图?
    找账户wsm805@qq.com 有几个角色
    1, 现在账户表中找wsm805@qq.com 对应的id
    2, 去角色表中找1中id所对应的角色
    有了视图之后只需要一步:在视图中直接找
    简化表查询操作
  3. 视图创建
    在数据库可视化软件navicat等中创建
    在这里插入图片描述
函数、存储过程

存储过程说白了就是把经常使用的SQL语句或业务逻辑封装起来,预编译保存在数据库中,当需要的时候从数据库中直接调用,省去了编译的过程,提高了运行速度;
存储过程实现的过程要复杂一些,而函数的针对性较强;
存储过程可以有多个返回值,而自定义函数只有一个返回值;
存储过程一般独立的来执行,而函数往往是作为其他SQL语句的一部分来使用;

调用函数:select func1(xx,xx)
调用过程:call

索引

主键默认有索引。

有索引的列以btree或hash存储,便于查询,无须逐条数据查看;
但修改数据时,数据库会对索引进行维护,维护成本高。

列数据多查询少修改时设置索引;
多修改少查询时不设置索引。

事务

保证数据的安全

MySQL中只有使用innerDB引擎才支持事务
ACID特性
原子性:要么全部执行,要么全部不执行
一致性 :事务开始前结束后对数据的完整性不会破坏
隔离性 :允许多个并发事务同时对数据的读写,防止多个并发执行引起的不一致
持久性:事务处理结束后,对数据的修改是永久的

begin;	开始
update table1 set xxx;		操作
rollback;		撤销本次操作并退出
commit;		操作成功时提交,保存本次操作并退出,操作在数据库中生效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值