写在之前的话:
之前一直在用MSSERVER,刚用MySQL时有很多的不适应。就此小结一下工作中遇到的问题和场景,文中出现的局限性欢迎指出
MySQL有客户端式(SQLyog),可托拉拽和写代码;或者通过命令行的方式进行交互(mysql -h10.***.***.*** -P*** -u*** -p****);
MySQL与MSSERVER之间的优劣,就要涉及到具体的业务场景了。MySQL开源化,性能优越但数据量大的话不建议,其中索引对查询有质的提升,适合实时数据支持如WEB;MSSERVER比较全面,有自动化性能分析、ETL、job、图表等,更加倾向于中小型数据集成分析
数据库操作
创建数据库:create database demon;
删除数据库:drop database demon;
表操作
创建
1.1、创建数据表
create table s_position
(
id int not null auto_increment,
name varchar(20) not null default '经理', #设定默认值
description varchar(100),
primary key PK_positon (id), #设定主键
unique (id,name) #设定唯一值
);
1.2、复制表/结构(不用添加“AS”,将结构和内容都复制过去,若仅复制结构使用limit 0 选项)
create table tab1 select * from table1;
1.3、创建临时表(临时表只在当前连接可见,当这个连接关闭的时候,会自动drop)
create temporary table tab1 (name varchar(25),...);
1.4、创建表进行判断
create table if not exists tabl1 (.....);
1.5、表重命名
alter talbe table1 rename as table2;
修改
2.1、增加列
alter talbe table1 add (test vhar(10),hehe char(12));
2.2、修改列
alter table table1 modify test char(20) not null
2.3、修改默认值
alter table table1 alter test set default 'system';
2.4、去掉默认值
alter table table1 alter test drop default;
2.5、去掉列
alter table table1 drop column test;
删除多列
alter table table1 drop column test1,
column test2,...;
2.6、创建索引
create index index_name on table_name(column_name);
2.7、删除主键
alter table table1 drop primary key;
2.8、增加主键
alter table table1 add primary key PK_depart_pos (department_id,position_id);
更新
格式
单表:update [LOW_PROORITY] [IGNORE] TABLENAME set COLUMN_NAME="***" WHERE CLOLUMN_NAME="&&&" [ORDER BY ...] [LIMIT rows]
或
多表:update [LOW_PROORITY] [IGNORE] TABLENAME [,tab2,tab3,....] set col_name1=expr1,.... [where ...]
说明
如果指定关键词LOW_PRIORITY,update的执行将被延迟,直到没有其他的客户端正在读取表;如果指定关键词IGNORE,则更新语句将不会异常中止,即使在更新过程中出现了重复键错误。导致冲突的记录将不会被更新;如果在一个表达式中从tbl_name中访问一个列,update使用咧的当前值
示例:多表更新
update tab1 ,tab2 set column1=column2,... where condition1='***'
常用函数
1、date和time
a.当前datetime:now():2017-06-07 14:31:52
b.返回时间:time():select time(now()); --->14:31:52
b1.返回日期:date():select date(now()); --->2017-06-07
c.返回年月日:year()/month()/day()
d.返回时分秒:hour()/minute()/second()
e.取时间含义:dayname()--星期几;
dayofweek():返回日期对应的星期:1--周日;2--周一;。。
dayofyear():返回日期为该年的第多少天;
last_day():返回某个日期的最后一天;-->select last_day(now()); '2017-06-30'
f.日期计算: interval:灵活性加减日期
select now()+interval +5 day;
select now()+interval -4 minute;
datediff(enddate,start_date),返回天数
timestampdiff(interval,begin_date,end_date ):求对应的时间差(天、时、分、秒)
2、字符串函数
a.长度
char_length():字符串长度 我是 --> 2
length():字符长度,”我是” --> 4 【字母/符号/数字 一个字符】
b.拼接函数
concat(str1,str2,...):
concat(seperator,str1,str2,...):带有分隔符的拼接函数
c.字符查找
locate(find_str,str,start):
d.字符截取
substring(str,start[,end])
e.替换
replace(str,old_str,new_str)
f.插入
insert(str,start,length,repr):在指定的位置插入字符或字符串
示例:select insert('aaabcdefg',3,5,'what') ---aawhatfg
select insert('aaabcdefg',3,1000,'what') ---aawhat
g.补充:
补充:①重复函数repeat(str,count)
②大小写转化:lower(str)/Lcase(str)、Upper(str)/Ucase(str)
③反转函数:reverse(str)
④空格函数:space(N)
⑤去空格函数:ltrim()、rtrim()、trim()
3.数值函数
a.转换
cast
b.截取
round(data,n):四舍五入,保留小数位数n位
truncate(data,n):截取数据到n位,不四舍五入
floor():数据的最大整数部分
ceil():大于数据的最小整数
c.取最小值
least(arg1,...):取最小值
d.数据处理
rand():随机小数
format(,n):数据格式化,转化为含千分位数据,四舍五入保留n位小数
4.控制流函数
a.case
case when ....then ...else ... end
b.if
if(condition,true_value,false_value)
c.ifnull
ifnull(arg1,arg2):arg1位空时则取值arg2,
d.nullif
nullif(arg1,arg2):arg1=arg2时为空,否则为arg1
转载请注明出处!欢迎邮件沟通:shj8319@sina.com
- .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了
写在前面 上篇文章我们讲了如在在实际项目开发中使用Git来进行代码的版本控制,当然介绍的都是比较常用的功能.今天我再带着大家一起熟悉下一个ORM框架Dapper,实例代码的演示编写完成后我会通过Git ...
- MySQL快速入门(二)
目录 MySQL快速入门(二) 约束条件 自增 自增的特性 主键 外键 级联更新/删除 表与表之间的关系 外键约束 操作表方法 查询关键字 练习数据 select··from where 筛选 gro ...
- MySql基础笔记(一)Mysql快速入门
Mysql快速入门 一)基本概念 1)表 行被称为记录,是组织数据的单位.列被称为字段,每一列表示记录的一个属性. 2)主键 主键用于唯一的标识表中的每一条记录.可以定义表中的一列或者多列为主键, 但 ...
- Java快速入门-02-基础篇
Java快速入门-02-基础篇 上一篇应该已经让0基础的人对 Java 有了一些了解,接一篇更进一步 使用 Eclipse 快捷键 这个老师一般都经常提,但是自己不容易记住,慢慢熟练 快捷键 快捷键作 ...
- Java快速入门-01-基础篇
Java快速入门-01-基础篇 如果基础不好或者想学的很细,请参看:菜鸟教程-JAVA 本笔记适合快速学习,文章后面也会包含一些常见面试问题,记住快捷键操作,一些内容我就不转载了,直接附上链接,嘻嘻 ...
- MySQL 快速入门教程
转:MySQL快速 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据 ...
- Scala快速入门 - 基础语法篇
本篇文章首发于头条号Scala快速入门 - 基础语法篇,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干货,也欢迎关注我的 ...
- MySQL 快速入门(一)
目录 MySQL快速入门 简介 存储数据的演变过程 数据库分类 概念介绍 MySQL安装 MySQL命令初始 环境变量配置 MySQL环境变量配置 修改配置文件 设置新密码 忘记密码的情况 基本sql ...
- SpringBoot快速入门(实战篇一)
SpringBoot快速入门(一) 一SpringBoot简介 1.spring开发经历的阶段 Spring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 ...
随机推荐
- 【2017-05-21】WebForm内置对象:Session、Cookie,登录和状态保持
1.Request -获取请求对象 string s =Request["key"]; 2.Response - 响应请求对象 Response.Redirect(" ...
- 第十五章(附)分布式缓存-Memcached
一.概念 Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能. 二.适用场合 1.分布式应用.由于 ...
- 开涛spring3(12.4) - 零配置 之 12.4 基于Java类定义Bean配置元数据
12.4 基于Java类定义Bean配置元数据 12.4.1 概述 基于Java类定义Bean配置元数据,其实就是通过Java类定义Spring配置元数据,且直接消除XML配置文件. 基于Java ...
- javaWeb学习总结(8)- jsp指令(3)
一.JSP指令简介 一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定 ...
- cmd批处理延迟代码 结束进程
choice /t 5 /d y /n >nul taskkill /im chrome.exe /f pause
- MyBatis-3.2.2
note SqlSessionFactory 它是一个线程安全的 SqlSession 线程非安全,不能做类的公用变量 当数据库字段和实体对象名称不一至时,通过sql的字段命名别名,别名跟实体对象属性 ...
- 对于php内存释放问题
大家在使用PhpExcel类时,当打开一个比较大的excel数据文档,会出现Fatalerror: Allowed memorysize of 67108864 bytes exhausted (tr ...
- linux中的重要目录
1./boot 引导程序,内核的存放的目录. 此目录,包含了在引导过程中所必须的文件,引导程序的相关文件(如:grub,lilo以及相应的配置文件及linux操作系统内核相关文件). 2./sbin/ ...
- PHP版本替换, phpinfo和php -v显示版本信息不一致
环境:OS X EI Capitan 10.11 & lnmp 背景: 1想将lamp(xampp安装的,php5.2)换成 lnmp(php7.0) 2php5.2卸载(xampp卸载& ...
- jsonp跨域再谈
昨天面试雷锋网,问到了jsonp跨域的问题,其实这个问题之前就会的,没有多大的深入,记得有一个名词在跨域中出现,就是同源机制, JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在J ...