写在之前的话:
之前一直在用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,也称 ...
随机推荐
- MyBatis3入门
这里对mybatis的入门介绍以官方最新MyBatis3.4.1为准,具体文档及jar包请访问:https://github.com/mybatis/mybatis-3/releases. 以前经常都 ...
- 比较容易理解的---原生js瀑布流
最近一直在恶补基础JS H5 CSS3的基础知识 关于这个瀑布流: 本来打算看着教程来做的. 不过 感觉理解起来有点复杂. SO, 自己参考教程默写了一个.. 目前我所接触过的瀑布流布局分为2大类 主 ...
- Bash Excercises
1. cat <<EOF #!/bin/bash function printHelp { cat<<EOF Run the Dash vector tests. Usage: ...
- XML文件生成——借助JDOM
import java.io.* ; import org.jdom.* ; import org.jdom.output.* ; public class DOMDemo { public stat ...
- iOS Regex匹配关键字并修改颜色
引入第三方框架RegexKitLite /** * 根据传入的文字返回一个符合规则的富文本 * * @param title 匹配的文字 * * @return 创建的富文本 */ -(NSAttri ...
- QT环境的搭建
说到QT大家一定要先了解到底什么是QT,我们通常说的QT是包括:Qt-creactor的集成开发环境(IDE)和Qt的开发工具包(SDK),而Qt-creactor就相当于我们的visio studi ...
- ImageView最大高度和宽度失效解决方案
解决方案 做RecyclerView的 item 布局时,用到imageview ,可是图片按原始尺寸显示,不规范. 所以去google了一下imageview的宽高限制,就试了下maxheight/ ...
- Sql的连接表补充
连接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定连接条件.WHERE和HAVING子句也可以包含搜索条件,以进一步筛选连接条件所选的行. 连接可分为 ...
- MQ产品比较-ActiveMQ-RocketMQ
几种MQ产品说明: ZeroMQ : 扩展性好,开发比较灵活,采用C语言实现,实际上他只是一个socket库的重新封装,如果我们做为消息队列使用,需要开发大量的代码 RabbitMQ :结合erla ...
- 3D旋转动画练习 demo
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...