连接mysql在黑窗口
mysql -u root -p #登录MySQL
SQL语句分类
数据库操作
创建数据库
create database [if not exists] db_name;
1.character set :指定数据库采用的字符集,如果不指定字符集,默认utf8
2,collate:指定数据库字符集的校对规则(常用utf8_bin区分大小写)
删除数据库
drop database 数据库名;
select * from 表名;
展现所有数据库
show databases;
数据备份
mysqldump -u root -p -B 数据库1 数据库2 数据库n>文件名.sql
恢复数据库
source 文件名;
表的操作
创建表
create table 表名( field1 datatype field1 datatype field1 datatype ); character set :字符集 collate:校对规则 engine:引擎 field:指定列名 datatype:指定列类型 character set :如不指定则为所在数据库字符集 collate:如不指定则为所在数据库校对规则 engine:存储引擎
添加数据
insert into 表名 values(数据,数据,数据);
修改表操作
alter table 表名 add 列名 数据类型;
删除列
alter table 表名 drop 列名;
列名修改
alter table 表名 change '原列名' '新列名' 数据类型
插入数据
insert into 表名 (数据类型,数据类型,......);
删除表中元素
delete from 表名;//删除所有元素 delete from 表名 where 条件 //删除某一行
更改表中元素
update 表名 set 列名=要修改为 where
Select语句
使用order by 子句排序查询结构
select * from 表名 order by 列名 asc|desc; //ASC 升序| desc 降序
distinct去重关键字
MySQL类类型
数值类型
整型
1,tinyint:一个字节 2,smallint:两个字节 3,mediumint:三个字节 4,int:四个字节 5,bigint:八个字节
小数类型
1,float:单精度4字节 2,double:双精度8字节 3,decimal[M,D]:
文本类型
1,char:0~255 2,varchar:0~65535 4,text 4, longtext
二进制数据
1,blob 2,longblob
日期类型
1,date【日期 年月 日】 2,time【时间 时分 秒】 3,datetime【年 月 日时分秒 YYYY-MM--DD HH:DD:SS】
4,timestamp:时间戳
函数
统计函数
select count(*) from 表名;
时间函数
1,查询时间
select now();//查询当前时间带时分秒 select curdate();//查询当前时间不带时分秒
2,str_to_date:将字符通过指定格式转化为日期
3,date_format:将日期转为字符
加密函数
流程控制函数
MySQL表查询增强
MySQL子查询
子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询
单行子查询是指只返回一行数据的子查询语句
多行子查询指返回多行数据的子查询,使用关键字in
自我复制
表内容复制
insert into 表名 select * from 需要复制的表名;
表结构复制
create table 表名 like 需要复制的表名;
合并查询
union all将两个查询结果合并,不会去重
union将两个查询结果合并 并去重
MySQL表外连接
左外连接
select ..... from 表1 left join 表2 on 条件;
右外连接
select ..... from 表1 right join 表2 on 条件;
外键约束foreign key(外键)
1,外键指向的表的字段,要求是primary key 或者是unique
2,表的类型是innodb,这样的表才支持外键
3,外键字段的类型要和主键的类型一致
4,外键字段的值,必须在主键字段中出现过,或者为null
5,外键关系一旦建立,数据不能随意更改
check关键字
用于强制行数据必须满足的条件,假定在sal列上定义了check约束,并要求sal列值在1000·2000之间如果不再1000·2000之间就会提示出错
MySQL索引优化
创建索引
create index 索引名称 on 表名(列创建索引);
查询表是否有所欲
show indexes from 表名;
添加唯一索引
create unique index 索引名 on 表名(列名);
添加普通索引
create index 索引名 on 表名(列名);
删除索引
drop index 索引名 on 表名;
删除主键索引
alter table 表名 drop primary key;
MySQL事务
基本概念
事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败
重要操作
1,start transaction :开始一个事务
2,savepoint:保存点名 ----设置保存点
3,rollback to :保存点名---回退事务
4,rollback: 回退全部事务
5 ,commit :提交事务,所有的操作生效,不能退回
MySQL事件隔离
查看隔离级别
select @@transaction_isolation_isolation;//查看当前会话隔离级别 select @@global.transaction_isolation_isolation;//查看系统当前隔离级别
设置隔离级别
set session transaction isolation level 隔离级别;// set global transaction isolation level 隔离级别
MySQL引擎
基本介绍
1,MySQL的表类型由存储引擎(storage Engines)决定,主要包括MyISAM,innoDB,Memory等
2,MySQL数据表主要支持六种类型,分别是:CSV,Memory,ARCHIVE,MRG_MYISAM,MYUSAM,innoDB
3,这六种又分两类,一类是“事务安全型”比如:InnoDB;其余都属于第二类,称为 “非安全事务型”
如何使用存储引擎
1,如果你的应用不需要事务,处理的只是基础的CRUD操作,那么MyISAM是不二选择,速度快
2,如果需要支持事务,选择InnoDB
3,,Memory存储引擎就是将数据存储在内存中,由于没有磁盘I./O的等待,速度极快,但是由于是存储引擎,所做的如何修改在服务器重启之后都消失
指令修改存储引擎
alter table 表名 engine=引擎名;
MySQL视图
1,视图是根据基本来创建的,视图是虚拟的表
2,视图也有列,数据来自基表
3,通过视图可以修改基表数据
4,基本的改变,也会影响视图的数据
视图的基本使用
1,create view 视图名 as select 语句
2,alter view 视图名 as select语句
3,show create view 视图名
4,drop view 视图名1 ,视图名2
创建视图
create view 视图名 as select 列1,列2 from 表名;
查看视图
desc 视图名;
查看创建视图指令
show create view 视图名;
删除视图
drop view 视图名
MySQL用户管理
创建用户
create user '用户名' @ '允许登录位置' identified by '密码'
修改自己的密码
set password =password ('新密码');
修改别人的密码
ALTER USER '用户名'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '新密码';
MySQL权限管理
回收用户权限
revoke select,.... on 数据库名.表名 from '用户名'@'登录位置'
删除用户
drop user '用户名'@'登陆位置';
用户管理细节
在创建用户的时候,如果不指定host,则为%,%表示所有ip都有连接权限
create user 用户名;