- 命令
以;结尾
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…)
- 插入数据:
插入整列数据: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...),...
- 修改数据
update table1 set row1=value1,row2=value2,... where 条件
- 删除数据
delete from table1 where 条件
外键
- 定义外键
constraint 自定义的约束名 foreign key(作为外键的列名) references 链接的表名(链接的列名) ON DELETE RESTRICT ON UPDATE RESTRICT;
- 添加外键
alter table table1 add constraint 约束名 foreign key(外键列名) references 链接的表名(链接的列名);
- 删除外键
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行数据
视图
- 是啥
视图是一张虚拟表(操作等等同表)
视图中的数据来源于真实表
修改视图中数据真实表中数据也会发生变化 - 为什么要有视图?
找账户wsm805@qq.com 有几个角色
1, 现在账户表中找wsm805@qq.com 对应的id
2, 去角色表中找1中id所对应的角色
有了视图之后只需要一步:在视图中直接找
简化表查询操作 - 视图创建
在数据库可视化软件navicat等中创建
函数、存储过程
存储过程说白了就是把经常使用的SQL语句或业务逻辑封装起来,预编译保存在数据库中,当需要的时候从数据库中直接调用,省去了编译的过程,提高了运行速度;
存储过程实现的过程要复杂一些,而函数的针对性较强;
存储过程可以有多个返回值,而自定义函数只有一个返回值;
存储过程一般独立的来执行,而函数往往是作为其他SQL语句的一部分来使用;
调用函数:select func1(xx,xx)
调用过程:call
索引
主键默认有索引。
有索引的列以btree或hash存储,便于查询,无须逐条数据查看;
但修改数据时,数据库会对索引进行维护,维护成本高。
列数据多查询少修改时设置索引;
多修改少查询时不设置索引。
事务
保证数据的安全
MySQL中只有使用innerDB引擎才支持事务
ACID特性
原子性:要么全部执行,要么全部不执行
一致性 :事务开始前结束后对数据的完整性不会破坏
隔离性 :允许多个并发事务同时对数据的读写,防止多个并发执行引起的不一致
持久性:事务处理结束后,对数据的修改是永久的
begin; 开始
update table1 set xxx; 操作
rollback; 撤销本次操作并退出
commit; 操作成功时提交,保存本次操作并退出,操作在数据库中生效