MySQL-基础(常用命令)

使用命令行连接MYSQL数据库

1.mysql -h主机名 -P端口 -u用户名 -p密码

启动数据库的方式

1.net stop mysql服务名

2.net start mysql服务名

删除已经安装好的mysql服务

sc delete mysql

备份数据库

mysqldump -u用户名 -p -B数据库1 数据库2 数据库n>(可以带path)文件名.sql

恢复数据库

Sourcr 文件名.sql

备份表

mysqldump -u用户名 -p 数据库1 表1 表n>(可以带path)文件名.sql


数据库的基本操作

创建数据库:create database [if not exists] 数据库名

(`character set` 指定字符集不指定默认`utf-8`,`collate` 指定效验规则)指定效验规则:`utf8_bin`[区分大小写]`utf8_general_ci`[不区分大小写]默认;

删除数据库:drop database [if not exists] 数据库名字;

查看数据库:show databases:

查看数据库创建的语句:show create databases 数据库名称;


表的基本操作

创建表:create table 表名;

:create table 表名(
  字段名 字段类型,
  字段名 字段类型)
  character set 字符集 collate 校对规则 engine 引擎;

创建数据表:create table 表名(定义字段id int comment’解释’);

删除数据表: drop table 表名;

删除行: delete from 表名where 字段= 值;

查看数据表:show tables [like 匹配]

修改数据表: alter table 表名 modify

更换数据表的名称:alter table 旧表名 rename [to|as] 新表名;

更换数据表的名称:rename table 表名 to 新表名

修改表选项: alter table 表名 表选项 [=] 值;

修改表中数据:update 表名 set 字段=值 where 字段=值

创建临时表: create temporary table 表名(定义字段id int comment’解释’);

查看表结构:desc 数据表名 指定字段名(可以不指定);

删除列:alter table 表名 drop (列名);

查看数据表的创建语句:show create table 表名;

查看数据表结构:show [full] columns from 表名;

表的复制: insert into 新表(所有字段) select 字段 from 表

表的自我复制(蠕虫复制):insert into 表 select * from 表

复制列字段:create table 新表 like 旧表;

删除一张表重复记录(去重):先复制字段:innsert into 表名 select distinct * from 表名

更改字段的数据类型:alter table 表名``modify 字段名 新的字段类型 default '' not null;

插入值:insert into 表名的value

修改表

alter table 语句追加,修改,或删除列的语法

添加列:alter table tableName add(colum datatype [default expr])

修改列:alter table tableName modify(colum datatype [default expr])

删除列:alter table tableName drop(colum datatype [default expr])

修改列:alter table db_name.table_rename change id table_id int

修改字符集:alter table tableName character set 字符集

查看表结构:desc tablename;


函数操作

字符串操作

返回字符串字符集:select charset(字段) from 表名; 连接拼接多个列:select concat(字段,’拼接内容’ ,字段) from 表名; 把字符串转大写:select ucase(字段) from 表名; 把字符串转小写:select lcase(字段) from 表名; 从字符串左/右边去n个字符:select left/right(字段,n) from 表名; 替换字符串:select replace(字段,’原名’,’新名’) from 表名


数学函数

绝对值:ABS(num)

十进制转二进制:BIN(数字)

转十六进制:HEX(数字)

进制转换:CONV(数字,进制,转成的进制)

向上取整:CEILING(数字)

向下取整:FLOOR(数字)

保留小数点位(四舍五入):FORMAT(小数,需要保留几位)

求最小值:least(一些数字)

求余:mod(数字,模数)

圆周率:pi()

平方根:sqrt()

幂运算:pow()

返回一个随机数:rand()范围是0-v-1.0


日期函数

获取当前日期current_date()

当前时间:current_time()

获取当前时间戳:current_timestamp()

返回datetime的部分日期:date(datetime)

在原有时间加上日期或时间:date_add(原有时间,interval 时间 时间类型)

在原有时间减少日期或时间:date_sub(原有时间,interval 时间 时间类型)

两个日期的间隔(天,可以出365返回年):datediff(大时间1,小时间2)

返回秒数:unix_timestamp()

把数字转换时间:from_unixtime(数字,"%Y-%m-%d)


加密函数

查询当前用户和ip:user()

查数据库名称:database()

为字符串返回一个md5 32的字符串(用户密码)加密;md5(str)

从原文密码str计算返回密码字符集:password(str)

比较函数

比较一个值是否在自定集合:in(数,数)

是否不在:not in()

聚合函数

字段数量(不统计null):count()

和:sum()

平均值:avg()

控制函数

流程控制
if(真/假,返回第一个,第二个)

ifnull

`case 条件表达式 when 表达式1 then 语句  end case`
循环控制
loop

repeat

while

单表查询

语句顺序:select * from 表 group by(分组) 表达式 having(过滤) 表达式 order by(排序) 表达式 limit(分页) 表达式;

分页查询:select...... limit start,row;从start+1开始查到row结束

清空数据:truncate [table] 表名;

排序
单字段排序:`select * from 数据表名 order by 字段名 [asc升|desc降]`

多字段排序: `select * from 数据表名 order by 字段名 [asc升|desc降], 字段名2 [asc升|desc降]`

限量:select [select 选项] 字段列表 from 数据表名 [where表达式] [order by 字段] limit [offset(从什么记录开始),] 记录数

限量后更新数据: update [select 选项] 字段列表 from 数据表名 [where表达式] [order by 字段] limit [offset(从什么记录开始),] 记录数

限量后删除数据: delete [select 选项] 字段列表 from 数据表名 [where表达式] [order by 字段] limit [offset(从什么记录开始),] 记录数

分组
分组统计:`select *|字段 |选项  from 表名  [where  表达式] group by 字段名`

分组排序:`select *|字段 |选项  from 表名  [where  表达式] group by 字段名` `[asc升|desc降]`

多分组统计:`select *|字段 |选项  from 表名  [where  表达式] group by 字段名` `[asc升|desc降],字段名[asc升|desc降]`

回溯统计:`select *|字段 |选项  from 表名  [where  表达式] group by 字段名` `[asc升|desc降],字段名[asc升|desc降]..... with rollup;`

统计筛选:`select *|字段 |选项  from 表名  [where  表达式] group by 字段名` `[asc升|desc降],字段名[asc升|desc降]..... with rollup having 条件`;

多表查询

连接查询

子查询

合并(联合)查询:select ...... union [all(不去重)|distinct(去重)] select......

交叉连接:select 字段 from 表1 cross join 表2

内连接:select 字段 from 表1 join 表2 on 匹配条件

左/右连接:select 字段 from 表1 left/right join 表2 on 匹配条件


MySQL约束

约束分为:not null(非空),unique(唯一),primary key(主键) ,foreign key(外键) ,check(检查)

主键:字段名 字段类型 pk

唯一:字段名 字段类型 unique

外键:字段名 字段类型 foreign key(本表) references 主表(字段id)

检查:字段名 字段类型 check(检查条件)


索引[1]

创建一个索引:create index 索引名称 on 表名 (列名);alter table 表名 add index 索引名 (列名)

查看索引:show indexes from 表名show keys from 表名desc 表名

删除索引:drop index 索引名 on 表名 (字段)

删除主键索引:alter table 数据表 drop pk 或者 drop index 'primary' on 数据表

删除自动增长索引:alter table 数据表 modify 字段名 字段类型

主键索引(添加pk后会自动变成索引):alter table 表名 add primary key (列名)

唯一索引:create [unique] index 索引名称 on 表名 (列名)

普通索引:index

全文索引(一般使用solr和elasticSearch框架):


事务[//]: # (事务的(ACID)特性:1.原子性2.一致性3.隔离性4.持久性)

ACID

事务的四大特性(ACID)[//]: # (1、原子性(Atomicity)事务是一个不可分割的单位,事务中的所有SQL等操作要么都发生,要么都不发生。2、一致性(Consistency)事务发生前和发生后,数据的完整性必须保持一致。3、隔离性(Isolation)当并发访问数据库时,一个正在执行的事务在执行完毕前,对应其他的会话是不可见的,多个并发事务之间的数据是相互隔离的。备份的参数 --single-transaction4、持久性(Durability)一个事务一旦被提交,它对数据库中的数据改变就是永久性的。如果出了错误,事务也不允许撤销,只能通过“补偿性事务”)

(基本操作)

开始一个事务:start transaction;

设置保存点:savepoint 保存点名;

回退事务:rollback to 保存点名;

回退全部事务:rollback;

提交事务:commit;

事务管理

事务隔离级别

脏读:可以读取到其他用户没有提交的数据变化

不可重复读:在同一事务内,不同的时刻读到的同一批数据可能是不一样的,可能会受到其他事务的影响,比如其他事务改了这批数据并提交了

幻读:
事务隔离级别脏读不可重复读幻读加锁读
读未提交(read-uncommitted)可能可能可能不加锁
读已提交(read-committed)不可能可能可能不加锁
可重复读(repeatable-read)不可能不可能(有)不可能不加锁
串行化(serializable)不可能不可能不可能加锁
查看全局隔离级别:`select @@global.transaction_isolation;`

查看当前会话中的隔离级;`select @@session.transaction_isolation;`

查看下一个事务的隔离级别:`select @@transaction_isolation;`

修改当前会话隔离级别:`set session transaction isolation level (事务隔离级别);`

修改系统当前隔离级别:`set global transaction isolation level (事务隔离级别);`

修改默认隔离级别:在mysql.ini文件后面加上:`transaction-isolation=(隔离级别)`

储存引擎

查看支持什么引擎:`show engines;`

修改存储引擎:`alter table 表名 engine = 储存引擎;`

---

## 视图

  创建视图:`create view 视图名 as select 语句;`

  修改一个视图:`alter view 视图名 as select 语句;`

  查看视图:`show create view 视图名;`

  查看视图表结构:`desc 视图表名;`

  删除视图:`drop view 视图名1,视图名2;`

  修改视图:`update 视图表 set 字段='修改' where 字段='查询条件';`

## 用户

  创建用户:`create user '用户名' @'地址' identified by '密码';`

  删除用户:`drop user '用户名' @'地址';`

  修改自己的密码:`set password = password('新密码');`

  修改密码:`set password for '用户名' @'地址'= password('新密码');`

[权限](https://www.wolai.com/m352SfuN4skA9jFqd7CuW2)

     给用户授权:`grant 权限列表... on 库.对象名 to '用户名' @'地址' [identified by '密码'];`

  回收权限:`revoke 权限列表... on 库.对象名 from '用户名' @'地址';`

  刷新权限:`flush privileges;`

  给与全局权限:`grant 权限列表... on *.* to '用户名' @'地址' [with grant option];`

  数据库级权限:`grant 权限列表... on 数据库名.* to '用户名' @'地址' [with grant option];`

  表级权限:`grant 权限列表... on 数据库名.表名 to '用户名' @'地址' [with grant option];`

  字段权限:`grant 权限类型 (字段) on 数据库名.表名 to '用户名' @'地址' [with grant option];`

  储存过程权限:`grant execute|alter routine|create routine on {*.*|数据库名.*|procedure 数据库名.存储过程} to '用户名' @'地址' [with grant option];`

wolai 原创模板

  • Mysql列类型
    • 数值类型
      • 整形
        • tinyint-1
        • smallint-2
        • mediumint-3
        • int-4
        • bigint-8
      • 小数类型
        • float-4
        • double-8
        • decimal[M,D]-根据M和D
    • 文本类型(字符串类型)
      • char -0-255
      • varchar【0-65535】
      • text
      • longtext
    • 二进制
      • blob
      • longblob
    • 日期类型(常用)
      • date(年月日)
      • time(时分秒)
      • datetime(年月日时分秒)

  1. 1.查询比较频繁的字段应该创建索引2.唯一性太差的不适合单独创建索引,即便查询频繁3.更新频繁的不适合4.不会出现在where 字句中字段不该创建 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值