MySQL-basic-review

数据库操作:

查看,新增,删除 使用,退出

> show databases;
> create database lvjing default character set utf8mb4 callate utf8mb4_general_ci;
> drop database lvjing;
> use lvjing;
> exit;

表操作:

删除线格式 查看,新增,删除 结构,重命名 修改字段

> show tables;
> create table jing(id int primary key auto_increment,name varchar(10))default charset=utf8;
> drop table jing;
> desc jing;
> rename table jing to ljing;
> alter table jing add column age int;
> alter table jing modify age varchar(10);  modify/change/drop

数据操作:

新增,删除,查询,修改 CRUD

> insert into jing values(),(); insert into jing () values(),();
> delete from jing where id = 1;
> select * from jing;
> update from jing set name = lvjing where id = 1;

数据类型:

char varchar
int
double decimal(9,2) number()
date time
图片/声音/视频 存本地地址

约束:

primary key
foreign key
auto_increment
not null
unique
int unsigned
check
default

函数:

upper() lower()
length()
subtr()
concat() concat_ws("-",a,a,a,a…) group_concat()
sname,group_concat(sid order by sid separator ‘-’) sid
replace()
round() ceil() floor()
uuid()
now() curdate() curtime() year,month,day,time,minute,second
last_day(now())
date_format(now(),’%Y-%m-%d %H:%i:%s’)
str_to_date(‘2014-06-14’,’%Y-%m-%d’)
\

where
or
distinct
like %
is null ifnull()
between and
limit 1,2
order by
as
聚合函数 count() max() min() sum() avg()
group by having
union union all
case when then else end
if(q,b,c)
timestampdiff(year,a,b)

子查询 : = in

表关联:

1:1
1:n
n:1
n:n 使用中间表存储两个表的主键(复合主键)

多表联查:

inner join 交集
left join 左联
right join 右联
on

索引:

create index index_name on tb_lvjing(id);
unique(phone)
id_phone(id,phone)
alert table emp drop index phone
show index from emp
explain 检查这个sql语句是否使用了索引
explain select * from teacher where tname = ‘易天’;

视图:

查询后的结果 创建一个视图, 下次查询相同的内容直接查视图就行

事务:

ACID 原子性,隔离性,一致性,持久性
隔离级别: 读未提交 读已提交 可重复读 串行化
并发问题: 幻读 脏读 不可重复度
回滚 : rollback

事务操作:

回滚: 删库之后执行一条查询show tables会报错,发生回滚
   	set @@autocommit=0;
   	begin;
   	savepoint lvjing;
   	执行语句 delete from jing; select * from jing; 出错
   	rollback lvjing;
   	release savepoint lvjing;
   	commit;
   	select * from lvjing;

sql定义:

	select distinct column,...
	agg_function(column or expression),...
	from [left_table]
	<join_type> join <right_table>
	on <join_condition>
	where <where_condition>
	group by <group_by_list>
	having <having_condition>
	order by <order_by_list>
	limit count offset count;

sql执行顺序:

1. from [left_table]
2. on <join_condition>
3. <join_type> join <reght_table>
4. where <where_condition>
5. group by <group_by_list>
6. agg_func(column or expression),...
7. having <having_condition>
8. select 
9. distinct column,...
10. order by <order_by_list>
11. limit count offset count;
  • where中不能使用聚合
  • where 和 having 中条件判断的范围 --> group by 前后

SQL优化:

 01. 索引  alter table lvjing add index index_name(name);
 02. 视图
 03. 先过滤表中的数据,  再进行分组 多表联查
4. 避免全表扫描 
 	 不使用select * ..(全表扫描)  使用具体字段 select id,name ..    
	 where中or也会全表扫描
5. 数据类型的使用
 	 字符串类型使用varchar 尽量不用cahr 占用内存
     使用数值类型代替字符串类型  例: 1-男 2-女 
6. like %
	 select id,name from lvjing where name like '吕%';
7. 索引失效
	 !=,<>,is null,is not null 使用这些会索引失效
	 distinct 过滤字段要少
	 where中对字段进行表达式操作
	 使用索引列上内置函数索引失效

8. 提升性能 优化表
	批量插入数据性能提升  比一条一条快  原因: 新增sql语句主要事务控制,多条需要多个事务的开启关闭
	分批删除数据   一次太多可能会造成锁表
	伪删除  1-正常 0-已删除
	group by 先过滤数据再分组
	where和order by中常出现的字段就创建索引。
	使用union all

SQL语句:

	mysql -uroot -proot
	status; --登录数据库后查看数据库版本
	mysqldump -uroot -proot 数据库名(jt) > 导出路径(d:/jt.sql) --导出数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值