学习笔记StudioNoteBook
2020-06-30 16:22:05 129 举报
AI智能生成
mysql 学习笔记
作者其他创作
大纲/内容
UE4 Studio NoteBook
Blueprints
level blueprint
Windows
Item
Compile
编译并保存
Search
搜索相关节点
Blueprint props
蓝图属性
Play
播放
My blueprint
Variable
Default Value
需要在编译后填写初值值
新增变量需要编译
byte类型,超过最大值255,超出部分取余
函数过程需要的变量不匹配变量时需要转换
系统自动添加转换器
函数过程需要的变量匹配变量时自动链接到函数过程
添加变量到图标中
拖动鼠标左键到Event Graph 中添加变量
此时Graph中显示并且需要选择Get/Set
Ctrl+拖动变量=Get
获得变量
Ctrl+Alt+拖动变量=Set
设置变量
蓝图空白处右键查询亦可
可搜索相关:变量/命令/事件/函数
变量处理
直接由变量输出节点拖动到空白处,系统会自动匹配类型以及可支持命令
Fstring
Name
很难区分,执行效率高,全局字符表中储存
String
动态数组字符
Text
长度加强型文字
FArray
Vector
相量
Rotation
yaw
航向角
Pitch
俯仰角
Roll
旋转角
Transform
Location=Vector
Rotation=Rotation
Scale=变换大小
无法被print打印,需要其他命令支持并转化
function
exec
接口
左键点击拖动到输入接口
Alt+左键点击接口取消关联
输出接口按住,到空白处松开,会自动插入在两个函数中间
接口仅表示关系,不传递内容(值)
按需在各支持命令中进行设置(值)
Default
默认值
EventBeginPlay
Event Tick
DeltaSeconds
每秒执行次数
PrintString
Print Screen
执行时在屏幕上显示
Print To log
执行时在日志上显示
Text Color
显示文字颜色
Delay
Duration
持续时间(单位:秒)
RetriggerableDelay
Duration
持续时间完毕之前,再次被触发,则恢复初始时间
append
链接添加两个字符串类型变量
Build String
Appednt to
被添加内容
PreFix
前缀
In
根据类型进行判断/运算
Object
Create a Reference to 【object name】
创建引用:需在场景中选中相关实例,并复制,才能在蓝图界面中创建,无法在类蓝图中创建
仅只能打印对象名称
Stuffix
后缀
Branch
condition
true
false
快捷键
B+鼠标左键
Do once
只可执行一次,忽略后面
Reset
当只有符合重置值,条件才可以再次被符合再执行
Do N
超过N值不再被执行
Reset
同Do once
DoOnce Multyinput
应用功能详见 Do
多条件选项输入:输入不同,获得不同输出
新增Reset Out输出节点
FlipFlop
A
B
A 和 B 之间切换
IS A
当值为A时输出值
Gate
Toggle
切换开关状态
Start Closed
初始关闭状态
MultyGate
IsRandom
随机执行选项,直到全部被遍历
Loop
可循环执行
start Index
针对随机开始序号,序号一,一定被首先被执行
Out
输出选项
Sequence
Then
触发条件接口
macro
graph
蓝图图标关系
关闭蓝图Event Graph窗口无法在菜单栏中打开,只需要在相应的graph中双击即可打开
event dispatcher
Details
Global
父类
Event Graph
鼠标操作:左键勾选,右键拖动画面,中建缩放
Memu
window
plaette
favorites
find note
寻找相关节点/类
class
1、拖动相关节点/类到Event Graph
2、Event Graph 空白出鼠标右键
class blueprint
子主题
Stock Waresoft link key
F类键
F1
分时成交明细
F2
分价表
F3
上证指数
F4
深圳指数
F5
交易趋势图
日K线和分时图切换
F6
收藏股票
F7
资讯
F8
多周期切换
F9
登录交易系统
F10
大盘资讯
F11
特别提示
F12
登录交易系统
分时图
分时区间统计:基于分时成交明细统计
统计新消息
大单成交
右键明细表可导出,文件名仅以股票代码命名,表内日期格式为:短日期格式无年份
价量分布
指标
MACD
DIF
DEA
DMI
BOLL
FSL
TRIX
BRAR
CR
VR
OBV
ASI
EMV
VOL-TDX
RSI
WR
SAR
KDJ
CCI
ROC
PSY
MCST
MySQL
图形化管理工具
MySQL Workbench
phpMyAdmin
命令/语法
命令
;
执行命令
#
(直接)注释内容
--
(空格)+注释内容
/* */
多行注释
help
help contents
查询帮主文档目录列表
选择其中某项,继续查看相关文档
MySQL 提供4张数据表来保存服务端的帮助信息
help_category
help_keyword
help_relation
help_topic
子查询
in | not in
exists | not exists
嵌套规则
select * from (select * from <table_name>) as <table_name1>;
先执行子查询,再执行父查询
正则表达式
^
匹配文本的开始字符
'^b' 匹配以字母 b 开头的字符串
book、big、banana、bike
$
匹配文本的结束字符
'st$' 匹配以 st 结尾的字符串
test、resist、persist
.
匹配任何单个字符
'b.t' 匹配任何 b 和 t 之间有一个字符
bit、bat、but、bite
*
匹配零个或多个在它前面的字符
'f*n' 匹配字符 n 前面有任意个字符 f
fn、fan、faan、abcn
+
匹配前面的字符 1 次或多次
'ba+' 匹配以 b 开头,后面至少紧跟一个 a
ba、bay、bare、battle
<字符串>
匹配包含指定字符的文本
'fa' 匹配包含‘fa’的文本
fan、afa、faad
[字符集合]
匹配字符集合中的任何一个字符
'[xz]' 匹配 x 或者 z
dizzy、zebra、x-ray、extra
[^]
匹配不在括号中的任何字符
'[^abc]' 匹配任何不包含 a、b 或 c 的字符串
desk、fox、f8ke
字符串{n}
匹配前面的字符串至少 n 次
'b{2}' 匹配 2 个或更多的 b
bbb、bbbb、bbbbbbb
字符串{n,m}
匹配前面的字符串至少 n 次, 至多 m 次
'b{2,4}' 匹配最少 2 个,最多 4 个 b
bbb、bbbb
数值型函数
ABS 求绝对值
SQRT 求二次方根
MOD 求余数
CEIL 和 CEILING 两个函数功能相同,都是返回不小于参数的最小整数,即向上取整
FLOOR 向下取整,返回值转化为一个BIGINT
RAND 生成一个0~1之间的随机数,传入整数参数是,用来产生重复序列
ROUND 对所传参数进行四舍五入
SIGN 返回参数的符号
POW 和 POWER 两个函数的功能相同,都是所传参数的次方的结果值
SIN 求正弦值
ASIN 求反正弦值,与函数 SIN 互为反函数
COS 求余弦值
ACOS 求反余弦值,与函数 COS 互为反函数
TAN 求正切值
ATAN 求反正切值,与函数 TAN 互为反函数
COT 求余切值
SQRT 求二次方根
MOD 求余数
CEIL 和 CEILING 两个函数功能相同,都是返回不小于参数的最小整数,即向上取整
FLOOR 向下取整,返回值转化为一个BIGINT
RAND 生成一个0~1之间的随机数,传入整数参数是,用来产生重复序列
ROUND 对所传参数进行四舍五入
SIGN 返回参数的符号
POW 和 POWER 两个函数的功能相同,都是所传参数的次方的结果值
SIN 求正弦值
ASIN 求反正弦值,与函数 SIN 互为反函数
COS 求余弦值
ACOS 求反余弦值,与函数 COS 互为反函数
TAN 求正切值
ATAN 求反正切值,与函数 TAN 互为反函数
COT 求余切值
字符串函数
LENGTH 计算字符串长度函数,返回字符串的字节长度
CONCAT 合并字符串函数,返回结果为连接参数产生的字符串,参数可以使一个或多个
INSERT 替换字符串函数
LOWER 将字符串中的字母转换为小写
UPPER 将字符串中的字母转换为大写
LEFT 从左侧字截取符串,返回字符串左边的若干个字符
RIGHT 从右侧字截取符串,返回字符串右边的若干个字符
TRIM 删除字符串左右两侧的空格
REPLACE 字符串替换函数,返回替换后的新字符串
SUBSTRING 截取字符串,返回从指定位置开始的指定长度的字符换
REVERSE 字符串反转(逆序)函数,返回与原始字符串顺序相反的字符串
CONCAT 合并字符串函数,返回结果为连接参数产生的字符串,参数可以使一个或多个
INSERT 替换字符串函数
LOWER 将字符串中的字母转换为小写
UPPER 将字符串中的字母转换为大写
LEFT 从左侧字截取符串,返回字符串左边的若干个字符
RIGHT 从右侧字截取符串,返回字符串右边的若干个字符
TRIM 删除字符串左右两侧的空格
REPLACE 字符串替换函数,返回替换后的新字符串
SUBSTRING 截取字符串,返回从指定位置开始的指定长度的字符换
REVERSE 字符串反转(逆序)函数,返回与原始字符串顺序相反的字符串
日期和时间函数
CURDATE 和 CURRENT_DATE 两个函数作用相同,返回当前系统的日期值
CURTIME 和 CURRENT_TIME 两个函数作用相同,返回当前系统的时间值
NOW 和 SYSDATE 两个函数作用相同,返回当前系统的日期和时间值
UNIX_TIMESTAMP 获取UNIX时间戳函数,返回一个以 UNIX 时间戳为基础的无符号整数
FROM_UNIXTIME 将 UNIX 时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数
MONTH 获取指定日期中的月份
MONTHNAME 获取指定日期中的月份英文名称
DAYNAME 获取指定曰期对应的星期几的英文名称
DAYOFWEEK 获取指定日期对应的一周的索引位置值
WEEK 获取指定日期是一年中的第几周,返回值的范围是否为 0〜52 或 1〜53
DAYOFYEAR 获取指定曰期是一年中的第几天,返回值范围是1~366
DAYOFMONTH 获取指定日期是一个月中是第几天,返回值范围是1~31
YEAR 获取年份,返回值范围是 1970〜2069
TIME_TO_SEC 将时间参数转换为秒数
SEC_TO_TIME 将秒数转换为时间,与TIME_TO_SEC 互为反函数
DATE_ADD 和 ADDDATE 两个函数功能相同,都是向日期添加指定的时间间隔
DATE_SUB 和 SUBDATE 两个函数功能相同,都是向日期减去指定的时间间隔
ADDTIME 时间加法运算,在原始时间上添加指定的时间
SUBTIME 时间减法运算,在原始时间上减去指定的时间
DATEDIFF 获取两个日期之间间隔,返回参数 1 减去参数 2 的值
DATE_FORMAT 格式化指定的日期,根据参数返回指定格式的值
WEEKDAY 获取指定日期在一周内的对应的工作日索引
CURTIME 和 CURRENT_TIME 两个函数作用相同,返回当前系统的时间值
NOW 和 SYSDATE 两个函数作用相同,返回当前系统的日期和时间值
UNIX_TIMESTAMP 获取UNIX时间戳函数,返回一个以 UNIX 时间戳为基础的无符号整数
FROM_UNIXTIME 将 UNIX 时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数
MONTH 获取指定日期中的月份
MONTHNAME 获取指定日期中的月份英文名称
DAYNAME 获取指定曰期对应的星期几的英文名称
DAYOFWEEK 获取指定日期对应的一周的索引位置值
WEEK 获取指定日期是一年中的第几周,返回值的范围是否为 0〜52 或 1〜53
DAYOFYEAR 获取指定曰期是一年中的第几天,返回值范围是1~366
DAYOFMONTH 获取指定日期是一个月中是第几天,返回值范围是1~31
YEAR 获取年份,返回值范围是 1970〜2069
TIME_TO_SEC 将时间参数转换为秒数
SEC_TO_TIME 将秒数转换为时间,与TIME_TO_SEC 互为反函数
DATE_ADD 和 ADDDATE 两个函数功能相同,都是向日期添加指定的时间间隔
DATE_SUB 和 SUBDATE 两个函数功能相同,都是向日期减去指定的时间间隔
ADDTIME 时间加法运算,在原始时间上添加指定的时间
SUBTIME 时间减法运算,在原始时间上减去指定的时间
DATEDIFF 获取两个日期之间间隔,返回参数 1 减去参数 2 的值
DATE_FORMAT 格式化指定的日期,根据参数返回指定格式的值
WEEKDAY 获取指定日期在一周内的对应的工作日索引
聚合函数
MAX 查询指定列的最大值
MIN 查询指定列的最小值
COUNT 统计查询结果的行数
SUM 求和,返回指定列的总和
AVG 求平均值,返回指定列数据的平均值
MIN 查询指定列的最小值
COUNT 统计查询结果的行数
SUM 求和,返回指定列的总和
AVG 求平均值,返回指定列数据的平均值
流程控制函数
IF 判断,流程控制
IFNULL 判断是否为空
CASE 搜索语句
IFNULL 判断是否为空
CASE 搜索语句
CASE <表达式>
WHEN <值1> THEN <操作>
WHEN <值2> THEN <操作>
...
ELSE <操作>
END CASE;
WHEN <值1> THEN <操作>
WHEN <值2> THEN <操作>
...
ELSE <操作>
END CASE;
库操作
创建库
create databse <数据库名>;
1044-Access denied for user 'root'@'localhost' to database
无权限创建数据库
查询库
show databases;
删除库
drop database <数据库名>;
链接数据库
use <数据库名>;
tips: Database changed,表示
修改数据库存储引擎
show variables like '%default_storage_engine%';
表操作
建立表
create table <表名>(<字段名><类型>[<字段名n><类型n>]);
外键约束
创建外键约束
[constraint <外键名>]foreignkey 字段名[,字段名2,...] refernce <主表名> 主键列1[,主键列2,...]
error 1005(hy000):can't create table database.tablename'(errno:150)".
以上释义:constraint <创建外键约束名>(不参与到任何表中仅仅是一个中间名称) foreign key <创建本表新字段名> reference<表名> <字段名>(依赖于<表><字段名>)
删除外键约束
alter table <表名>drop foreign key<外键约束名>
在修改表时添加外键约束
alter table <表名>,add constraint <外键约束名> foreign key <外联表名>refernce <外联表名><字段名>
主键约束
<字段名><数据类型> primarykey [默认值]
eg:......->id int(11) primary key,.....
[constraint<约束名>]primary key [字段名]
eg:......->primary key(id)....
eg:primary key (id1, id2)
复合主键
eg:alter table <table>,add primary key(id)
修改数据表,并将ID 设置为主键;
约束
<字段名><数据类型> primarykey [默认值]
不允许空值
<字段名><数据类型>unique
允许空值
alter table <表名> add constraint <唯一约束名> unique <字段名>
修改唯一约束
alter table <表名> drop index <唯一约束名>;
删除唯一约束
check <表达式>
检查约束
alter table <表名> add constraint <检查约束名>check<检查约束>
修改表时检查约束
alter talbe <表名> drop constraint <检查约束>
删除检查约束
当前数据库包含的表信息
show tables;
获取表结构
describe <表名>;
show columns from <表名>;
修改表存储引擎
alter table <table_name> engine=<engine_name>;
仅限修改单表数据引擎;
修改默认的存储引擎,需要修改my.cnf中的配置文件
default-storage-engine=<存储引擎名称>
删除表
drop talbe <表名>;
插入数据
insert into <table> [(<field>[<field n>]) values (value)[,(value n)]
查询数据
select condition from <table> order by column limit <start row><record lines>;
查询命令
查询命令
select
SELECT
{* | <字段列名>}
[
FROM <表 1>, <表 2>…
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]
{* | <字段列名>}
[
FROM <表 1>, <表 2>…
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]
去重命令
distinct
SELECT DISTINCT <字段名> FROM <表名>;
注:distinct仅只返回它的目标字段
为表指定别名
as
<表名> [AS] <别名>
注:别名不能与表名同名,字段的别名不能与该表的其他字段同名;
SELECT stu.name,stu.height FROM tb_students_info AS stu;
SELECT name AS student_name, age AS student_age FROM tb_students_info;
限制查询结果的条数
limit
limit 起始位置,记录数
SELECT * FROM tb_students_info LIMIT 3,5;
limit 记录数 offset 初始位置
SELECT * FROM tb_students_info LIMIT 5 OFFSET 3;
对结果排序
Order by
ORDER BY <字段名> [ASC|DESC]
SELECT name,height FROM tb_students_info ORDER BY height,name;
注:先按height排序,再按name排序;
模糊查询
like
[NOT] LIKE '字符串'
其中:
NOT :可选参数,字段中的内容与指定的字符串不匹配时满足条件。
字符串:指定用来匹配的字符串。“字符串”可以是一个很完整的字符串,也可以包含通配符
NOT :可选参数,字段中的内容与指定的字符串不匹配时满足条件。
字符串:指定用来匹配的字符串。“字符串”可以是一个很完整的字符串,也可以包含通配符
“%”是 MySQL 中最常用的通配符,它能代表任何长度的字符串,字符串的长度可以为 0。例如,a%b表示以字母 a 开头,以字母 b 结尾的任意长度的字符串。该字符串可以代表 ab、acb、accb、accrb 等字符串。
“_”只能代表单个字符,字符的长度不能为 0
默认情况下,LIKE 关键字匹配字符的时候是不区分大小写的。如果需要区分大小写,可以加入 BINARY 关键字。
如果查询内容中包含通配符,可以使用“\”转义符。
%\%,查询结果:dany%
条件查询
where
查询条件可以是:
带比较运算符和逻辑运算符的查询条件
带 BETWEEN AND 关键字的查询条件
带 IS NULL 关键字的查询条件
带 IN 关键字的查询条件
带 LIKE 关键字的查询条件
带比较运算符和逻辑运算符的查询条件
带 BETWEEN AND 关键字的查询条件
带 IS NULL 关键字的查询条件
带 IN 关键字的查询条件
带 LIKE 关键字的查询条件
在 WHERE 关键词后可以有多个查询条件,这样能够使查询结果更加精确。多个查询条件时用逻辑运算符 AND(&&)、OR(||)或 XOR 隔开。
AND:记录满足所有查询条件时,才会被查询出来。
OR:记录满足任意一个查询条件时,才会被查询出来。
XOR:记录满足其中一个条件,并且不满足另一个条件时,才会被查询出来。
AND:记录满足所有查询条件时,才会被查询出来。
OR:记录满足任意一个查询条件时,才会被查询出来。
XOR:记录满足其中一个条件,并且不满足另一个条件时,才会被查询出来。
空值查询
null
IS [NOT] NULL
注:IS [NOT],不能换成“=”,“<>”,"!="
范围查询
between and
[NOT] BETWEEN 取值1 AND 取值2
其中:
NOT:可选参数,表示指定范围之外的值。如果字段值不满足指定范围内的值,则这些记录被返回。
取值1:表示范围的起始值。
取值2:表示范围的终止值。
NOT:可选参数,表示指定范围之外的值。如果字段值不满足指定范围内的值,则这些记录被返回。
取值1:表示范围的起始值。
取值2:表示范围的终止值。
注:返回记录,包含起始值和终止值;
分组查询
group by <字段名>
仅显示每个分组的第一条记录
group by 可以和聚合函数一起使用;
group_concat()
select group_concat(column_name) from table_name group by <column>;
显示每个组的字段值
with rollup
select group_concat(name) from <table_name> group by <column> with rolllup;
用来所有记录的最后加上一条记录,并且该记录是是上面记录的总和
过滤分组
having <condition>
过滤分组
修改表中数据
update <table> set column=new value,....where condition;
增加表汇总字段
alter table <table> add <new column>;
修改表名
rename talbe <old table name> to <new table name>;
清空表
delete condition from<table>;
字段操作
ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件];
表尾添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] FIRST;
表头添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] AFTER <已经存在的字段名>;
指定表中间某个字段后添加字段
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
修改字段名称
导入表【详见:源操作>恢复>load data】
txt
load data local infile "path\<import_file_name>.txt" into table <tab_name>;
主键的数据已经存在
检查导入表名称(提示表不存在;)
检查表格字段数据类型(tips:Data truncated for colum "*" at row "*")
检查是否存放在正确地址:show variables like '%secure%'
保证需要导入文件存放在:secure_file_priv,指定路径,并且是完整的路径地址
如无法查找到相关值,需要在my.ini,中
数据类型错误
检查导入表中所有字段字符集,是否符合需要导入表字段约束;
修改导入文件编码格式(txt)文档;
去除 以上 “local”
csv
tips:Row *** doesn't contain data for all columns;
修改my.ini
将sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
改为sql-mode=""
将sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
改为sql-mode=""
按照以上可以导入但是会有警告,并且部分数据乱码或者缺失
需要预做清洗
character set utf8
Fields Terminated By ',' Enclosed By '"' Escaped By '"' Lines Terminated By '\r\n';
character set utf8
Fields Terminated By ',' Enclosed By '"' Escaped By '"' Lines Terminated By '\r\n';
检查导入文件编码格式是否是UTF8
多表操作
交叉连接【笛卡积尔】
select <column> from <table_name1>,<table_name2> where condition
内连接
select <column> from <table_name1> inner join<table_name2> on condition
多表连接时 连续使用 inner join 即可;
外连接
select <column> from <table_name1> left outer join<table_name2> on condition
以tn1为基础在tn2中按照条件进行查询,返回相关结果,如无结果则返回null
select <column> from <table_name1> right outer join<table_name2> on condition
以tn2为基础在tn1中按照条件进行查询,返回相关结果,如无结果则返回null
权限操作
grant all privileges on *.* to 'wjt'@'localhost' identified by "wujuntian"
grant():授权函数
all privileges:授权所有权限
on *.*:授予数据库操作
to 'wjt'@'localhost':to '用户名'@‘服务器’
identified by '密码':设置密码
flush privileges
刷新权限
alter <tb_name> '<user_name>'@'<sr_name>' identified by '<password>';
show grant [for '<user_name>'@'<host_name>'
查询用户权限
存储过程操作
DELIMITER 命令将结束命令修改为其他字符
结束完存储过程后需要改回;
delimiter ;
在调用、修改、执行相关数据库的存储过程,必须连接相关数据库
创建存储过程
CREATE PROCEDURE <过程名> ( [过程参数[,…] ] ) <过程体>
[过程参数[,…] ] 格式
[ IN | OUT | INOUT ] <参数名> <类型>
[过程参数[,…] ] 格式
[ IN | OUT | INOUT ] <参数名> <类型>
<过程体>
以关键字 BEGIN 开始,以关键字 END 结束
调用存储过程
call <过程名>(<过程参数>)
查看存储过程状态
show procedure status like <过程名>;
查看存储过程
show create procedure <过程名>;
存储过程存放在 information_schema数据库下的Routines表中
修改存储过程
ALTER PROCEDURE 存储过程名 [ 特征 ... ]
删除存储过程
drop procedure <存储过程名>
触发器操作
创建触发器
CREATE trigger <触发器名> < BEFORE | AFTER >
<INSERT | UPDATE | DELETE >
ON <表名> FOR EACH Row<触发器主体>
<INSERT | UPDATE | DELETE >
ON <表名> FOR EACH Row<触发器主体>
FOR EACH ROW
一般是指行级触发,对于受触发事件影响的每一行都要激活触发器的动作
查看触发器
show triggers;
Trigger 表示触发器的名称,在这里触发器的名称为 trigupdate;
Event 表示激活触发器的事件,这里的触发事件为更新操作 UPDATE;
Table 表示激活触发器的操作对象表,这里为 account 表;
Statement 表示触发器执行的操作,这里是向 myevent 数据表中插入一条数据;
Timing 表示触发器触发的时间,这里为更新操作之后(AFTER);
Event 表示激活触发器的事件,这里的触发事件为更新操作 UPDATE;
Table 表示激活触发器的操作对象表,这里为 account 表;
Statement 表示触发器执行的操作,这里是向 myevent 数据表中插入一条数据;
Timing 表示触发器触发的时间,这里为更新操作之后(AFTER);
触发器存放在 information_schema数据库下的Triggers表中
删除触发器
drop trigger [is exists][database_name]<触发器名>
事务操作
UNDO日志
复制事务执行前的数据,用于在事务发生异常时回滚数据。
REDO日志
记录在事务执行中,每条对数据进行更新的操作,当事务提交时,该内容将被刷新到磁盘。
开始事务
begin;
start transaction;
提交事务
commit;
回滚(撤销)事务
RollBack;
查看当前事务自动提交模式
show variables like 'autocommit';
事务隔离级别
读未提交(READ UNCOMITTED)
读提交(READ COMMITTED)
可重复读(REPEATABLE READ)
串行化(SERIALIZABLE)
字符集
字符编码
ASCII
IOS-8859-1
GB2312
BGK
Unicode
UTF-8
UTF-16
UTF-32
查询当前MySQL使用的字符集
SHOW VARIABLES LIKE 'character%';
名称 说明
character_set_client MySQL 客户端使用的字符集
character_set_connection 连接数据库时使用的字符集
character_set_database 创建数据库使用的字符集
character_set_filesystem MySQL 服务器文件系统使用的字符集,默认值为 binary,不做任何转换
character_set_results 数据库给客户端返回数据时使用的字符集
character_set_server MySQL 服务器使用的字符集,建议由系统自己管理,不要人为定义
character_set_system 数据库系统使用的字符集,默认值为 utf8,不需要设置
character_sets_dir 字符集的安装目录
character_set_client MySQL 客户端使用的字符集
character_set_connection 连接数据库时使用的字符集
character_set_database 创建数据库使用的字符集
character_set_filesystem MySQL 服务器文件系统使用的字符集,默认值为 binary,不做任何转换
character_set_results 数据库给客户端返回数据时使用的字符集
character_set_server MySQL 服务器使用的字符集,建议由系统自己管理,不要人为定义
character_set_system 数据库系统使用的字符集,默认值为 utf8,不需要设置
character_sets_dir 字符集的安装目录
乱码时候,可查看当前使用的校对规则
show variables like 'collation\_%';
collation_connection:连接数据库时使用的校对规则
collation_database:创建数据库时使用的校对规则
collation_server:MySQL 服务器使用的校对规则
collation_database:创建数据库时使用的校对规则
collation_server:MySQL 服务器使用的校对规则
MySQL字符集的转换过程
命令提示符窗口字符集”转换为“character_set_client”
由 character_set_client 定义的字符集转换为 character_set_connection 定义的字符集。
character_set_connection 定义的字符集转换为 character_set_server 定义的字符集
character_set_server 定义的字符集转换为 character_set_database 定义的字符集。
将执行结果设置为 character_set_results 定义的字符集
将执行结果从 character_set_results 定义的字符集转换为 character_set_client 定义的字符集,最终转换为命令提示符窗口字符集,显示到命令提示符窗口中。返回1
服务器字符集合校对规则
可以在 my.ini 配置文件中设置服务器字符集和校对规则,添加内容如下
[mysqld]
character-set-server=字符集名称
character-set-server=字符集名称
连接 MySQL 服务器时指定字符集:
mysql --default-character-set=字符集名称 -h 主机IP地址 -u 用户名 -p 密码
mysql 默认 latin1 作为服务器字符集
查询 MySQL 数据库指定字符集:
SHOW VARIABLES LIKE 'character_set_server'
SHOW VARIABLES LIKE 'collation_server'
设置数据库字符集的规则如下:
如果指定了字符集和校对规则,则使用指定的字符集和校对规则;
如果指定了字符集没有指定校对规则,则使用指定字符集的默认校对规则;
如果指定了校对规则但未指定字符集,则字符集使用与该校对规则关联的字符集;
如果没有指定字符集和校对规则,则使用服务器字符集和校对规则作为数据库的字符集和校对规则。
为了避免受到默认值的影响,推荐在创建数据库时指定字符集和校对规则。
如果指定了字符集和校对规则,则使用指定的字符集和校对规则;
如果指定了字符集没有指定校对规则,则使用指定字符集的默认校对规则;
如果指定了校对规则但未指定字符集,则字符集使用与该校对规则关联的字符集;
如果没有指定字符集和校对规则,则使用服务器字符集和校对规则作为数据库的字符集和校对规则。
为了避免受到默认值的影响,推荐在创建数据库时指定字符集和校对规则。
表字符集和校对规则
SHOW CREATE TABLE
设置表的字符集规则和设置数据库字符集的规则基本类似:
如果指定了字符集和校对规则,使用指定的字符集和校对规则;
如果指定了字符集没有指定校对规则,使用指定字符集的默认校对规则;
如果指定了校对规则但未指定字符集,则字符集使用与该校对规则关联的字符集;
如果没有指定字符集和校对规则,使用数据库字符集和校对规则作为表的字符集和校对规则。
为了避免受到默认值的影响,推荐在创建表的时候指定字符集和校对规则。
如果指定了字符集和校对规则,使用指定的字符集和校对规则;
如果指定了字符集没有指定校对规则,使用指定字符集的默认校对规则;
如果指定了校对规则但未指定字符集,则字符集使用与该校对规则关联的字符集;
如果没有指定字符集和校对规则,使用数据库字符集和校对规则作为表的字符集和校对规则。
为了避免受到默认值的影响,推荐在创建表的时候指定字符集和校对规则。
列字符集和校对规则
列字符集和校对规则的定义可以在创建表时指定,或者在修改表时调整。语法格式如下:
ALTER TABLE 表名 MODIFY 列名 数据类型 CHARACTER SET 字符集名;
连接字符集和校对规则
设置客户端和服务器连接的字符集和校对规则有以下几种方法:
1)在 my.ini 配置文件中,设置以下语句:
[mysql]
default-character-set=gbk
设置客户端和服务器连接的字符集和校对规则有以下几种方法:
1)在 my.ini 配置文件中,设置以下语句:
[mysql]
default-character-set=gbk
2)可以通过以下命令来设置连接的字符集和校对规则,这个命令可以同时修改以上 3 个参数(character_set_client、character_set_connection 和 character_set_results)的值。
SET NAMES gbk;
SET NAMES gbk;
3)MySQL 还提供了下列 MySQL 命令“临时地”修改 MySQL“当前会话的”字符集和校对规则。
set character_set_client = gbk;
set character_set_connection = gbk;
set character_set_database = gbk;
set character_set_results = gbk;
set character_set_server = gbk;
set collation_connection = gbk_chinese_ci;
set collation_database = gbk_chinese_ci;
set collation_server = gbk_chinese_ci;
set character_set_client = gbk;
set character_set_connection = gbk;
set character_set_database = gbk;
set character_set_results = gbk;
set character_set_server = gbk;
set collation_connection = gbk_chinese_ci;
set collation_database = gbk_chinese_ci;
set collation_server = gbk_chinese_ci;
MySQL修改字符集步骤详解
导出表结构
将导出表结构中的字符集修改成需要的字符集
导出所有记录
将导出表数据中的字符集修改成需要的字符集
创建新数据库,定义成需要的字符集
创建表,并导入表结构,再导入数据
注意:选择目标字符集的时候,要注意最好的是原字符集的超集,或者确定比原字符集的字库更大,否则如果目标字符集的字库小于原字符集的字库,那么目标字符集中不支持的字符导入后会变成乱码,丢失一部分数据。
源操作1
备份
mysqld -uroot -p justdata>D:\0514.sql
执行命令后需要输入密码
mysqldump -u usename -p --databases dbname1 dbname2 ...>filename.sql
mysqldump -u username -p --all-databases>filename.sql
恢复/导入
load data
LOAD DATA
[LOW_PRIORITY | CONCURRENT] [LOCAL]
INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (partition_name [, partition_name] ...)]
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number {LINES | ROWS}]
[(col_name_or_user_var
[, col_name_or_user_var] ...)]
[SET col_name={expr | DEFAULT},
[, col_name={expr | DEFAULT}] ...]
[LOW_PRIORITY | CONCURRENT] [LOCAL]
INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (partition_name [, partition_name] ...)]
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number {LINES | ROWS}]
[(col_name_or_user_var
[, col_name_or_user_var] ...)]
[SET col_name={expr | DEFAULT},
[, col_name={expr | DEFAULT}] ...]
[LOW_PRIORITY | CONCURRENT] [LOCAL]
INFILE 'file_name'
导入文件的绝对路径以及完整文件名
[REPLACE | IGNORE]
replace 和 ignore 关键字用于控制与唯一键重复的记录的处理
如果指定 replace ,与唯一键重复的行将被覆盖更新。对于任意记录覆盖更新时,如果唯一键外的各个字段其实都没有变化,那么执行操作时受影响行数为1;如果除唯一键外的任意字段有变化,那么执行操作时受影响行数为2
如果指定 ignore ,与唯一键重复的行将被忽略,默认指定 ignore
如果指定 replace ,与唯一键重复的行将被覆盖更新。对于任意记录覆盖更新时,如果唯一键外的各个字段其实都没有变化,那么执行操作时受影响行数为1;如果除唯一键外的任意字段有变化,那么执行操作时受影响行数为2
如果指定 ignore ,与唯一键重复的行将被忽略,默认指定 ignore
[CHARACTER SET charset_name]
字符串编码格式
eg:character set utf8
字段中如有空值,则需要使用【\N】
如果使用空字符串表示,则根据不同的数据类型,MySQL的处理结果也各异
数据库字段如果是varchar/char,插入空时,load data 默认导入 空字符串
数据库字段如果是decimal,插入空时,load data 默认导入 0.00000000
数据库字段如果是datetime,插入空时,load data 默认导入 0000-00-00 00:00:00
数据库字段如果是decimal,插入空时,load data 默认导入 0.00000000
数据库字段如果是datetime,插入空时,load data 默认导入 0000-00-00 00:00:00
数据库字段如果是datetime,插入yyyy-MM-dd时,load data 默认导入 yyyy-MM-dd 00:00:00,数据正确性能够保证
数据库字段如果是datetime,插入HH:mm:ss时,load data 默认导入 0000-00-00 00:00:00,数据正确性不能够保证
数据库字段如果是datetime,插入HH:mm:ss时,load data 默认导入 0000-00-00 00:00:00,数据正确性不能够保证
查询表结构和数据引擎
show create table <table_name>
导出
select ... into outfile
select columnname from table [where=condition] into outfile 'targetfilename'[options]
注:目标文件不能是一个已经存在的文件。
报错: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement;
解决办法:show variable like"%secure%',查看 secure-file-priv变量【并在my.ini中添加secure_file_priv=设置路径】
实例
select * from test.person into outfile 'c:/person.txt'
fields terminated by '\、' optionally enclosed by '\"' lines starting by '\-‘ terminated by '\r\n’
fields terminated by '\、' optionally enclosed by '\"' lines starting by '\-‘ terminated by '\r\n’
fileds terminated by
字段之间间隔
enclosed by
每个字段
lines starting by
行开头
terminated by
结尾
导入
mysql -u username -p [dbname] <filename.sql
源操作2
导出整个数据库
mysqldump -u 用户名 -default-character-set=latin1 数据库名
注:导出的文件名(数据库默认编码是latin1)
e.g:MySQLdump -u wcnc -p smgp_apps_wcnc >wcnc.sql
导出一个表
mysqldump -u 用户名 -p 数据库名 表名 >导出的文件名
导出一个数据库结构
mysqldump -u scnc -p -d -add-drop-table smgp_apps_wcnc>d:wcnc_db.sql
注:-d 没有数据 -add-drop-talbe 在每个create 语句之前增加一个drop table
导入数据库
source wcnc_db.sql
mysqldump -u username -p dbname <filename.sql
字段类型
int(M)
类型名称 说明 存储需求
TINYINT -128〜127 0 〜255
SMALLINT -32768〜32767 0〜65535
MEDIUMINT -8388608〜8388607 0〜16777215
INT (INTEGER) -2147483648〜2147483647 0〜4294967295
BIGINT -9223372036854775808〜9223372036854775807 0〜18446744073709551615
TINYINT -128〜127 0 〜255
SMALLINT -32768〜32767 0〜65535
MEDIUMINT -8388608〜8388607 0〜16777215
INT (INTEGER) -2147483648〜2147483647 0〜4294967295
BIGINT -9223372036854775808〜9223372036854775807 0〜18446744073709551615
double
DOUBLE 类型的取值范围如下:
有符号的取值范围:-1.7976931348623157E+308~-2.2250738585072014E-308。
无符号的取值范围:0 和 -2.2250738585072014E-308~-1.7976931348623157E+308。
有符号的取值范围:-1.7976931348623157E+308~-2.2250738585072014E-308。
无符号的取值范围:0 和 -2.2250738585072014E-308~-1.7976931348623157E+308。
FLOAT 和 DOUBLE 在不指定精度时,默认会按照实际的精度(由计算机硬件和操作系统决定),DECIMAL 如果不指定精度,默认为(10,0)
float
FLOAT 类型的取值范围如下:
有符号的取值范围:-3.402823466E+38~-1.175494351E-38。
无符号的取值范围:0 和 -1.175494351E-38~-3.402823466E+38。
有符号的取值范围:-3.402823466E+38~-1.175494351E-38。
无符号的取值范围:0 和 -1.175494351E-38~-3.402823466E+38。
decimal
DECIMAL 类型不同于 FLOAT 和 DOUBLE。DOUBLE 实际上是以字符串的形式存放的,DECIMAL 可能的最大取值范围与 DOUBLE 相同,但是有效的取值范围由 M 和 D 决定。如果改变 M 而固定 D,则取值范围将随 M 的变大而变大。
year
YEAR 类型是一个单字节类型,用于表示年,在存储时只需要 1 个字节。可以使用各种格式指定 YEAR,如下所示:
以 4 位字符串或者 4 位数字格式表示的 YEAR,范围为 '1901'~'2155'。输入格式为 'YYYY' 或者 YYYY,例如,输入 '2010' 或 2010,插入数据库的值均为 2010。
以 2 位字符串格式表示的 YEAR,范围为 '00' 到 '99'。'00'~'69' 和 '70'~'99' 范围的值分别被转换为 2000~2069 和 1970~1999 范围的 YEAR 值。'0' 与 '00' 的作用相同。插入超过取值范围的值将被转换为 2000。
以 2 位数字表示的 YEAR,范围为 1~99。1~99 和 70~99 范围的值分别被转换为 2001~2069 和 1970~1999 范围的 YEAR 值。注意,在这里 0 值将被转换为 0000,而不是 2000。
提示:两位整数范围与两位字符串范围稍有不同。例如,插入 3000 年,读者可能会使用数字格式的 0 表示 YEAR,实际上,插入数据库的值为 0000,而不是所希望的 3000。只有使用字符串格式的 '0' 或 '00',才可以被正确解释为 3000,非法 YEAR值将被转换为 0000。
以 4 位字符串或者 4 位数字格式表示的 YEAR,范围为 '1901'~'2155'。输入格式为 'YYYY' 或者 YYYY,例如,输入 '2010' 或 2010,插入数据库的值均为 2010。
以 2 位字符串格式表示的 YEAR,范围为 '00' 到 '99'。'00'~'69' 和 '70'~'99' 范围的值分别被转换为 2000~2069 和 1970~1999 范围的 YEAR 值。'0' 与 '00' 的作用相同。插入超过取值范围的值将被转换为 2000。
以 2 位数字表示的 YEAR,范围为 1~99。1~99 和 70~99 范围的值分别被转换为 2001~2069 和 1970~1999 范围的 YEAR 值。注意,在这里 0 值将被转换为 0000,而不是 2000。
提示:两位整数范围与两位字符串范围稍有不同。例如,插入 3000 年,读者可能会使用数字格式的 0 表示 YEAR,实际上,插入数据库的值为 0000,而不是所希望的 3000。只有使用字符串格式的 '0' 或 '00',才可以被正确解释为 3000,非法 YEAR值将被转换为 0000。
time
TIME 类型用于只需要时间信息的值,在存储时需要 3 个字节。格式为 HH:MM:SS。HH 表示小时,MM 表示分钟,SS 表示秒。
TIME 类型的取值范围为 -838:59:59~838:59:59,小时部分如此大的原因是 TIME 类型不仅可以用于表示一天的时间(必须小于 24 小时),还可能是某个事件过去的时间或两个事件之间的时间间隔(可大于 24 小时,或者甚至为负)。
可以使用各种格式指定 TIME 值,如下所示。
'D HH:MM:SS' 格式的字符串。还可以使用这些“非严格”的语法:'HH:MM:SS'、'HH:MM'、'D HH' 或 'SS'。这里的 D 表示日,可以取 0~34 之间的值。在插入数据库时,D 被转换为小时保存,格式为 “D*24+HH”。
'HHMMSS' 格式、没有间隔符的字符串或者 HHMMSS 格式的数值,假定是有意义的时间。例如,'101112' 被理解为'10:11:12',但是 '106112' 是不合法的(它有一个没有意义的分钟部分),在存储时将变为 00:00:00。
提示:为 TIME 列分配简写值时应注意:如果没有冒号,MySQL 解释值时,假定最右边的两位表示秒。(MySQL 解释 TIME 值为过去的时间而不是当前的时间)。例如,读者可能认为 '1112' 和 1112 表示 11:12:00(即 11 点过 12 分钟),但MySQL 将它们解释为 00:11:12(即 11 分 12 秒)。同样 '12' 和 12 被解释为00:00:12。相反,TIME 值中如果使用冒号则肯定被看作当天的时间,也就是说,'11:12' 表示 11:12:00,而不是 00:11:12。
TIME 类型的取值范围为 -838:59:59~838:59:59,小时部分如此大的原因是 TIME 类型不仅可以用于表示一天的时间(必须小于 24 小时),还可能是某个事件过去的时间或两个事件之间的时间间隔(可大于 24 小时,或者甚至为负)。
可以使用各种格式指定 TIME 值,如下所示。
'D HH:MM:SS' 格式的字符串。还可以使用这些“非严格”的语法:'HH:MM:SS'、'HH:MM'、'D HH' 或 'SS'。这里的 D 表示日,可以取 0~34 之间的值。在插入数据库时,D 被转换为小时保存,格式为 “D*24+HH”。
'HHMMSS' 格式、没有间隔符的字符串或者 HHMMSS 格式的数值,假定是有意义的时间。例如,'101112' 被理解为'10:11:12',但是 '106112' 是不合法的(它有一个没有意义的分钟部分),在存储时将变为 00:00:00。
提示:为 TIME 列分配简写值时应注意:如果没有冒号,MySQL 解释值时,假定最右边的两位表示秒。(MySQL 解释 TIME 值为过去的时间而不是当前的时间)。例如,读者可能认为 '1112' 和 1112 表示 11:12:00(即 11 点过 12 分钟),但MySQL 将它们解释为 00:11:12(即 11 分 12 秒)。同样 '12' 和 12 被解释为00:00:12。相反,TIME 值中如果使用冒号则肯定被看作当天的时间,也就是说,'11:12' 表示 11:12:00,而不是 00:11:12。
date
DATE 类型用于仅需要日期值时,没有时间部分,在存储时需要 3 个字节。日期格式为 'YYYY-MM-DD',其中 YYYY 表示年,MM 表示月,DD 表示日。
在给 DATE 类型的字段赋值时,可以使用字符串类型或者数字类型的数据插入,只要符合 DATE 的日期格式即可。如下所示:
以 'YYYY-MM-DD' 或者 'YYYYMMDD' 字符中格式表示的日期,取值范围为 '1000-01-01'~'9999-12-3'。例如,输入 '2015-12-31' 或者 '20151231',插入数据库的日期为2015-12-31。
以 'YY-MM-DD' 或者 'YYMMDD' 字符串格式表示日期,在这里YY表示两位的年值。MySQL 解释两位年值的规则:'00~69' 范围的年值转换为 '2000~2069','70~99' 范围的年值转换为 '1970~1999'。例如,输入 '15-12-31',插入数据库的日期为 2015-12-31;输入 '991231',插入数据库的日期为 1999-12-31。
以 YYMMDD 数字格式表示的日期,与前面相似,00~69 范围的年值转换为 2000~2069,80~99 范围的年值转换为 1980~1999。例如,输入 151231,插入数据库的日期为 2015-12-31,输入 991231,插入数据库的日期为 1999-12-31。
使用 CURRENT_DATE 或者 NOW(),插入当前系统日期。
提示:MySQL 允许“不严格”语法:任何标点符号都可以用作日期部分之间的间隔符。例如,'98-11-31'、'98.11.31'、'98/11/31'和'98@11@31' 是等价的,这些值也可以正确地插入数据库。
在给 DATE 类型的字段赋值时,可以使用字符串类型或者数字类型的数据插入,只要符合 DATE 的日期格式即可。如下所示:
以 'YYYY-MM-DD' 或者 'YYYYMMDD' 字符中格式表示的日期,取值范围为 '1000-01-01'~'9999-12-3'。例如,输入 '2015-12-31' 或者 '20151231',插入数据库的日期为2015-12-31。
以 'YY-MM-DD' 或者 'YYMMDD' 字符串格式表示日期,在这里YY表示两位的年值。MySQL 解释两位年值的规则:'00~69' 范围的年值转换为 '2000~2069','70~99' 范围的年值转换为 '1970~1999'。例如,输入 '15-12-31',插入数据库的日期为 2015-12-31;输入 '991231',插入数据库的日期为 1999-12-31。
以 YYMMDD 数字格式表示的日期,与前面相似,00~69 范围的年值转换为 2000~2069,80~99 范围的年值转换为 1980~1999。例如,输入 151231,插入数据库的日期为 2015-12-31,输入 991231,插入数据库的日期为 1999-12-31。
使用 CURRENT_DATE 或者 NOW(),插入当前系统日期。
提示:MySQL 允许“不严格”语法:任何标点符号都可以用作日期部分之间的间隔符。例如,'98-11-31'、'98.11.31'、'98/11/31'和'98@11@31' 是等价的,这些值也可以正确地插入数据库。
允许将字符串或者数字 赋予 date 列
datetime
DATETIME 类型用于需要同时包含日期和时间信息的值,在存储时需要 8 个字节。日期格式为 'YYYY-MM-DD HH:MM:SS',其中 YYYY 表示年,MM 表示月,DD 表示日,HH 表示小时,MM 表示分钟,SS 表示秒。
在给 DATETIME 类型的字段赋值时,可以使用字符串类型或者数字类型的数据插入,只要符合 DATETIME 的日期格式即可,如下所示。
以 'YYYY-MM-DD HH:MM:SS' 或者 'YYYYMMDDHHMMSS' 字符串格式表示的日期,取值范围为 '1000-01-01 00:00:00'~'9999-12-3 23:59:59'。例如,输入 '2014-12-31 05:05:05' 或者 '20141231050505’,插入数据库的 DATETIME 值都为 2014-12-31 05:05:05。
以 'YY-MM-DD HH:MM:SS' 或者 'YYMMDDHHMMSS' 字符串格式表示的日期,在这里 YY 表示两位的年值。与前面相同,'00~79' 范围的年值转换为 '2000~2079','80~99' 范围的年值转换为 '1980~1999'。例如,输入 '14-12-31 05:05:05',插入数据库的 DATETIME 为 2014-12-31 05:05:05;输入 141231050505,插入数据库的 DATETIME 为 2014-12-31 05:05:05。
以 YYYYMMDDHHMMSS 或者 YYMMDDHHMMSS 数字格式表示的日期和时间。例如,输入 20141231050505,插入数据库的 DATETIME 为 2014-12-31 05:05:05;输入 140505050505,插入数据库的 DATETIME 为 2014-12-31 05:05:05。
提示:MySQL 允许“不严格”语法:任何标点符号都可用作日期部分或时间部分之间的间隔符。例如,'98-12-31 11:30:45'、'98.12.31 11+30+35'、'98/12/31 11*30*45' 和 '98@12@31 11^30^45' 是等价的,这些值都可以正确地插入数据库。
在给 DATETIME 类型的字段赋值时,可以使用字符串类型或者数字类型的数据插入,只要符合 DATETIME 的日期格式即可,如下所示。
以 'YYYY-MM-DD HH:MM:SS' 或者 'YYYYMMDDHHMMSS' 字符串格式表示的日期,取值范围为 '1000-01-01 00:00:00'~'9999-12-3 23:59:59'。例如,输入 '2014-12-31 05:05:05' 或者 '20141231050505’,插入数据库的 DATETIME 值都为 2014-12-31 05:05:05。
以 'YY-MM-DD HH:MM:SS' 或者 'YYMMDDHHMMSS' 字符串格式表示的日期,在这里 YY 表示两位的年值。与前面相同,'00~79' 范围的年值转换为 '2000~2079','80~99' 范围的年值转换为 '1980~1999'。例如,输入 '14-12-31 05:05:05',插入数据库的 DATETIME 为 2014-12-31 05:05:05;输入 141231050505,插入数据库的 DATETIME 为 2014-12-31 05:05:05。
以 YYYYMMDDHHMMSS 或者 YYMMDDHHMMSS 数字格式表示的日期和时间。例如,输入 20141231050505,插入数据库的 DATETIME 为 2014-12-31 05:05:05;输入 140505050505,插入数据库的 DATETIME 为 2014-12-31 05:05:05。
提示:MySQL 允许“不严格”语法:任何标点符号都可用作日期部分或时间部分之间的间隔符。例如,'98-12-31 11:30:45'、'98.12.31 11+30+35'、'98/12/31 11*30*45' 和 '98@12@31 11^30^45' 是等价的,这些值都可以正确地插入数据库。
timestamp
TIMESTAMP 的显示格式与 DATETIME 相同,显示宽度固定在 19 个字符,日期格式为 YYYY-MM-DD HH:MM:SS,在存储时需要 4 个字节。但是 TIMESTAMP 列的取值范围小于 DATETIME 的取值范围,为 '1970-01-01 00:00:01'UTC~'2038-01-19 03:14:07'UTC。在插入数据时,要保证在合法的取值范围内。
提示:协调世界时(英:Coordinated Universal Time,法:Temps Universel Coordonné)又称为世界统一时间、世界标准时间、国际协调时间。英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称 UTC。
TIMESTAMP 与 DATETIME 除了存储字节和支持的范围不同外,还有一个最大的区别是:
DATETIME 在存储日期数据时,按实际输入的格式存储,即输入什么就存储什么,与时区无关;
而 TIMESTAMP 值的存储是以 UTC(世界标准时间)格式保存的,存储时对当前时区进行转换,检索时再转换回当前时区。即查询时,根据当前时区的不同,显示的时间值是不同的。
提示:如果为一个 DATETIME 或 TIMESTAMP 对象分配一个 DATE 值,结果值的时间部分被设置为 '00:00:00',因此 DATE 值未包含时间信息。如果为一个 DATE 对象分配一个 DATETIME 或 TIMESTAMP 值,结果值的时间部分被删除,因此DATE 值未包含时间信息。
提示:协调世界时(英:Coordinated Universal Time,法:Temps Universel Coordonné)又称为世界统一时间、世界标准时间、国际协调时间。英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称 UTC。
TIMESTAMP 与 DATETIME 除了存储字节和支持的范围不同外,还有一个最大的区别是:
DATETIME 在存储日期数据时,按实际输入的格式存储,即输入什么就存储什么,与时区无关;
而 TIMESTAMP 值的存储是以 UTC(世界标准时间)格式保存的,存储时对当前时区进行转换,检索时再转换回当前时区。即查询时,根据当前时区的不同,显示的时间值是不同的。
提示:如果为一个 DATETIME 或 TIMESTAMP 对象分配一个 DATE 值,结果值的时间部分被设置为 '00:00:00',因此 DATE 值未包含时间信息。如果为一个 DATE 对象分配一个 DATETIME 或 TIMESTAMP 值,结果值的时间部分被删除,因此DATE 值未包含时间信息。
char(M)
CHAR(M) 为固定长度字符串,在定义时指定字符串列长。当保存时,在右侧填充空格以达到指定的长度。M 表示列的长度,范围是 0~255 个字符。
例如,CHAR(4) 定义了一个固定长度的字符串列,包含的字符个数最大为 4。当检索到 CHAR 值时,尾部的空格将被删除。
例如,CHAR(4) 定义了一个固定长度的字符串列,包含的字符个数最大为 4。当检索到 CHAR 值时,尾部的空格将被删除。
varchar(M)
VARCHAR(M) 是长度可变的字符串,M 表示最大列的长度,M 的范围是 0~65535。VARCHAR 的最大实际长度由最长的行的大小和使用的字符集确定,而实际占用的空间为字符串的实际长度加 1。
例如,VARCHAR(50) 定义了一个最大长度为 50 的字符串,如果插入的字符串只有 10 个字符,则实际存储的字符串为 10 个字符和一个字符串结束字符。VARCHAR 在值保存和检索时尾部的空格仍保留。
例如,VARCHAR(50) 定义了一个最大长度为 50 的字符串,如果插入的字符串只有 10 个字符,则实际存储的字符串为 10 个字符和一个字符串结束字符。VARCHAR 在值保存和检索时尾部的空格仍保留。
tinytext
TINYTEXT 表示长度为 255(28-1)字符的 TEXT 列。
text
TEXT 表示长度为 65535(216-1)字符的 TEXT 列。
mediumtext
MEDIUMTEXT 表示长度为 16777215(224-1)字符的 TEXT 列。
longtext
LONGTEXT 表示长度为 4294967295 或 4GB(232-1)字符的 TEXT 列。
enum
ENUM 是一个字符串对象,值为表创建时列规定中枚举的一列值。其语法格式如下
<字段名> ENUM( '值1', '值1', …, '值n' )
set
var
变长字符串类型
服务配置
内部命令
clear
connect
delimiter
ego
go
prompt
rehash
source
status
system
tee
use
charset
warnings
nowaring
status
查询mysql信息
新建用户
use mysql
create user "<user>" @ "<host>" identified by "password";
配置文件
my.ini
[mysql]
default-character-set=utf8
设置mysql客户端默认字符集
[mysqld]
port=3307
设置3306端口
basedir
设置mysql的安装目录
max_connections=200
允许最大连接数
character-set-server=utf8
服务器端使用字符集默认为UTF8字符集
default-storage-engine=innodb
创建新表时将使用的默认存储引擎
启动/关闭服务
cmd环境下
net start msyql
net stop mysql
mysql -u root -p
环境变量
计算机>属性>高级系统设置>环境变量>用户区(user)>path>【添加mysql程序所在路径】
在cmd下快速打开mysql
登录mysql
mysql -h -localhost -u root -p root
-h 服务器逐级地址
-u 用户名称
-p 密码
commands end with ; or\g
Your MySQL connection id is 3
id 表示mysql数据库连接次数。
0 条评论
下一页