mysql常用技巧

Posted ezhizen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql常用技巧相关的知识,希望对你有一定的参考价值。

1.什么是数据库

数据库是按照数据结构,存储和管理数据的仓库。

关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等书序概念和方法来处理数据库中的数据。

DB:数据库   DBA:数据库管理员  DSMS:数据库管理系统

SQL:结构化查询语言.  DQL:数据查询语言 DML:数据操作语言 DDL:数据定义语言 TCL:事务控制语言

mysql 是最流行的关系型数据库管理系统。

登入mysql  -h 域名  -u  用户名 -P 端口号  -p 密码

查看mysql版本 mysql --version    

或进入mysql  select version

2、mysql语法规范

1.不区分大小写,建议关键字用大写

2.每条命令以;结尾

3.单行注释  # 或--空格 ,多行注释 /*...*/

 

查看所有的数据库  show databases;

打开制定的数据库  use 库名;

查看库下所有的表. show tables;

查看别的库下的表。show tables from 库名;

查看表结构  desc 表名;

产看当前使用的数据库 select database();

3.数据库操作

  创建数据库  create database [if not exists] 数据库名 [default] character set 字符集;

  修改数据库 alter database  数据库名 character set 字符集

  删除数据库 drop database [if exists ] 数据库名

4.mysql数据结构

  数字型 tinyint、smallint、int、bigint  float(M,D) 整数个数+小数个数总共为M个,小数个数为M个 Double(M,D) 

  字符串类型 char(M) 固定长度  varchar(M)最大可显示M位 text 长文本 blob 二进制 set集合(value1,value2) enum枚举(value1,value2)

  日期型  date 日期 time 时间 datetime 日期时间 timestemp 时间戳 year 年 

5.表操作

create table [if not exists ] 表名(字段名 类型 约束条件)

常见约束条件

  not null 非空

  default 默认值

  unique 唯一值

  foreign key 外键

  auto_increment 自增 

外键设置

  要在从表中设置

  从表的外键类型要与主键相关联列的类型一样

  主表的关联列至少位一个Key ,一般为主键

  插入数据时,先插主表,再插从表

  删除数据时,先删从表,在删主表

创建约束的时机 : 创建表时,修改表时

create table(id int primary key auto_increment ,name varchar(20),age int,constraint fk foreign key(表2的列名) reference 主表(列名) )

修改表结构 alter table 表名

  add column 字段名 类型 [first | after 列名]  添加新字段

  add index [索引名] 字段名. 添加索引

  add primary key (字段名)  添加主键

  add unique(索引)  字段名. 添加唯一

  change column 字段名 新字段名 类型

  modify column 字段名 新类型

  drop column 字段名

  drop primary key 删除主键

  drop index  索引名

  rename [as] 新表名 

  add [constraint 约束名] 约束类型(字段名)

删除表 drop table 表名

6.算数运算符

+ - * / % div

7.比较运算符

 = != <> > is null  between and   、in 、    like  、regexp 匹配字符串 

匹配符:% 任意多个字符。- 任意一个字符

8、逻辑运算符

&& and 与。 || or 或 ! not 非  xor 异或

9、表数据的增删改

insert into 表名(column1,column2) values(value1,value2)

insert into 表名  set column1 = value1 

update 表名 set column1 = value1 [where 条件表达式]. 

delete from 表名 [where 条件表达式]

truncate table 表明

*****delete与truncate的区别

1.delete 可与where连用 

2.对于存在自增加列的表,使用truncate后,添加数据从1开始,delete从上次计数后一个开始

3.truncate 效率高

4.delete 可用于事务,回滚 

5.truncate 无返回值 delete可显示受影响的行数

级联删除。  on delete casecade       on delete setnull 

10、表数据的查询

select 查询内容                       5

from 表1 别名1  [inner | left |right] join 表2 别名2  on 连接条件.        1

where  筛选条件。                                   2 

group by 字段名分组                 3 

having 分组后筛选条件              4

order by  字段名                6          

limit  a,b 从索引a开始,显示b条数据        7

distinct 删除重复值

聚合函数.  sum avgminmax count

子查询。select 查询是另一个查询的附属. = > exists any all 

select * from 表A where user_id in (select user from 表b )

***合并查询union 与union all 的区别

union all 不删除重复值

union 删除重复值

 

11、mysql中常用函数

字符函数           

length :计算字节长度 length(字符)

concat :拼接字符串  concat(str1,str2)

lower : 小写  lower(str)

upper : 大写 upper(str)

substr(str,index1,[length2]). 截取  在字符串中,从索引1开始,截取长度为length2的长度

instr(str,substr) 查询索引位置。在str中查找第一次出现substr的索引位置,找不到则为0

trim(str from string) 删除  string中删除指定str

lpad(str,length,str2) 左填充  总长度为length,长度不够,用指定的字符串str2左填充

rpad(str,length,str2)右填充   总长度为length,长度不够,用指定的字符串str2右填充

replace(str,str2,str3)  替换.  在字符串str中,用str3替换str中的str2 

数字函数

round(1.654,2) 四舍五入  小数后保留两位小数

ceil(2,3)  向上取整

floor(2.3) 向下取整

truncate(1.2222,2) 小数后截断2位

mod(10,3) 取余。

日期函数

now :显示现在的日期和时间

curdate : 显示现在的日期 

cuttime: 显示现在的时间

year : 显示年份

month:显示月份

day :显示日

datediff(日期1,日期2)。计算两个日期的时间差

str_to_date :字符串格式变为时间格式 str_to_date("19930804","%Y%m%d")

date_format:日期 准化为字符串  date_format(now(),"%Y-%m-%d")

 

12、条件语句

一、if (条件,值1,值2)

二、

   if 条件1  then 语句1

  elseif 条件2 then 语句2

  elseif 条件3 then 语句3

  else 条件n

  end if   

select if(10>5,1,0)

case 两种使用情况 

  一、case 要判断的字段或表达式

    when 常量1 then 显示的值1或语句1

    when 常量2 then 显示的值2或语句2

    ...

    else 要显示的值n或语句n

    end 

  二 、 case 

    when 要判断的语句1 then 显示值1或语句1

    when 要判断的语句2 then 显示值2或语句2

    ...

    else 要显示的值n或语句n

    end 

 

13、视图

  多次用到同一个结果

  查询的sql语句复杂

  create view 视图名 as (查询语句) 创建试图

  drop view 试图名.       删除试图

  show create 试图名   查看试图

  desc 试图名.        

14.存储过程和函数

创建存储过程    create procedure 存储过程名(参数列表)begin 存储过程  end

参数列表包括三部分。 参数模式.  列名。 参数类型。

参数模式:

in :输入值。该参数可以作为输入

out :输出值  该参数为输出值

inout :输入输出值。该参数可输入也可输出

delimiter  重构结束标志 

call  存储过程名(实参列表)

 

 

删除存储过程

drop procedure 存储过程名

查看存储过程的信息

show create procedure 

存储过程可以有0个返回值或多个返回值

函数只有1个返回值

创建一个函数 create function 函数名(函数列表) returns 返回类型

begin.  函数体 return  end 

函数列表.  参数名 参数类型

调用函数 

select 函数名(实参)

以上是关于mysql常用技巧的主要内容,如果未能解决你的问题,请参考以下文章

工具 | 常用 MySQL 内核 Debug 技巧

Mysql第十六天,常用SQL技巧

[MySQL] 常用SQL技巧--18.5

mysql开发常用技巧总结

mysql常用技巧

项目中常用的19条MySQL优化技巧