三十分钟MySQL飞快入门,MySQL基础知识

一、MySQL安装

一、MySQL安装

27分钟MySQL火速入门(图解),mysql快速入门

一、MySQL安装

MySQL的下载

MySQL版本选拔

997755.com澳门葡京 1

MySQL作用自定义选取设置

功用自定义选拔

997755.com澳门葡京 2

途径自定义选取

997755.com澳门葡京 3

安装root用户密码

997755.com澳门葡京 4

设置到位,点击MySQL Workbench 陆.3 CE进入MySQL客户端

二、SQL基础

SQL语句分类

一.DDL(Data Definition
Languages)语句:数据定义语言,那一个讲话定义了分裂的数据段、数据库、表、列、索引等数据库对象。常用的语句关键字首要总结create/drop/alter

二.DML(Data Manipulation
Language)语句:数据操纵语句,用于加多、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字首要总结insert/delete/update/select等

三.DCL(Data Control
Language)语句:数据控制语句,用于控制差别数额段直接的批准和访问等第的口舌。那么些讲话定义了数据库、表、字段、用户的造访权限和安全等第。首要的语句关键字归纳grant/revoke等

DDL语句(涉及表的定义、结构的修改)

一、create语句

997755.com澳门葡京 5

Query Ok代表语句执行成功

一 row affected代表数据库一行收到影响

0.01 sec代表操作实践的日子

create table student(
SID int not null auto_increment,
sNo int ,
sName varchar(50) not null,
primary key(SID)
);

1.翻看系统中都设有啥样数据库(show databases;)

贰.在翻看系统中已部分数据库后,能够用(use dbname)选用相应的数据库

三.在甄选相应的数据库后,查询该数据库上面包车型大巴有所的表(show tables)

2、删除数据库

删除数据库的语法:drop databse dbname;

三、创建表

语法:create table tablename(column_name_1 column_type_1
constraints,column_name_2 column_type2 constrationts)

mysql的表名是以目录情势储存在磁盘上,表名的字符能够是其余目录名允许的字符。

column_name是列名

column_type是列的数据类型

constrationts是列的羁绊原则

997755.com澳门葡京 6

壹.查看表定义:desc tablename

二.翻看创造表的SQL语句:show create table tablename

四、删除表

删除表的语法:drop table tablename;

五、修改表

aleter 语法 | 说明

---|---
alter table tablename modify columnname newColumnType | 修改表字段的类型(==modify 不能更改字段名称==)
alter table tablename add newColumnname newColumnType| 增加表字段
alter table tablename drop oldCloumnname|删除表字段
alter table tablename change oldColumname newColumnname newColumntype|修改字段的名称及类型
alter table tablename rename (to) newtablename|修改表名称

修改字段的排列顺序

在alter的语法前面都有[first\after columnname]可选项

alter table user add address varchar(20) first ;
alter table user add age int after name ; 

DML(对数据库表记录实行操作,增(insert)删(delete)改(update)查(select))

1.insert语句

语法:

插入一条:insert into
tablename(columnname一,columnname二…)values(val一,val贰…);

安排多条:insert into
tablename(columnname一,columnname贰…)values(val一,val二…),(val一,val2…);

2.update语句

语法:update tablename set columnname=value [where condition]

倘若使用MySQL
Workbench,update语句不加where条件的会履行错误,供给如下图设置撤消设置:

997755.com澳门葡京 7

-3.delete语句

语法:delete from tablename where condition

-4.select语句

语法:select * from tablename [where condition]

5.表连接

1.内连接(仅选出两张表中互般合作的数量)

select cno,cname,sname from student inner join course on cno=sno;
select cno,cname,sname from student,course where cno=sno;

2.外连接

外接连又分别:

一.左延续(left join):包蕴左侧表的装有记录,左侧没有的为Null

二.右接连(right join):包括左侧表的全部记录,左侧未有的为null

6.子查询

-七.笔录联合

语法:

select * from t1 union all select * from t2;
select * from t1 union select * from t2;

union all与union的区别:

union all是把结果集直接统壹在协同,而union是将union
all后的结果举行三次distinct,去除重复后的结果

DCL语句(DCL语句主借使dba用来管理种类中的对象权限)

grant与revoke

3、MySQL援救的数据类型

数值类型

MySQL帮助项目后面包车型地铁小括号钦命展现上涨幅度,例如:int(5)表示当数值宽度小于5的时候在数字后边填满宽度,倘若不显示钦点宽度则暗中认可为int(11)。假如插入的多寡超越这一个数值宽度,对实在的插入值是未有影响的,是遵从int类型的骨子里尺寸进行的。

create table valuetype(
age int,
age1 int
)
insert into valuetype(age,age1)values(1,2);//这时候数据库就显示1
alter table valuetype modify age int zerofill;//这时候数据库就显示'0000000001'

数量插入bit类型字段时,首先转变为2进制,假设位数允许,将插入成功,即使位数小于实际的任务,则插入战败。

日猪时间档次

mysql里面获得当前时光为now().mssql获取当前时光为getdate()

timestamp,支持的限定十分的小,从一九6陆-203捌年,timestamp受时区的影响

create table timestamptest(
tp timestamp)

系统会自行给tp赋予默许值current_timestamp(系统日期),可是mysql只给第三个timestamp设置默许值,假若有首个timestamp类型,则私下认可值设置为0

字符串类型

壹.char与varchar类型的区分:

char列最终的空格已经删除,而varchar保留空格

肆、MySQL中运算符

算术运算符

比较运算符,满意重返1,不然再次来到0

逻辑运算符(布尔运算符)

位运算符

运算符优先级,大多情形下接纳()实行操作

5、常用函数

字符串函数

数值函数

日子和岁月函数

流程函数

任何函数

陆、选拔适合的数据类型

char与varchar

在Innodb存款和储蓄引擎中,提议利用varchar类型。对于Innodb数据表,内部的行存款和储蓄格式未有区分固定长度和可变长度列,因而一定长度列的脾性不自然比不足变长度的属性好。

Text与blob

貌似在保留少量字符串的时候,我们会接纳char恐怕varchar,而在保留较大文本的时候,平日会挑选使用text或然blob。两者的分裂:text只能保留字符数据,比如日志。blob能保存二进制数据,比如照片。

浮点数与定点数

在MySQL中,decimal或许(numberic)用来代表定点数

日期类型的接纳

date/time/datetime/timestamp

7、索引的布置和使用

目录概述

目录是数据库中用来增长品质的最常用工具。在MySQL中,MyISAM与Innodb存储引擎的表暗中认可创造的都以Btree索引。

一.索引的创建

create table indexTest(
id int not null auto_increment,
memberid int not null,
createtime datetime not null default current_timestamp,
primary key (id)
)
alter table indextest add orderserial varchar(50) not null;
create unique index IX_orderserial on indexTest(orderserial);

insert into indextest
(memberid,createtime,orderserial)values(112123,’2016-08-14′,’sz121213′)
证实:上边创设三个表,其中定义orderserial为唯一索引。

语法:create [unique\fulltext\spatial] index index_name on
tablename(columname)

2.统一筹划索引的口径

一.最合适的索引列是出现在where子句中列,或连接子句中内定的列,而不是现身在select关键字背后的抉择列表的列

二.施用唯一索引,须要思虑列中有个别值得分布,借使索引列种的基数越大,则索引的意义越好。举个例子:订单号就足以设置唯一索引,因为订单号的不雷同。而对于rowstatus就无须了,因为rowstatus要么是立见成效要么是船到江心补漏迟。那样的筛选出的限制依旧无数,未有趣

3.绝不过分索引。因为有着也要侵占额外的磁盘空间,假设三个目录很少使用,那么会不供给的减缓表的修改速度
来得MySQL的履行陈设:explain 后边加mysql语句

八、视图

视图(View)

概念:视图是壹种虚拟存在的表,对于使用视图的用户来说基本上是透明的,视图并不是在数据库中实际存在。

优势:

壹.简约,用户完全不须求关爱后边对应的表的结构/关联条件和筛选标准。对用户来说已经是过滤好的符合条件的结果集

贰.康宁,使用视图的用户只可以访问他们被允许查询的结果集

叁.数量独立,一旦视图的布局明确了,可以屏蔽表结构变化对用户的熏陶,源表扩张列对视图未有影响。

语法:

create or replace view index_view as
select * from indextest

1.创建create [or replace] view viewName as select …

2.查询 select * from 视图名称

3.展示视图 show tables;

4.剔除视图 drop view viewname

九、存款和储蓄进度和函数

一、存款和储蓄进程(store
procedure)和函数

积存进程和函数是预先经过编写翻译并存在数据库中的一段SQL语句的联谊,调用存款和储蓄进程和函数可以简化使用开荒人士的好多干活,收缩数量在数据库和应用服务器之间的传导,对于加强多少处理的作用是有裨益的

语法:

create database finance;//创建finance数据库
use finance;
create table orders(
orderId bigint not null auto_increment,
memberId int not null default 0,
serialNumber varchar(50) not null default '',
amount decimal(18,2) not null default 0,
createTime datetime not null default current_timestamp,
primary key (orderid)
)//创建orders订单表
insert into orders (memberId,serialNumber,amount) values(6561121,'sz12234222',5),(233444,'ys1652233',10)//插入测试数据
delimiter &
create procedure orders_serial(in serial varchar(50))
reads sql data
begin
select * from orders
where serialNumber=serial;
end &

诠释:delimiter
$$命令正是将讲话的终结符从分号;修改成其余标志,那里指的是$$为尾声。那样在number前边的分店就不会觉得截止。

一.调用存款和储蓄进度

call orders_serial('sz12234222')

二.囤积进程的补益

逻辑封装在数据库端,调用者不要求驾驭在那之中的拍卖逻辑,1旦调用逻辑产生变化,只必要修改存款和储蓄进程就能够,而对调用者的程序完全没有影响。

三.剔除存储进度

drop procedure if exists orders_serial
//if exists可选

四.查看存款和储蓄进程差情状

show procedure status like 'orders_serial'

⑤.查询存款和储蓄进程的定义

show create procedure orders_serial

2、存款和储蓄进程变量的接纳

积存进度能够应用变量,并且在MySQL伍.1版本后,不区分轻重缓急写

一.变量的概念

变量的功能域只可以在begin…end块中,能够嵌套在块中

declare currentTime date;

二.变量的赋值

set currentTime=now();//直接赋值
select XX into currentTime from XX;//也可以通过sql语句进行赋值

3.概念规则和拍卖

declare handler_type handler for contidtion_value;

handler_type:

1.continue;
2.exit;
3.undo;

condition_value:

1.sqlstate
2.sqlwarning
3.not found
4.sqlexception

eg: declare continue handler for sqlstate ‘2’ set @x=1;

3、光标的行使

在储存进程和函数中,能够应用光标对结果集举行巡回处理,光标的选用含有光标的宣示:
open、fetch、close

定义:

declare cur_id cursor for select * from orders;
open cur_id;
fetch cur_id;
close cur_id;

4、事件调度器

事件调度器是MySQL伍.一末尾新增的机能,能够将数据库遵照自定义时间周期触发某种操作。数据库暗中同意操作是关门的。需求开垦

create event x
on schedule
every 5 second
do
insert into orders (memberId,serialNumber,amount) values(6561121,'222',5)

set global event_scheduler =1//打开调度器
alter event x disable;//禁用事件调度器
drop event x;//删除事件调度器

十、 触发器

触发器

触发器是在伍.02本子后援助的,触发器是与表有关的数据库对象,在满足条件时接触,并执行触发器中定义的讲话集合。能够援助应用在数额库端确认保证数据的完整性

drop trigger orderlog
delimiter $
create trigger orderlog 
after insert on orders for each row
begin
insert into orderslog (content) values(new.serialNumber);
end 
insert into orders (memberId,serialNumber,amount) values(6561121,'sz12234222',5)

释疑:上边描述的是创建二个触发器,当往订单表中插入数据之后,在订单日志表插入一条记下。使用old和new来引用触发器发生变化的笔录内容,方今只支付行级触发,不辅助语句级触发

触发器执行的相继

before insert\before update\after update

十壹、 事务控制和锁定语句

MySQL存款和储蓄引擎的事情表达

1.Lock Table与Unlock Table

语法:

use finance;
lock table orders read;
unlock table;

若是某些进度(session一)lock定了表,那么此外的长河(session贰)能够查询,不过不可能拓展更新操作,直到第一个进程释放了锁

贰.作业控制

十二、总结

很开心你能读书到那边,恐怕在贰陆分钟很难吸收这么多的学识,那篇小说也是本身后面学习MySQL笔记整合的。那篇小说也是理论偏多,对于内部相比相比较难理解知识点写些德姆o,权当个体精晓,如有不足的地方,请你提议。若是对你抱有协助,请点个赞!

一、MySQL安装 MySQL的下载
MySQL版本采纳 MySQL功能自定义采纳安装 功…

一、MySQL安装

MySQL的下载

MySQL的下载

MySQL的下载

MySQL版本采纳

997755.com澳门葡京 8

MySQL版本选用

997755.com澳门葡京 9

MySQL成效自定义选取设置

1.作用自定义选择997755.com澳门葡京 10
二.路径自定义接纳997755.com澳门葡京 11
三.设置root用户密码997755.com澳门葡京 12
四.设置到位,点击MySQL Workbench 陆.三 CE进入MySQL客户端

MySQL成效自定义采用安装

1.功用自定义选取997755.com澳门葡京 13
2.路径自定义选用997755.com澳门葡京 14
三.设置root用户密码997755.com澳门葡京 15
四.装置实现,点击MySQL Workbench 陆.3 CE进入MySQL客户端

MySQL版本选择

二、SQL基础

二、SQL基础

997755.com澳门葡京 16

SQL语句分类

1.DDL(Data Definition
Languages)语句:多少定义语言,这个讲话定义了不一致的数据段、数据库、表、列、索引等数据库对象。常用的语句关键字首要包蕴create/drop/alter

2.DML(Data Manipulation
Language)语句:三十分钟MySQL飞快入门,MySQL基础知识。数码操纵语句,用于加多、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要归纳insert/delete/update/select等

3.DCL(Data Control
Language)语句:数量控制语句,用于控制差异数量段间接的认同和走访级其他言辞。这么些话语定义了数据库、表、字段、用户的访问权限和安全等第。首要的语句关键字总结grant/revoke等

SQL语句分类

1.DDL(Data Definition
Languages)语句:数据定义语言,这几个话语定义了区别的数据段、数据库、表、列、索引等数据库对象。常用的语句关键字重要归纳create/drop/alter

2.DML(Data Manipulation
Language)语句:多少操纵语句,用于加多、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字首要不外乎
insert/delete/update/select等

3.DCL(Data Control
Language)语句:数码控制语句,用于控制不一致数额段直接的特许和访问等第的语句。这一个讲话定义了数据库、表、字段、用户的拜访权限和安全等级。重要的语句关键字归纳grant/revoke等

MySQL成效自定义选拔安装

DDL语句(涉及表的概念、结构的修改)

一、create语句
997755.com澳门葡京 17

  • Query Ok代表语句执行成功
  • 一 row affected代表数据库壹行收到影响
  • 0.01 sec代表操作实践的年月

create table student(
 SID  int  not null auto_increment,
 sNo int ,
 sName varchar(50) not null,
 primary key(SID)
);

1.翻看系统中都留存什么数据库(show databases;)

贰.在查看系统中已某个数据库后,可以用(use dbname)选取相应的数据库

3.在甄选相应的数据库后,查询该数据库下边包车型大巴装有的表(show tables

2、删除数据库

剔除数据库的语法:drop databse dbname;

三、创建表

语法:create table tablename(column_name_1 column_type_1
constraints,column_name_2 column_type2 constrationts)

  • mysql的表名是以目录方式储存在磁盘上,表名的字符可以是别的目录名允许的字符。
  • column_name是列名
  • column_type是列的数据类型
  • constrationts是列的自律原则
    997755.com澳门葡京 18
  • 查看表定义:desc tablename
  • 翻看创制表的SQL语句:show create table tablename

四、删除表

删除表的语法:drop table tablename;

五、修改表
aleter 语法 | 说明
—|—
alter table tablename modify columnname newColumnType |
修改表字段的花色(==modify 不可能退换字段名称==)
alter table tablename add newColumnname newColumnType|
扩张表字段
alter table tablename drop oldCloumnname|删除表字段
alter table tablename change oldColumname newColumnname
newColumntype|修改字段的名号及项目
alter table tablename rename (to) newtablename|修改表名称

  • 修改字段的排列顺序
    在alter的语法前边都有[first\after columnname]可选项

alter table user add address varchar(20) first ;
alter table user add age int after name ; 

DDL语句(涉及表的概念、结构的更改)

一、create语句
997755.com澳门葡京 19

  • Query Ok代表语句执行成功
  • 一 row affected代表数据库壹行收到影响
  • 0.0一 sec代表操作实施的年月

create table student(
 SID  int  not null auto_increment,
 sNo int ,
 sName varchar(50) not null,
 primary key(SID)
);

一.查看系统中都设有何数据库(show databases;)

二.在翻看系统中已有的数据库后,能够用(use dbname)接纳相应的数据库

三.在甄选相应的数据库后,查询该数据库上边包车型客车具有的表(show tables

2、删除数据库

除去数据库的语法:drop databse dbname;

三、创建表

语法:create table tablename(column_name_1 column_type_1
constraints,column_name_2 column_type2 constrationts)

  • mysql的表名是以目录格局储存在磁盘上,表名的字符能够是其他目录名允许的字符。
  • column_name是列名
  • column_type是列的数据类型
  • constrationts是列的自律规范
    997755.com澳门葡京 20
  • 翻看表定义:desc tablename
  • 查看创设表的SQL语句:show create table tablename

四、删除表

删除表的语法:drop table tablename;

五、修改表
aleter 语法 | 说明
—|—
alter table tablename modify columnname newColumnType |
修改表字段的类别(==modify 不可能更改字段名称==)
alter table tablename add newColumnname newColumnType|
增添表字段
alter table tablename drop oldCloumnname|删除表字段
alter table tablename change oldColumname newColumnname
newColumntype|修改字段的名号及项目
alter table tablename rename (to) newtablename|修改表名称

  • 修改字段的排列顺序
    在alter的语法前边都有[first\after columnname]可选项

alter table user add address varchar(20) first ;
alter table user add age int after name ; 

作用自定义选用

DML(对数据库表记录举行操作,增(insert)删(delete)改(update)查(select))

1.insert语句
语法:
插入一条insert into
tablename(columnname1,columnname2…)values(val1,val2…);

插入多条insert into
tablename(columnname1,columnname2…)values(val1,val2…),(val1,val2…);

2.update语句
语法:update tablename set columnname=value [where
condition]
纵然选拔MySQL
Workbench,update语句不加where条件的会实施错误,须求如下图设置废除设置:
997755.com澳门葡京 21

3.delete语句
语法:delete from tablename where
condition

4.select语句
语法:select * from tablename [where condition]

select 查询相关的 说明
select distinct name from user; 查询不重复记录
select * from user where id=1; 条件查询
select * from user order by id desc 排序(desc倒序、asc正序)
select * from user order by id desc limit 0,2 根据id进行倒序,0代表从第一个开始,2代表查询出来的个数 select …[limit offset_start,row_count]
select count(1) from user 聚合函数count(),其他的还有sum()/max()/min()
group by 表示要进行分类聚合select name,count(1) from user group by name
having 表示对分类后的结果再进行条件过滤 select name,count(1) from user group by name having count(1)>2

5.表连接
一.内接二连三(仅选出两张表中相互称合的多寡)

select cno,cname,sname from  student inner join course on  cno=sno;
select cno,cname,sname from student,course where cno=sno;

2.外连接
外接连又分别:

左连接(left join):包涵右侧表的全数记录,右侧未有的为Null

右连接(right join):包罗右侧表的富有记录,左侧未有的为null

6.子查询

子查询关键字 说明
in 存在
not in 不存在
= 等于
!= 不等于
exists 存在
not exists 不存在

7.记下联合
语法:
1.select * from t1 union all select * from t2;
2.select * from t1 union select * from t2;

union all与union的区别
union all是把结果集直接统1在协同,而union是将union
all后的结果进行三次distinct,去除重复后的结果

DML(对数据库表记录实行操作,增(insert)删(delete)改(update)查(select))

1.insert语句
语法:
插入一条insert into
tablename(columnname1,columnname2…)values(val1,val2…);

插入多条insert into
tablename(columnname1,columnname2…)values(val1,val2…),(val1,val2…);

2.update语句
语法:update tablename set columnname=value [where
condition]
即使应用MySQL
Workbench,update语句不加where条件的会履行错误,要求如下图设置裁撤设置:
997755.com澳门葡京 22

3.delete语句
语法:delete from tablename where
condition

4.select语句
语法:select * from tablename [where condition]

select 查询相关的 说明
select distinct name from user; 查询不重复记录
select * from user where id=1; 条件查询
select * from user order by id desc 排序(desc倒序、asc正序)
select * from user order by id desc limit 0,2 根据id进行倒序,0代表从第一个开始,2代表查询出来的个数 select …[limit offset_start,row_count]
select count(1) from user 聚合函数count(),其他的还有sum()/max()/min()
group by 表示要进行分类聚合select name,count(1) from user group by name
having 表示对分类后的结果再进行条件过滤 select name,count(1) from user group by name having count(1)>2

5.表连接
一.内接二连三(仅选出两张表中互匹同盟的数额)

select cno,cname,sname from  student inner join course on  cno=sno;
select cno,cname,sname from student,course where cno=sno;

2.外连接
外接连又分化:

左连接(left join):包蕴右侧表的装有记录,左边未有的为Null

右连接(right join):包括左边表的全部记录,左边未有的为null

6.子查询

子查询关键字 说明
in 存在
not in 不存在
= 等于
!= 不等于
exists 存在
not exists 不存在

柒.笔录联合
语法:
1.select * from t1 union all select * from t2;
2.select * from t1 union select * from t2;

union all与union的区别
union all是把结果集直接统1在壹齐,而union是将union
all后的结果实行2回distinct,去除重复后的结果

997755.com澳门葡京 23

DCL语句(DCL语句主若是dba用来管理种类中的对象权限)

grant与revoke

DCL语句(DCL语句首借使dba用来治本系列中的对象权限)

grant与revoke

途径自定义采用

3、MySQL协助的数据类型

3、MySQL援救的数据类型

997755.com澳门葡京 24

数值类型

常用的数值类型 字节 说明
int 4 有个额外的额属性Auto_Increment
bigint 8
float 4
double 8
decimal(M,D) M+2 M代表精度,D代表标度

MySQL援助项近来面包车型地铁小括号钦赐展现上涨幅度,例如:int(5)表示当数值宽度小于伍的时候在数字前边填满宽度,要是不出示钦赐宽度则暗中同意为int(1一)。假如插入的数量超出这么些数值宽度,对实在的插入值是未有影响的,是依据int类型的实际上尺寸进行的。

create table valuetype(
age int,
age1 int
)
insert into valuetype(age,age1)values(1,2);//这时候数据库就显示1

alter table valuetype modify age int zerofill;//这时候数据库就显示'0000000001'
位类型 说明
bit(M) 位类型最小1,最大64
create table test(pwd bit(64))

数据插入bit类型字段时,首先转变为2进制,要是位数允许,将插入成功,若是位数小于实际的地点,则插入失败。

数值类型

常用的数值类型 字节 说明
int 4 有个额外的额属性Auto_Increment
bigint 8
float 4
double 8
decimal(M,D) M+2 M代表精度,D代表标度

MySQL扶助项目后边的小括号内定展现上涨幅度,例如:int(伍)表示当数值宽度小于伍的时候在数字前边填满宽度,要是不展现钦赐宽度则私下认可为int(1一)。假若插入的数目超过那几个数值宽度,对实际的插入值是未有影响的,是比照int类型的实际尺寸进行的。

create table valuetype(
age int,
age1 int
)
insert into valuetype(age,age1)values(1,2);//这时候数据库就显示1

alter table valuetype modify age int zerofill;//这时候数据库就显示'0000000001'
位类型 说明
bit(M) 位类型最小1,最大64
create table test(pwd bit(64))

数码插入bit类型字段时,首先转变为贰进制,假使位数允许,将插入成功,假诺位数小于实际的职位,则插入失利。

安装root用户密码

日期时间项目

日期类型 说明
date 表示年月日
datetime 表示年月日时分秒
time 表示时分秒
timestamp 时间戳(1970-2038)
year 年份(1901-2155)

mysql里面获得当明日子为now().mssql获取当前时光为getdate()

timestamp,协理的界定极小,从19陆八-203八年,timestamp受时区的熏陶

create table timestamptest(
tp timestamp)

系统会自动给tp赋予默认值current_timestamp(系统日期),但是mysql只给第一个timestamp设置默认值,如果有第二个timestamp类型,则默认值设置为0

日虎时间档次

日期类型 说明
date 表示年月日
datetime 表示年月日时分秒
time 表示时分秒
timestamp 时间戳(1970-2038)
year 年份(1901-2155)

mysql里面获取当前岁月为now().mssql获取当前时刻为getdate()

timestamp,协理的界定十分的小,从1968-203八年,timestamp受时区的震慑

create table timestamptest(
tp timestamp)

系统会自动给tp赋予默认值current_timestamp(系统日期),但是mysql只给第一个timestamp设置默认值,如果有第二个timestamp类型,则默认值设置为0

997755.com澳门葡京 25

字符串类型

常用字符串类型 说明
char(M) M为0-255之间的整数
varchar(M) M为0-65535之间的整数,值长度+1个字节
text 允许0-65535字节,值长度+2字节

char与varchar类型的区分:

char列最终的空格已经去除,而varchar保留空格

字符串类型

常用字符串类型 说明
char(M) M为0-255之间的整数
varchar(M) M为0-65535之间的整数,值长度+1个字节
text 允许0-65535字节,值长度+2字节

char与varchar类型的分别:

char列最终的空格已经删除,而varchar保留空格

设置到位,点击MySQL Workbench 陆.三 CE进入MySQL客户端

4、MySQL中运算符

肆、MySQL中运算符

二、SQL基础

算术运算符

运算符 说明
+ 加法
减法
* 乘法
/,DIV 除法,返回商
%,MOD 除法,

算术运算符

运算符 说明
+ 加法
减法
* 乘法
/,DIV 除法,返回商
%,MOD 除法,

SQL语句分类

正如运算符,满意重返1,不然重临0

运算符 说明
= 等于
<>,!= 不等于
<=> null安全的等于
< 小于
<= 小于等于
> 大于
>= 大于等于
between 存在于指定范围
in 存在于指定集合
is null 为null
is not null 不为null
like 通配符匹配
regexp,rlike 正则表达式

正如运算符,满意重临一,不然重临0

运算符 说明
= 等于
<>,!= 不等于
<=> null安全的等于
< 小于
<= 小于等于
> 大于
>= 大于等于
between 存在于指定范围
in 存在于指定集合
is null 为null
is not null 不为null
like 通配符匹配
regexp,rlike 正则表达式

一.DDL(Data Definition
Languages)语句:数据定义语言,那些话语定义了不相同的数据段、数据库、表、列、索引等数据库对象。常用的语句关键字首要不外乎create/drop/alter

逻辑运算符(布尔运算符)

运算符 说明
NOT,! 逻辑非
AND,&& 逻辑与
OR 逻辑或
XOR 逻辑异或

逻辑运算符(布尔运算符)

运算符 说明
NOT,! 逻辑非
AND,&& 逻辑与
OR 逻辑或
XOR 逻辑异或

二.DML(Data Manipulation
Language)语句:数据操纵语句,用于增添、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字首要包罗insert/delete/update/select等

位运算符

运算符 说明
& 位与
位或
^ 位异或
~ 位取反
>> 位右移
<< 位左移

位运算符

运算符 说明
& 位与
位或
^ 位异或
~ 位取反
>> 位右移
<< 位左移

3.DCL(Data Control
Language)语句:数据控制语句,用于控制分裂数量段直接的批准和访问级其余讲话。这一个讲话定义了数据库、表、字段、用户的拜会权限和安全等级。首要的语句关键字归纳grant/revoke等

运算符优先级

大多景况下使用()实行操作

运算符优先级

大多情形下使用()进行操作

DDL语句(涉及表的概念、结构的改变)

伍、常用函数

5、常用函数

一、create语句

字符串函数

函数 说明
concat(s1,s2,…,sn) 连接s1,s2,…sn为一个字符串
insert(str,x,y,instr) 将字符串str从第x位置,y个字符串长的子串替换为字符串instr
lower(str) 将字符串str中所有字符变为小写
upper(str) 将字符串str中所有字符变为大写
left(str,x) 返回字符串str最左边的x个字符
right(str,x) 返回字符串str最右边的x个字符
lpad(str,n,pad) 用字符串pad对str最左边进行填充,直到长度为n个字符长度
rpad(str,n,pad) 用字符串pad对str最右边进行填充,直到长度为n个字符长度
ltrim(str) 去掉字符串str左侧的空格
rtrim(str) 去掉字符串str行尾的空格
repeat(str,x) 返回str重复x次的结果
replace(str,a,b) 用字符串b替换字符串str中所有出现的字符串a
strcmp(s1,s2) 比较字符串s1,s2
trim(str) 去掉字符串行尾和行头的空格
substring(str,x,y) 返回字符串str x位置起y个字符串长度的字符串

字符串函数

函数 说明
concat(s1,s2,…,sn) 连接s1,s2,…sn为一个字符串
insert(str,x,y,instr) 将字符串str从第x位置,y个字符串长的子串替换为字符串instr
lower(str) 将字符串str中所有字符变为小写
upper(str) 将字符串str中所有字符变为大写
left(str,x) 返回字符串str最左边的x个字符
right(str,x) 返回字符串str最右边的x个字符
lpad(str,n,pad) 用字符串pad对str最左边进行填充,直到长度为n个字符长度
rpad(str,n,pad) 用字符串pad对str最右边进行填充,直到长度为n个字符长度
ltrim(str) 去掉字符串str左侧的空格
rtrim(str) 去掉字符串str行尾的空格
repeat(str,x) 返回str重复x次的结果
replace(str,a,b) 用字符串b替换字符串str中所有出现的字符串a
strcmp(s1,s2) 比较字符串s1,s2
trim(str) 去掉字符串行尾和行头的空格
substring(str,x,y) 返回字符串str x位置起y个字符串长度的字符串

997755.com澳门葡京 26

数值函数

函数 说明
ABS(x) 返回x的绝对值
ceil(x) 返回大于x的最小整数值。MSSQL则为ceiling。ceil(1.2)返回2
floor(x) 返回小于x的最大整数值。floor(1.2)则返回1
mod(x,y) 返回x/y的模,取余
rand() 返回0~1内的随机数
round(x,y) 返回参数x的四舍五入的有y为小数的值,select round(1.211,2),返回1.21;select round(1.25,1) 返回1.3
truncate(x,y) 返回数字x截断为y位小数的结果.select round(1.25,1)返回1.2

数值函数

函数 说明
ABS(x) 返回x的绝对值
ceil(x) 返回大于x的最小整数值。MSSQL则为ceiling。ceil(1.2)返回2
floor(x) 返回小于x的最大整数值。floor(1.2)则返回1
mod(x,y) 返回x/y的模,取余
rand() 返回0~1内的随机数
round(x,y) 返回参数x的四舍五入的有y为小数的值,select round(1.211,2),返回1.21;select round(1.25,1) 返回1.3
truncate(x,y) 返回数字x截断为y位小数的结果.select round(1.25,1)返回1.2

Query Ok代表语句执行成功

日子和岁月函数

函数 说明
curdate() 返回当前日期。select curdate().2016-08-13
curtime() 返回当前时间
now() 返回当前的日期和时间
week(date) 返回date为一年中的第几周
year(date) 返回日期date的年份
date_format(date,fmt) 返回按字符串fmt格式化日期的date值.fmt的格式化有%M(月),%D(日),%Y(年)
datediff(date1,date2) 返回起始时间和结束时间之间的天数
data_add(date,interval expr type) 返回与所给日期相差interval时间段的日期

日子和岁月函数

函数 说明
curdate() 返回当前日期。select curdate().2016-08-13
curtime() 返回当前时间
now() 返回当前的日期和时间
week(date) 返回date为一年中的第几周
year(date) 返回日期date的年份
date_format(date,fmt) 返回按字符串fmt格式化日期的date值.fmt的格式化有%M(月),%D(日),%Y(年)
datediff(date1,date2) 返回起始时间和结束时间之间的天数
data_add(date,interval expr type) 返回与所给日期相差interval时间段的日期

一 row affected代表数据库1行收到影响

流程函数

函数 说明
if(value,t,f) 如果value为真,返回t,否则返回f
ifnull(value1,value2) 如果value1不为空,返回value1,否则返回value2.select ifnull(2,’woc’),返回2
case when value1 then result1 ..else default end 如果value1是真,则返回result1,返回返回default
case expr when value1 then result1.. else default end 如果表达式expr等于value1,则返回result,否则返回default

流程函数

函数 说明
if(value,t,f) 如果value为真,返回t,否则返回f
ifnull(value1,value2) 如果value1不为空,返回value1,否则返回value2.select ifnull(2,’woc’),返回2
case when value1 then result1 ..else default end 如果value1是真,则返回result1,返回返回default
case expr when value1 then result1.. else default end 如果表达式expr等于value1,则返回result,否则返回default

0.0一 sec代表操作实施的时刻

其他函数

函数 说明
database() 返回当前数据库名称
password(str) 返回字符串str的加密版本
md5(str) 返回字符串str的md5值

任何函数

函数 说明
database() 返回当前数据库名称
password(str) 返回字符串str的加密版本
md5(str) 返回字符串str的md5值
create table student(
SID int not null auto_increment,
sNo int ,
sName varchar(50) not null,
primary key(SID)
);

陆、选用适当的数据类型

6、选拔万分的数据类型

一.翻看系统中都存在什么数据库(show databases;)

char与varchar

在Innodb存款和储蓄引擎中,建议利用varchar类型。对于Innodb数据表,内部的行存款和储蓄格式未有区分固定长度和可变长度列,由此一定长度列的天性不自然比不足变长度的属性好。

char与varchar

在Innodb存款和储蓄引擎中,提出选拔varchar类型。对于Innodb数据表,内部的行存款和储蓄格式没有分别固定长度和可变长度列,由此一定长度列的性质不自然比不足变长度的习性好。

2.在翻看系统中已部分数据库后,能够用(use dbname)选用相应的数据库

Text与blob

诚如在保留少量字符串的时候,我们会挑选char也许varchar,而在保存较大文本的时候,平时会选择接纳text或许blob。两者的分别:text只好保留字符数据,比如日志。blob能保留二进制数据,比如照片。

Text与blob

貌似在保留少量字符串的时候,大家会选择char也许varchar,而在保存较大文本的时候,平常会选用选择text也许blob。两者的区分:text只可以保留字符数据,比如日志。blob能保留二进制数据,比如照片。

叁.在增选相应的数据库后,查询该数据库上面包车型地铁具备的表(show tables)

浮点数与定点数

在MySQL中,decimal只怕(numberic)用来代表定点数

浮点数与定点数

在MySQL中,decimal或许(numberic)用来代表定点数

贰、删除数据库

日子类型的精选

date/time/datetime/timestamp

日期类型的抉择

date/time/datetime/timestamp

剔除数据库的语法:drop databse dbname;

7、索引的布置性和应用

柒、索引的筹划和接纳

三、创建表

目录概述

目录是数据库中用来加强质量的最常用工具。在MySQL中,MyISAM与Innodb存款和储蓄引擎的表暗中认可创制的都以Btree索引。

一.索引的创导

create table indexTest(
id int not null auto_increment,
memberid int not null,
createtime datetime not null default current_timestamp,
primary key (id)
)

alter table indextest add orderserial varchar(50) not null;


create unique index IX_orderserial on indexTest(orderserial);

insert into indextest (memberid,createtime,orderserial)values(112123,'2016-08-14','sz121213')

证实:上边创设一个表,个中定义orderserial为唯一索引。
语法:create [unique\fulltext\spatial] index index_name
on tablename(columname)

2.企划索引的规格

  • 最合适的索引列是出新在where子句中列,或连接子句中钦点的列,而不是出现在select关键字背后的精选列表的列
  • 接纳唯一索引,需求思考列中某些值得分布,假如索引列种的基数越大,则索引的功用越好。举个例子:订单号就可以设置唯一索引,因为订单号的差别。而对于rowstatus就不用了,因为rowstatus要么是实惠要么是无效。那样的筛选出的限定还是成都百货上千,没风趣
  • 不用过分索引。因为有着也要侵占额外的磁盘空间,倘诺1个索引很少使用,那么会不须求的减缓表的修改速度

显示MySQL的推行安插:explain 后面加mysql语句

目录概述

目录是数据库中用来增长品质的最常用工具。在MySQL中,MyISAM与Innodb存款和储蓄引擎的表默许创造的都是Btree索引。

一.索引的创造

create table indexTest(
id int not null auto_increment,
memberid int not null,
createtime datetime not null default current_timestamp,
primary key (id)
)

alter table indextest add orderserial varchar(50) not null;


create unique index IX_orderserial on indexTest(orderserial);

insert into indextest (memberid,createtime,orderserial)values(112123,'2016-08-14','sz121213')

表达:上面创造一个表,在那之中定义orderserial为唯一索引。
语法:create [unique\fulltext\spatial] index index_name
on997755.com澳门葡京, tablename(columname)

二.统一筹划索引的基准

  • 最合适的索引列是出现在where子句中列,或连接子句中钦点的列,而不是并发在select关键字背后的选料列表的列
  • 动用唯一索引,须要考虑列中有个别值得分布,要是索引列种的基数越大,则索引的效能越好。举个例子:订单号就足以设置唯一索引,因为订单号的不一样。而对此rowstatus就绝不了,因为rowstatus要么是立见成效要么是于事无补。这样的筛选出的界定照旧数不完,没风趣
  • 永不过度索引。因为有着也要占用额外的磁盘空间,假诺1个索引很少使用,那么会不供给的减缓表的改动速度

呈现MySQL的履行安排:explain 后面加mysql语句

语法:create table tablename(column_name_1 column_type_1
constraints,column_name_2 column_type2 constrationts)

八、视图

八、视图

mysql的表名是以目录格局储存在磁盘上,表名的字符能够是任何目录名允许的字符。

视图(View)

概念:视图是一种虚拟存在的表,对于利用视图的用户来说基本上是晶莹的,视图并不是在数据库中实际上存在。

优势:

  • 简言之,用户完全不供给关切前面对应的表的构造/关联条件和筛选标准。对用户来说已经是过滤好的符合条件的结果集
  • 康宁,使用视图的用户只好访问他们被允许查询的结果集
  • 数据独立,一旦视图的结构鲜明了,能够屏蔽表结构变迁对用户的震慑,源表扩张列对视图未有影响。

语法:

create or replace view index_view as
select * from indextest
  • 创建create [or replace] view viewName as select …
  • 查询 select * from 视图名称
  • 来得视图 show tables;
  • 删除视图 drop view viewname

视图(View)

概念:视图是一种虚拟存在的表,对于使用视图的用户来说基本上是晶莹剔透的,视图并不是在数据库中其实存在。

优势:

  • 简短,用户完全不须求关心后边对应的表的构造/关联条件和筛选标准。对用户来说已经是过滤好的符合条件的结果集
  • 安全,使用视图的用户只好访问他们被允许查询的结果集
  • 数量独立,1旦视图的构造明确了,能够屏蔽表结构变迁对用户的影响,源表扩展列对视图未有影响。

语法:

create or replace view index_view as
select * from indextest
  • 创建create [or replace] view viewName as select …
  • 查询 select * from 视图名称
  • 体现视图 show tables;
  • 去除视图 drop view viewname

column_name是列名

九、存款和储蓄进程和函数

玖、存款和储蓄进度和函数

column_type是列的数据类型

积存进度(store procedure)和函数

积存进度和函数是优先经过编写翻译并设有数据库中的一段SQL语句的会晤,调用存储进度和函数能够简化使用开垦职员的诸多行事,减少数额在数据库和应用服务器之间的传输,对于增长多少处理的频率是有便宜的
语法:

create database finance;//创建finance数据库

use finance;
create table orders(
 orderId bigint not null auto_increment,
 memberId int not null default 0,
 serialNumber varchar(50) not null default '',
 amount decimal(18,2) not null default 0,
 createTime datetime not null default current_timestamp,
 primary key (orderid)
)//创建orders订单表

insert into orders (memberId,serialNumber,amount) values(6561121,'sz12234222',5),(233444,'ys1652233',10)//插入测试数据

delimiter &
create procedure orders_serial(in serial varchar(50))
reads sql data
begin
  select * from orders
  where serialNumber=serial;
end &

注解:delimiter
$$命令便是将讲话的停止符从分号;修改成别的标志,那里指的是$$为尾声。那样在number前面包车型地铁分公司就不会觉得结束。

  • #### 调用存储进程

call orders_serial('sz12234222')
  • #### 存款和储蓄进度的功利

逻辑封装在数额库端,调用者不供给精晓在那之中的处理逻辑,一旦调用逻辑爆发变化,只要求修改存款和储蓄进度就能够,而对调用者的顺序完全未有影响。

  • #### 删除存款和储蓄进程

drop procedure if exists orders_serial
//if exists可选
  • #### 查看存款和储蓄进程气象

show  procedure status like 'orders_serial'
  • #### 查询存储进程的定义

show  create  procedure orders_serial

仓库储存进程(store procedure)和函数

存储进度和函数是预先经过编写翻译并存在数据库中的1段SQL语句的汇集,调用存款和储蓄进程和函数可以简化使用开垦职员的好多办事,收缩数量在数据库和应用服务器之间的传输,对于巩固多少处理的频率是有利益的
语法:

create database finance;//创建finance数据库

use finance;
create table orders(
 orderId bigint not null auto_increment,
 memberId int not null default 0,
 serialNumber varchar(50) not null default '',
 amount decimal(18,2) not null default 0,
 createTime datetime not null default current_timestamp,
 primary key (orderid)
)//创建orders订单表

insert into orders (memberId,serialNumber,amount) values(6561121,'sz12234222',5),(233444,'ys1652233',10)//插入测试数据

delimiter &
create procedure orders_serial(in serial varchar(50))
reads sql data
begin
  select * from orders
  where serialNumber=serial;
end &

申明:delimiter
$$命令就是将讲话的利落符从分号;修改成任何标志,那里指的是$$为末段。那样在number后边的子集团就不会认为结束。

  • #### 调用存款和储蓄进度

    call orders_serial('sz12234222')
    
  • #### 存款和储蓄进程的裨益

逻辑封装在多少库端,调用者不要求明白个中的处理逻辑,一旦调用逻辑产生变化,只须要修改存储进程即可,而对调用者的次第完全未有影响。

  • #### 删除存款和储蓄进程

    drop procedure if exists orders_serial
    //if exists可选
    
  • #### 查看存款和储蓄进程气象

    show  procedure status like 'orders_serial'
    
  • #### 查询存款和储蓄进程的概念

    show  create  procedure orders_serial
    

constrationts是列的自律规范

储存进度变量的使用

存款和储蓄进程能够选拔变量,并且在MySQL5.一版本后,不区分轻重缓急写

  • #### 变量的定义

  declare currentTime date;

变量的成效域只可以在begin…end块中,能够嵌套在块中

  • #### 变量的赋值

set currentTime=now();//直接赋值

select x into currentTime from x;//也得以透过sql语句进行赋值

  • #### 定义规则和处理

declare handler_type handler for contidtion_value

handler_type:

  • continue
  • exit
  • undo

contidtion_value:

  • sqlstate
  • sqlwarning
  • not found
  • sqlexception

 declare continue handler for sqlstate '2' set @x=1

存款和储蓄进程变量的选拔

积存进度能够动用变量,并且在MySQL伍.一本子后,不区分轻重缓急写

  • #### 变量的概念

      declare currentTime date;
    

    变量的功能域只好在begin…end块中,能够嵌套在块中

  • #### 变量的赋值

    set currentTime=now();//直接赋值
    

    select x into currentTime from x;//也能够透过sql语句进行赋值

  • #### 定义规则和处理

    declare handler_type handler for contidtion_value
    

    handler_type:

  • continue

  • exit
  • undo

contidtion_value:

  • sqlstate
  • sqlwarning
  • not found
  • sqlexception

     declare continue handler for sqlstate '2' set @x=1
    

997755.com澳门葡京 27

光标的采用

在仓库储存进程和函数中,能够利用光标对结果集举行巡回处理,光标的施用带有光标的扬言:
open、fetch、close

光标的选取

在存款和储蓄进度和函数中,可以选用光标对结果集进行巡回处理,光标的施用带有光标的扬言:
open、fetch、close

1.查看表定义:desc tablename

定义

declare cur_id cursor for select * from orders;
open cur_id;
fetch cur_id;
close cur_id;

定义

declare cur_id cursor for select * from orders;
open cur_id;
fetch cur_id;
close cur_id;

贰.查看制造表的SQL语句:show create table tablename

事件调度器

事件调度器是MySQL伍.壹末尾新增的功用,能够将数据库依据自定义时间周期触发某种操作。数据库私下认可操作是关门的。需求打开

create event x
on schedule
every 5 second 
do
insert into orders (memberId,serialNumber,amount) values(6561121,'222',5)

set global  event_scheduler =1//打开调度器  
alter event x disable;//禁用事件调度器
drop event x;//删除事件调度器

事件调度器

事件调度器是MySQL5.一后边新增的遵从,能够将数据库遵照自定义时间周期触发某种操作。数据库暗中同意操作是关闭的。必要张开

create event x
on schedule
every 5 second 
do
insert into orders (memberId,serialNumber,amount) values(6561121,'222',5)

set global  event_scheduler =1//打开调度器  
alter event x disable;//禁用事件调度器
drop event x;//删除事件调度器

四、删除表

十、触发器

十、触发器

删除表的语法:drop table tablename;

触发器

触发器是在5.0二本子后支持的,触发器是与表有关的数据库对象,在满足条件时接触,并推行触发器中定义的说话集合。能够支持应用在多少库端确认保障数据的完整性

drop trigger orderlog

delimiter $
create trigger orderlog 
after insert on orders for each row
begin
 insert into orderslog (content) values(new.serialNumber);
 end $

 insert into orders (memberId,serialNumber,amount) values(6561121,'sz12234222',5)

分解:上边描述的是创办叁个触发器,当往订单表中插入数据未来,在订单日志表插入一条记下。使用old和new来引用触发器爆发变化的笔录内容,最近只支付行级触发,不援助语句级触发

触发器

触发器是在五.0二版本后协助的,触发器是与表有关的数据库对象,在满意条件时接触,并履行触发器中定义的口舌集合。可以扶助应用在数码库端确认保证数据的完整性

drop trigger orderlog

delimiter $
create trigger orderlog 
after insert on orders for each row
begin
 insert into orderslog (content) values(new.serialNumber);
 end $

 insert into orders (memberId,serialNumber,amount) values(6561121,'sz12234222',5)

诠释:上边描述的是创办三个触发器,当往订单表中插入数据以往,在订单日志表插入一条记下。使用old和new来引用触发器爆发变化的笔录内容,近来只支付行级触发,不扶助语句级触发

五、修改表

触发器执行的各样

before insert\before update\after update

触发器执行的依次

before insert\before update\after update

aleter 语法 | 说明

10一、事务控制和锁定语句

10一、事务控制和锁定语句

---|---
alter table tablename modify columnname newColumnType | 修改表字段的类型(==modify 不能更改字段名称==)
alter table tablename add newColumnname newColumnType| 增加表字段
alter table tablename drop oldCloumnname|删除表字段
alter table tablename change oldColumname newColumnname newColumntype|修改字段的名称及类型
alter table tablename rename (to) newtablename|修改表名称

MySQL存款和储蓄引擎的事务表达

存储引擎 说明
InnoDB 支持行级锁定
MyISAM 支持表级锁定
Memory 支持表级锁定
BDB 支持页级锁定
  • #### Lock Table与Unlock Table

use finance;
lock table orders read;

unlock table;

只要某些过程(session壹)lock定了表,那么其余的长河(session二)能够查询,不过不可能举行立异操作,直到第多少个经过释放了锁

  • #### 事务控制

    事务关键字 说明
    start transaction 开启一个新事务
    commit 提交事务
    rollback 回滚事务

MySQL存款和储蓄引擎的工作表明

存储引擎 说明
InnoDB 支持行级锁定
MyISAM 支持表级锁定
Memory 支持表级锁定
BDB 支持页级锁定
  • #### Lock Table与Unlock Table

use finance;
lock table orders read;

unlock table;

要是有个别进度(session一)lock定了表,那么别的的进度(session二)可以查询,然而无法拓展立异操作,直到第贰个进程释放了锁

  • #### 事务控制

    事务关键字 说明
    start transaction 开启一个新事务
    commit 提交事务
    rollback 回滚事务

修改字段的排列顺序

十二、总结

很喜欢你能阅读到此处,只怕在三十秒钟很难接受这么多的知识,那篇小说也是自作者在此以前学习MySQL笔记整合的,但请容许本身以那一个词为标题。那篇作品也是论战偏多,对于内部相比相比较难通晓知识点写些德姆o,权当个体知道,如有不足的地方,请您建议。要是对你拥有支持,请点个赞!

十二、总结

很欢悦你能翻阅到这边,也许在三十几分钟很难接收这么多的学识,这篇小说也是自个儿事先学习MySQL笔记整合的,但请容许本身以这些词为标题。那篇小说也是论战偏多,对于里边相比较相比较难驾驭知识点写些德姆o,权当个人精晓,如有不足的地点,请你提出。假如对你有所帮衬,请点个赞!

在alter的语法前边都有[first\after columnname]可选项

alter table user add address varchar(20) first ;
alter table user add age int after name ; 

DML(对数据库表记录进行操作,增(insert)删(delete)改(update)查(select))

1.insert语句

语法:

插入一条:insert into
tablename(columnname一,columnname2…)values(val一,val二…);

安排多条:insert into
tablename(columnname一,columnname二…)values(val一,val二…),(val壹,val二…);

2.update语句

语法:update tablename set columnname=value [where condition]

借使利用MySQL
Workbench,update语句不加where条件的会实施错误,必要如下图设置撤除设置:

997755.com澳门葡京 28

-3.delete语句

语法:delete from tablename where condition

-4.select语句

语法:select * from tablename [where condition]

5.表连接

壹.内连接(仅选出两张表中相互称合的数目)

select cno,cname,sname from student inner join course on cno=sno;
select cno,cname,sname from student,course where cno=sno;

2.外连接

外接连又分别:

一.左老是(left join):包含左侧表的保有记录,左侧没有的为Null

二.右连连(right join):包括左侧表的具备记录,左边没有的为null

6.子查询

-7.记下联合

语法:

select * from t1 union all select * from t2;
select * from t1 union select * from t2;

union all与union的区别:

union all是把结果集间接统一在共同,而union是将union
all后的结果开始展览1遍distinct,去除重复后的结果

DCL语句(DCL语句龙假诺dba用来治本体系中的对象权限)

grant与revoke

叁、MySQL支持的数据类型

数值类型

MySQL协助项近日边的小括号钦命显示上涨幅度,例如:int(5)表示当数值宽度小于5的时候在数字后面填满宽度,若是不展现钦点宽度则暗中认可为int(1一)。假诺插入的数目抢先这几个数值宽度,对实在的插入值是未有影响的,是根据int类型的骨子里尺寸实行的。

create table valuetype(
age int,
age1 int
)
insert into valuetype(age,age1)values(1,2);//这时候数据库就显示1
alter table valuetype modify age int zerofill;//这时候数据库就显示'0000000001'

数据插入bit类型字段时,首先调换为二进制,假设位数允许,将插入成功,借使位数小于实际的地方,则插入退步。

日期时间档次

mysql里面获取当前岁月为now().mssql获取当前时间为getdate()

timestamp,补助的界定非常小,从197零-2038年,timestamp受时区的熏陶

create table timestamptest(
tp timestamp)

系统会活动给tp赋予暗许值current_timestamp(系统日期),可是mysql只给第8个timestamp设置默许值,若是有第一个timestamp类型,则私下认可值设置为0

字符串类型

一.char与varchar类型的区分:

char列最终的空格已经去除,而varchar保留空格

四、MySQL中运算符

算术运算符

正如运算符,满意重临一,否则再次来到0

逻辑运算符(布尔运算符)

位运算符

运算符优先级,大多情形下接纳()进行操作

5、常用函数

字符串函数

数值函数

日期和时间函数

流程函数

其他函数

陆、选取合适的数据类型

char与varchar

在Innodb存款和储蓄引擎中,提议采纳varchar类型。对于Innodb数据表,内部的行存款和储蓄格式未有区分固定长度和可变长度列,由此一定长度列的习性不肯定比不足变长度的天性好。

Text与blob

相似在保存少量字符串的时候,大家会挑选char或然varchar,而在保留较大文本的时候,日常会采取选拔text大概blob。两者的界别:text只好保留字符数据,比如日志。blob能保留2进制数据,比如照片。

浮点数与定点数

在MySQL中,decimal或许(numberic)用来代表定点数

日子类型的挑3拣四

date/time/datetime/timestamp

7、索引的筹划和利用

目录概述

目录是数据库中用来增加品质的最常用工具。在MySQL中,MyISAM与Innodb存款和储蓄引擎的表暗许成立的都是Btree索引。

一.索引的创造

create table indexTest(
id int not null auto_increment,
memberid int not null,
createtime datetime not null default current_timestamp,
primary key (id)
)
alter table indextest add orderserial varchar(50) not null;
create unique index IX_orderserial on indexTest(orderserial);

insert into indextest
(memberid,createtime,orderserial)values(112123,’2016-08-14′,’sz121213′)
表达:上边创造八个表,在那之中定义orderserial为唯一索引。

语法:create [unique\fulltext\spatial] index index_name on
tablename(columname)

贰.企划索引的口径

一.最合适的索引列是出现在where子句中列,或连接子句中钦命的列,而不是出现在select关键字背后的取舍列表的列

贰.利用唯一索引,须求思索列中有个别值得分布,即便索引列种的基数越大,则索引的效果越好。举个例子:订单号就能够安装唯一索引,因为订单号的分裂。而对此rowstatus就无须了,因为rowstatus要么是立竿见影要么是没用。那样的筛选出的范围依然成百上千,未有意义

三.决可是度索引。因为兼具也要占用额外的磁盘空间,如若三个目录很少使用,那么会不供给的减缓表的改变速度
来得MySQL的举办计划:explain 后边加mysql语句

八、视图

视图(View)

概念:视图是一种虚拟存在的表,对于利用视图的用户来说基本上是晶莹的,视图并不是在数据库中其实存在。

优势:

一.简易,用户完全不必要关心前边对应的表的构造/关联条件和筛选标准。对用户来说已经是过滤好的符合条件的结果集

二.平安,使用视图的用户只好访问他们被允许查询的结果集

三.数量独立,一旦视图的构造分明了,能够屏蔽表结构变迁对用户的震慑,源表增添列对视图未有影响。

语法:

create or replace view index_view as
select * from indextest

1.创建create [or replace] view viewName as select …

2.查询 select * from 视图名称

叁.呈现视图 show tables;

四.刨除视图 drop view viewname

玖、存款和储蓄进度和函数

壹、存款和储蓄进程(store
procedure)和函数

储存进度和函数是先行经过编写翻译并存在数据库中的1段SQL语句的集结,调用存储进程和函数能够简化使用开辟人士的大队人马工作,减少数额在数据库和应用服务器之间的传输,对于进步多少处理的频率是有补益的

语法:

create database finance;//创建finance数据库
use finance;
create table orders(
orderId bigint not null auto_increment,
memberId int not null default 0,
serialNumber varchar(50) not null default '',
amount decimal(18,2) not null default 0,
createTime datetime not null default current_timestamp,
primary key (orderid)
)//创建orders订单表
insert into orders (memberId,serialNumber,amount) values(6561121,'sz12234222',5),(233444,'ys1652233',10)//插入测试数据
delimiter &
create procedure orders_serial(in serial varchar(50))
reads sql data
begin
select * from orders
where serialNumber=serial;
end &

诠释:delimiter
$$命令就是将讲话的了断符从分号;修改成其它标志,那里指的是$$为末段。那样在number后边的分公司就不会认为截止。

①.调用存款和储蓄进度

call orders_serial('sz12234222')

二.仓储进度的便宜

逻辑封装在数额库端,调用者不必要理解个中的处理逻辑,一旦调用逻辑发生变化,只须要修改存款和储蓄过程就可以,而对调用者的次第完全未有影响。

叁.去除存款和储蓄进程

drop procedure if exists orders_serial
//if exists可选

四.翻看存款和储蓄进度差情形

show procedure status like 'orders_serial'

五.查询存款和储蓄进度的概念

show create procedure orders_serial

2、存款和储蓄进度变量的利用

储存过程能够运用变量,并且在MySQL5.1本子后,不区分轻重缓急写

一.变量的概念

变量的成效域只可以在begin…end块中,能够嵌套在块中

declare currentTime date;

二.变量的赋值

set currentTime=now();//直接赋值
select XX into currentTime from XX;//也可以通过sql语句进行赋值

三.概念规则和拍卖

declare handler_type handler for contidtion_value;

handler_type:

1.continue;
2.exit;
3.undo;

condition_value:

1.sqlstate
2.sqlwarning
3.not found
4.sqlexception

eg: declare continue handler for sqlstate ‘2’ set @x=1;

3、光标的利用

在仓库储存过程和函数中,能够动用光标对结果集实行巡回处理,光标的使用带有光标的宣示:
open、fetch、close

定义:

declare cur_id cursor for select * from orders;
open cur_id;
fetch cur_id;
close cur_id;

4、事件调度器

事件调度器是MySQL5.一后边新增的作用,能够将数据库依据自定义时间周期触发某种操作。数据库暗许操作是关闭的。须要张开

create event x
on schedule
every 5 second
do
insert into orders (memberId,serialNumber,amount) values(6561121,'222',5)


set global event_scheduler =1//打开调度器
alter event x disable;//禁用事件调度器
drop event x;//删除事件调度器

十、 触发器

触发器

触发器是在5.0二版本后扶助的,触发器是与表有关的数据库对象,在满意条件时接触,并实行触发器中定义的讲话集合。能够帮忙应用在多少库端确定保证数据的完整性

drop trigger orderlog
delimiter $
create trigger orderlog 
after insert on orders for each row
begin
insert into orderslog (content) values(new.serialNumber);
end 
insert into orders (memberId,serialNumber,amount) values(6561121,'sz12234222',5)

演说:上边描述的是创立贰个触发器,当往订单表中插入数据以往,在订单日志表插入一条记下。使用old和new来引用触发器发生变化的记录内容,如今只开采用实行级触发,不扶助语句级触发

触发器执行的相继

before insert\before update\after update

拾一、 事务控制和锁定语句

MySQL存款和储蓄引擎的作业表达

1.Lock Table与Unlock Table

语法:

use finance;
lock table orders read;
unlock table;

假设某些进程(session1)lock定了表,那么任何的进程(session二)能够查询,但是不能够开始展览翻新操作,直到第一个经过释放了锁

2.事情控制

十二、总结

很喜欢你能读书到此地,只怕在2六秒钟很难吸收这么多的文化,那篇小说也是本人事先学习MySQL笔记整合的。那篇小说也是论战偏多,对于内部比较相比较难驾驭知识点写些Demo,权当个人驾驭,如有不足的地方,请你提议。假如对您抱有协助,请点个赞!

您恐怕感兴趣的篇章:

  • 赶快学习MySQL索引的入门一级教程
  • MySQL新手入门指南–快捷参考

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website