mysql的基础

1.查看一张表的建表的语句

show create table tablename ;

2.查询语句

select 字段1,字段2,字段3 from tablename ;

3.条件查询(between ......and.... 使用的时候必须是左小右大,闭区间)

语法格式:select 字段 ,字段, from 表名 where 条件

注意:在模糊查询中%表示任意区多个字符,_表示任意一个字符

4. order  by  默认是升序 ,asc表示升序 ,desc表示的是降序,越靠前的字段越能起到主导作用,order by 是最后执行的

5.分组函数(所有的函数都是对某一组数据进行操作的)

SQL语句当中有一个语法规则,分组函数不可以直接使用在where子句当中

分组函数自动忽略null

count (*):不是统计某个字段中数据的个数,而是统计总记录条数(和某字段无关)

cunt(comm):表示统计comm字段中不为null 的数据总数

group by:按照某个字段或者某些字段进行分组

having:having 是对分组之后的数据进行再次过滤

分组函数一般都会和group by 联合使用,并且任何一个分组函数都是在group by 语句结束之后执行,当一条sql语句没有group by的话,整张表的数据会自成一组。

一个完整的DQL语句:

select     5

.....

from      1

......

where      2

......

group by     3

.....

having     4

....

order by     6

.....

distinct 关键字去除重复记录,只能出现所有字段的最前面

6.连接查询

内连接:假设A和B表进行连接,使用内连接的话,凡是A表和B表能够匹配上的记录查询 出来,这就是内连接,AB两张表没有主副之分,两张表是平等的。

外连接:假设A和B表进行连接,使用外连接的话,AB两张表中有一张是主表,一张是副表 ,主要是查询主表中的数据,捎带着查询副表,当副表中的数据没有和主表的数据匹配的上,副表自动模拟出null与之匹配。 

外连接的分类:

左外连接:表示左边这张表是主表

右外连接:表示右边这张表是主表

外连接主表的数据是必然显示出来的

7.什么是子查询?

select 语句当中嵌套select语句,被嵌套的select语句是子查询。

子查询可以出现在哪里:

select

.....(select)

from

......(select)

where

.....(select )

union 连接关键字  两个连接的表的列要一样

limit(分页查询可能要用到),语法机制:limit startIndex ,length  startIndex表示起始位置,length表示取几个。

8.创建以一个表的语法格式:create table 表名(

字段名1 数据类型

字段名2数据类型

字段名数据类型

);

9.删除数据

语法格式:     delete  from 表名 where条件;

注意:没有条件全部删除。


删除10部门数据?
delete from dept1 where deptno = 10 ;


删除所有记录?
delete from dept1;


怎么删除大表中的数据?(重点)
truncate table 表名; //表被截断,不可回滚。永久丢失。

删除表?

drop table 表名

char(效率比achar高) 和vachar(根据实际的长度来)

10. 插入语法格式:insert into  表名 (字段名1,字段名2,字段名3.....) values(值1,值2,值3....)

要求:字段的数量要和值得数量相同,并且数据类型要一样。 

11.什么是约束?常见的约束有哪些呢?

在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。

常见的约束有哪些呢?

非空约束(not null):约束的字段不能为NUIL

唯一约束(unique):约束的字段不能重复,但可以为null

主键约束(primary key):约束的字段既不能为NULL,也不能重复(简称K)外键约束(foreign key) : ...(简称FK)

检查约束(check):注慈oracle数据库有check约束,但是mysql没有,目前mysq1不支持该约束。

每页显示pagesize条记录:   第pageNo页:(pageNo - 1) * pagesize, pagesize

12.增删改查有一个术语:CRUD操作

reate(增)Retrieve(检索)update(修改)Delete(删除)

13.主键约束

主健相关的术语?


主键约束: primary key
主键字段: id字段添加primary key之后,id叫做主键字段主键值: id字段中的每一个值都是主键值。
主键的分类?

根据主键 字段的数量来划分:单一主键,复合主键(多个字段联合起来添加一个主键约束,一般不建议使用)

根据逐渐的性质来划分:自然主键:主键值最好就是一个和业务没有任何关系的自然数。

业务主键:主键值和系统的业务挂钩,例如:拿着银行卡的卡号做主键,拿着身份证号码作为主键。(不推荐用)最好不要拿着和业务挂钩的字段作为主键。因为以后的业务一旦发生改变的时候,主键值可能也需要随着发生变化,但有的时候没有办法变化,因为变化可能会导致主键值重复。

一张表的主键约束只能有1个

14.t student中的classno字段引用t_class表中的cno字段,此时t_student表叫做子表。t_class表叫做父表。

顺序要求:删除数据的时候,先删除子表,再删除父表。添加数据的时候,先添加父表,在添加子表。创建表的时候,先创建父表,再创建子表。删除表的时候,先删除子表,在删除父表。

外键可以为null,

外键字段引用其他表的字段的时候,被引用的字段必须是主键吗?

注意:被引用的字段不一定是主键,但至少有unique约束。

create table t_class (
cno int,进去看看可,

15. MyISAM这种存储引擎不支持事务。(节省空间)
MyIsAM是mysql最常用的存储引擎,但是这种引擎不是默认的。MyISAM采用三个文件组织一张表:
Xxx.frm (存储格式的文件)
Xxx.MYD (存储表中数据的文件)

x`xx.MYI(存储表中索引的文件)
优点:可被压缩,节省存储空间。并且可以转换为只读表,提高检索效率   

缺点:不支持事务。


16. Innodb(最安全)

优点:支持事务、行级锁、外键等。这种存储引擎数据的安全得到保障。表的结构存储在xxx.frm文件中
数据存储在tablespace这样的表空间中(逻辑概念),无法被压缩,无法转换成只读。
InnoDB支持级联删除和级联更新。
这种InnoDB存储引擎在MysQz数据库崩溃之后提供自动恢复机制。 
17.memory

缺点:不支持事务,数据容易丢失,因为所有数据和索引都是存储在内存当中。

优点:查询速度最快

18.事务

什么是事务?:一个事务是一个完整的业务逻辑单元,不可再分。
比如:银行账户转账,从A账户向s账户转账10000.需要执行两条update语句:
update t_act set balance = balance - 10000 where actno = 'act-o0update t_act set balance = balance + 10000 where actno = 'act-00
以上两条DM语句必须同时成功,或者同时失败,不允许出现一条成功,一条失败。T
要想保证以上的两条DMz.语句同时成功或者同时失败,那么就需要使用数据库的"事务机制"。

和事务相关的语句只有DML语句( inserct  delete update )

为什么?因为它们这三个语句都是和数据库当中的数据相关的,事务的存在是为了保证数据的完整性,还有安全性。

事务的四大特性:(ACID)

原子性:事务是最小的工作单元,不可再分。

一致性:事务必需保证多条DML语句同时成功或者同时失败。

隔离性:事务A与事务B之间有隔离。

持久性:持久性说的是最终数据必须持久化到硬盘文件中,事务才算圆满成功的结束

19.索引:

19.1、什么是索引?有什么用?
索引就相当于一本书的目录,通过目录可以快速的找到对应的资源。在数据库方面,查询一张表的时候有两种检索方式:

第一种方式:全表扫描
第二种方式:根据索引检索(效率很高)

19.2 索引为什么可以提高检索效率呢?
其实最根本的原理是缩小了扫描的范围。
索引虽然可以提高检索效率,但是不能随意的添加索引,因为索引也是数据库当中的对象,也需要数据库不断的维护。是有维护成本的。比如,表中的数据经常被修改这样就不适合添加索引,因为数据一旦修改,索引需要重新排序,进行维护。|

19.3  什么时候考虑给字段添加索引?(满足什么条件)数据量庞大。(根据客户的需求,根据线上的环境)
该字段很少的DML操作。(因为字段进行修改操作,索引也需要维护)

访字段经堂出现在where子句中。(经常根据那个字段查询)

19.4、怎么创建索引对象?怎么删除索引对象?

创建索引对象:
create index 索引名称  on  表名  (字段名);

删除索引对象:

drop index  索引名称   on  表名;


19.5     索引底层采用的数据结构是:B +Tree

索引的实现原理?
通过B Tree缩小扫描范围,底层索引进行了排序,分区,索引会携带数据在表中的"物理地址",最终通过索引检索到数据之后,获取到关联的物理地址,通过物理地址定位表中的数据,效率是最高的。
select ename from emp where ename = "SMITH';

通过索引转换为:
select ename from emp where物理地址= 0x3 ;
19.6   索引的分类?
单一索引:给单个字段添加索引
复合索引:给多个字段联合起来添加1个索引

主键索引:主键上会自动添加索引
唯一索引:有unique约束的字段上会自动添加索引....

19.7  索引什么时候失效?
select ename from emp where enaine like '%A%' ;
模糊查询的时候,第一个通配符使用的是%,这个时候索引是失效的。
 

 19.8  注意:主键和具有unique约束的字段自动会添加索引。根据主键查询效率较高。尽量根据主键检索。

19.9      查看sql语句的执行计划:
explain select ename ,sal from emp where sal = 5000;

20 . 视图

20.1  什么是视图?
站在不同的角度去看到数据。(同一张表的数据,通过不同的角度去看待)。
20.2   怎么创建视图?怎么删除视图?
create view myview as select empno , ename from emp;

drop view myview ;
注意:只有DQL语句才能以视图对象的方式创建出来。
20.3 对视图进行增删改查,会影响到原表数据。(通过视图影响原表数据的,不是直接操作的原表)可以对视图进行CRUD操作。

21. DBA命令
21.1 将数据库当中的数据导出
在windows的dos命令窗口中执行:(导出整个库)
mysqldump bjpowernode>D: \bjpowernode.sql -uroot -p333


在windows的dos命令窗口中执行:(导出指定数据库当中的指定表)
mysqldump bjpowernode emp>D: \bjpowernode.sql -uroot -p123
21. 2 导入数据
create database bjpowernode ;use bjpowernode ;
source D: l bjpowernode.sql

22.数据库设计三范式

第一范式:任何一张表都应该有主键,并且每一个字段原子性不可分。

第二范式:建立在第一范式的基础上,所有非主键字段完全依赖主键,不能 产生部分依赖。

第三范式:建立在第二范式的基础上,所有非主键字段直接依赖主键,不能产生传递依赖

提醒:在实际的开发中,以满足客户的需求为主,有的时候会拿冗余换执行速度。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值