MySQL记录文档

终端打开和使用mysql命令

  • 管理员模式下,net start mysql打开数据库

  • 然后,输入mysql -u root(用户名) -p 123456(密码),进入mysql;

  • show databases; 看看有哪些数据库;

  • use 数据库名称(如果想要创建一个数据库,使用create databases 名称;来创建)

  • ....

  • 退出数据库时使用quit;命令;

  • 关闭mysql服务,net stop mysql

select version();查看sql的版本号 select database();查看正在使用的数据库 show databases;查看sql中有哪些数据库; creat database 库名;创建数据库 source 绝对路径(不能有中文);将文件导入数据库,执行脚本文件。 use 库名;使用数据库 show 表名;展示库中的表名 select * from 表名;查看表中的内容(*效率低,可读性差) desc(describe) 表名;查看表的结构

单行处理函数

需要注意 isnull()只能判别是否为null,ifnull(字段,替换值)可以用来替换。

多行处理函数不对null进行处理。max(),min(),count(),avg(),sum();

count((具体字段)不包括null,count(*)包含null;

单表查询执行顺序: from ->where ->group by->having->select-> order by

格式:

select ....

from ....

where ....

group by ...

having ...不能单独使用,与group by搭配使用

order by ...

模糊查询

......where 字段名 like '%t' 以t结尾的字段值

like 't%'t开头的 like '_A%' 第二个是A的字段值。

sql语句

DDl create drop alter truncate 对表的结构进行操作

DML insert delete update select

insert常与into搭配使用

update 表名 set 字段=值 where 条件

delete 删除效率低,可以通过TCL(事务控制语言) rollback 恢复数据;truncate table 表名,删除整张表,不能恢复。

复制表格

create table 表名2 as select * from 表名1;

四种约束

检查约束check(MySQL不支持,Oracle支持)

not null, unique, primary key(pk主键约束), foreign key(外键约束fk)

pk=not null +unique

主键又分自然主键和业务主键,一般常用自然主键,常与auto—increment搭配使用

fk最起码具备unique,可以为null,格式 class(

no int primary key

)

student (

num int ,

foreign(num) references class(no)

)

先创父表,再创子表,先删子表,再删父表。class 是student的父表。

查看存储引擎

show engines \G;

show create table 表名;显示存储引擎以及一些默认表结构;

事务语言(transaction control language TCL)

事务是最小单位,具有完整的业务逻辑

事务四个特性

原子性、一致性、隔离性、持久性

两个事物同时开启

 select @@tx_isolation; -查询当前的隔离级别
 set session transaction isolation level read uncommitted; -设置当前会话隔离级别为“读未提交”

读未提交 read uncomitted :又叫脏读,B事务只读A事务未提交的,缺点:不能读已提交的

读已提交 read comitted :解决了脏读,但不能重读读,A事务改变提交后,B事务读取的内容就会改变(Oracle默认)

可重复读 repeatable read:解决了不能重复读,但每次读取的内容都一样,所谓“幻读”,一旦B事务开启,读取内容就不变了(MySQL默认)

序列化/串化 serializable :解决了所有问题,按照序列排序,A事务开启之后,B事务不能干预

start transaction; ||开启事务

对表的操作DML insert delete update

commit 之后事务结束(成功)

rollback回滚到事务开启的状态,事务结束

索引

主键或具有唯一性的字段,自动添加索引;

create index 索引名 on 表名(加索引字段);

drop index 索引名 on 表名;

explain select * from 表名 where 字段 =字段值;查看某字段是否使用索引

底层是由B-tree构建的;

1.以%开始或2.使用or时,两字段有无索引时,索引失效;

3.复合索引,左侧有效,右侧无效。

4.索引字段参加运算;

5.索引使用函数处理

......

索引分类

单一索引,复合索引,主键索引,唯一性索引

视图

修改视图会影响原表;作用:简化开发

create view 视图名 as sql语句;

drop view 视图名;CRUD 增删改查;

C :create R:retrive

U: update D:delete

DBA

导入数据库:source 路径 后面没有;

导出数据库 : sqldump 库名 > 路径 -uroot -p密码;

数据库三范式

第一范式;有主键;

第二范式:在第一范式的基础上,非主键唯一依赖主键;

第三范式:在第二范式的基础上,不得传递依赖属性;

数据库设计

多对多,三张表,外键有两个;

一对多,两张表,外键有一个;

一对一,两张表,外键唯一;

结语

数据库的设计更多是为了满足客户的需求,三范式只是理论上的,有时候可以用冗余换速度,同时也减少了数据库的复杂。

四种连接的定义与区别

left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。

  right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。

  inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。

  full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。

内连接:

 SELECT <select_list>
 FROM Table_A A
 INNER JOIN Table_B B
 ON A.Key = B.Key

左连接:

 SELECT <select_list>
 FROM Table_A A
 LEFT JOIN Table_B B
 ON A.Key = B.Key

右连接:

 SELECT <select_list>
 FROM Table_A A
 RIGHT JOIN Table_B B
 ON A.Key = B.Key

外连接:

 SELECT <select_list>
 FROM Table_A A
 FULL OUTER JOIN Table_B B
 ON A.Key = B.Key

左连接-内连接:

 SELECT <select_list>
 FROM Table_A A
 LEFT JOIN Table_B B
 ON A.Key = B.Key
 WHERE B.Key IS NULL

右连接-内连接:

 SELECT <select_list>
 FROM Table_A A
 RIGHT JOIN Table_B B
 ON A.Key = B.Key
 WHERE A.Key IS NULL

外连接-内连接:

 SELECT <select_list>
 FROM Table_A A
 FULL OUTER JOIN Table_B B
 ON A.Key = B.Key
 WHERE A.Key IS NULL OR B.Key IS NULL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值