php学习--mysql基础知识

在字符'表示方法,mssql用''代表一个',而mysql可以使用''或者\'代表一个'
set类型:可以包含最多64项,如果插入不属于set集合中的值时会自动去处;如果插入了重复的值时也会自动去掉重复项
EG: create table data(fieldSet set('A','B'));
insert into data values('c'); ==>则插入的为空,应为不在set('A','B')中
insert into data values('A,A,B'); ==>则插入的为('A','B'),重复值被删除了

enum类型:只能有一项[也可以包含null或者'']。如果插入值不在enum集合里面则插入空值[注意不是null,是'']



函数介绍
数学函数
abs(x):返回x的绝对值 ceiling(x):返回大于x的最小整数值 floor(x):返回小于x的最大整数值
greatest(x1,x2,x3....xn):返回集合中的最大值 least(x1,x2,x3....xn):返回集合中的最小值
mod(x,y):返回x/y的模(余数) pi():返回pi pow(x,y):返回x的y次幂 rand():返回0-1内的随机数
round(x,y):返回x的四舍五入的有y位小数的值 truncate(x,y):返回数字x截短为y位小数的结果
bin(x),oct(x),hex(x)分别返回10进制数x的2进制,8进制和16进制的值,为字符串

聚合函数
函数 功能
avg(col) 平均值
count(col) 指定列中非null值的个数
min(col)
max(col)
sum(col)
std(col)
variance(col)
group_concat(col) 返回由属于一组的列值连接组合而成的结果


字符串函数
函数 功能
ascii(char) 返回字符的ascii码值
bit_length(str) 返回字符串的比特长度
char(x1,x2,...,xn) 返回x1-xn代表的ascii码值给出的字符组成的字符串
concat(s1,s2,...,sn) 将s1-sn连接成字符串
concat_ws(sep,s1,s2,...,sn) 将s1-sn用sep间隔并且返回
insert(str,x,y,instr) 将字符串str从第x位置开始,y个字符长的子串替换为instr,返回结果
field(str,s1,s2,...sn) 分析s1-sn,如果发现str,返回str在列表s1-sn的索引
find_in_set(str,list) 分析逗号分隔的list列表,如果发现str,则返回它在list中的位置
lcase(str)/lower(str) str变小写
left(str,x) 返回左边的x个字符
length(str) 返回字符数
lpad(str,n,pad) 用字符pad对str进行左边填补直至达到n个字符长度
ltrim(str)
ord(char) 返回字符char的多字节安全的编码
locate(substr,str) 返回substr在str第一次出现的位置(从1开始,而不是从0,和vbs一样)
quote(str) 用反斜杠转义str中的单引号
repeat(str,x)
replace(str,srchstr,rplcstr)
reverse(str) 将str反向
right(str,x)
rpad(str,x,pad)
rtrim(str)
strcmp(s1,s2)
substring(str,x,y)/mid(str,x,y)
trim(str)
ucase(str)/upper(str)

时间和日期函数
函数 功能
curdate()/current_date() 当前日期
curtime()/current_time() 当前时间
date_add(date,interval int keyword) 返回date加上间隔时间int的结果(int必须按照关键字进行格式化)
date_format(date,fmt) 按照指定的fmt格式格式化日期date值
date_sub(date,interval int keyword) 返回日期date减去间隔时间int的结果(nt必须按照关键字进行格式化)
dayofweek(date) 返回date所代表的一星期中的第几天(1-7)
dayofmonth(date) 返回date是一个月的第几天(1-31)
dayofyear(date) 返回date是一年中的第几天(1-366)
dayname(date) 返回date的星期名
extract(keyword from date) 返回日期date的指定部分,即keyword指定的
from_days(x) 返回一个日期,它是由年份0加上x天产生的
from_unixtime(ts) 格式化unix时间戳ts
hour(time)
minute(time)
month(date)
monthname(date) 返回date的月份名称
now()
quarter(date) 返回date在一年中的季度(1-4)
period_add(date1,mon) 返回date增加mon月份的结果
period_diff(date1,date2) 返回date1和date2相差的月份
second(time)
sec_to_time(x) 将秒值x转换为易读的时间值
time_format(time,fmt) 将time按fmt格式化
time_to_sec(time) 将time转换为秒数
to_days(date) 返回从0年到日期date的天数
unix_timestamp([date]) 返回日期date多代表的unix时间戳,不提供date时将返回当前的
week(date) 返回date为一年中的第几周(0-53)
year(date)
//=========================新mysql版本增加的函数=====================
datediff(exp1,exp2) 返回两个时间相差的天数,注意是exp1-exp2
timediff(exp1,exp2) 返回两个时间相差的时间类型[如“小时:分钟:秒”],exp1-exp2
,两个参数要么是time类型要么是datetime类型,就是说两个参数类型一致

date_add(date,interval int keyword和date_sub(date,interval int keyword的vkeyword参数,其中interval为关键字,不能少

keyword 间隔格式
day 天
day_hour 天 小时
day_minute 天 小时:分钟
day_second 天 小时:分钟:秒
hour 小时
hour_minute 小时:分钟
hour_second 小时:分钟:秒
minute 分钟
minute_secode 分钟:秒
month 月
second 秒
year 年
year_month 年-月

extract(keyword from date)的keyword和上面一样,只是获取到指定的时间部分,没分隔符号,如果小于10,自动补上0
如 select extract(year_month from '2008-08-6') ==》200808


加密函数
函数 功能
aes_encrypt(str,key) 加密
aes_decrypt(str,key) 解密aes_decrypt加密过的
decode(str,key) 解密encode加密过的
encrypt(str,salt) 加密,对window系统不起作用
encode(str,key) 加密
md5(str) md5加密,不可逆
password(str) 加密,不可逆
sha(str) sha加密,不可逆

控制流函数
函数 功能
case when [test1] then [result1]...else [default] end testn为真,返回resultn,否则返回default
case [test] when [val1] then [result1]...else [default] end 如果test和valn相同,返回resultn,否则返回default
if(test,t,f) 如果test是真,返回t,否则返回f
ifnull(arg1,arg2) 如果arg1不是空,返回arg1,否则返回arg2
nullif(arg1,arg2) 如果arg1=arg2返回null,否则返回arg1

还有一种就是function【函数】和procedure【存储过程】中的流控制,注意语句后面一定要有分号分隔
if condition then
set var="111";
elseif condition then
set var="222";
else
set var="333";
end if;

格式化函数
函数 功能
date_format(date,fmt) 依照fmt格式化date
format(x,y) 把x格式化为以逗号隔开的数字序列,y是结果的小数位数
inet_aton(ip) 返回ip地址的数字表示
inet_ntoa(num) 返回数字所代表的ip地址
time_format(time,fmt) 依照fmt格式化time

fmt的格式化值
值 功能
%a 所写的星期名(sun,mon,...)
%b 所写的月份名(jan,feb,...)
%d 月份中的天数
%H 小时(00-23)
%h 小时(01-12)
%i 分钟(00-59)
%j 一年中的天数(001-366)
%m 月份,2为(01-12)
%M 长月份的名字(january,february,...)
%p AM或PM
%r 时间,12小时制的
%S或%s 秒(00-59)
%T 时间,24小时制
%w 一周中的天数
%W 长星期的名称(sunday,monday,...)
%y 年份,2位
%Y 年份,4位

类型转换函数
mysql提供了cast()函数,支持的类型有binary,char,date,time,datetime,signed,unsigned(这些类型对于mysql4.1,新版本)
cast(列或者值 as 类型)
其中也可以把时间【必须是date或者time或者datetime类型】转换为数字,要不当字符串转换,并且转换为数字时符号【signed,unsigned】加上
如 select cast(cast('2008-08-08 08:08:08' as datetime) as unsigned integer) ==>20080808080808


系统信息函数
函数 功能
database() 返回当前数据库名称
benchmark(count,expr) 将表达式expr重复执行count次
connection_id() 返回当前客户的连接id
found_rows() 最后一个select(没有limit进行限制)返回的记录行数返回
get_lock(str,dur) 获得一个字符串str命名的并且有dur秒延时的锁定
is_free_lock(str) 检查以str命名的锁定是否释放
last_insert_id() 返回由系统自动产生的最后一个autoincrement id的值
master_pos_wait(log,pos,dur) 锁定服务器dur秒直到从服务器与主服务器的日志log指定的位置pos同步
release_lock(str) 释放有字符串str命名的锁定
user()/system_user() 返回当前登陆用户名
version() 返回mysql服务器的版本


mysql安全配置【mysql数据库控制】
user表结构及解释
字段 权限名 拥有该权限的用户可以执行的操作
Host
User
Password
-----上面是用户登陆系统的信息,和权限无关
select_priv select 在表中进行检索,进行select查询
insert_priv insert insert操作
update_priv update update操作
delete_priv delete delete操作
create_priv create 创建数据库和表
drop_priv drop 删除数据库和表
reload_priv reload 重载、刷新mysql服务器
shutdown_priv shutdown 关闭正在运行的mysql服务器
process_priv process 在mysql服务器上跟踪一项活动
file_priv 在服务器上读写文件
grant_priv 授权其他用户享有该用户享有的权限
index_priv 创建,编辑和删除表索引
alter_priv 修改表
references_priv 创建,编辑和删除外键引用
show_db_priv 在服务器上浏览可以使用的数据库
super_priv 执行管理命令
create_tmp_table_priv 创建临时表
lock_tables_priv 创建和删除表锁
execute_priv 执行被保存的程序
repl_slave_priv 在复制内容中读主二进制日志
repl_client_priv 在复制内容中申请主,副信息


db表和host表在一起使用,控制用户可以使用哪些数据库,在这些数据库中可以使用哪些操作
host:通过主机名控制对数据库的访问
db:通过用户@主机名的方式对数据库进行访问

tables_priv表和columns_priv表,允许数据库管理员分别限制在数据库中访问具体的表和一个表中具体的列


连接mysql
mysql -h [主机名] -u [用户名] -p
mysql -h [主机名] -u [用户名] -ptimber ==》不需要输入密码

加支付宝好友偷能量挖...


原创文章,转载请注明出处:php学习--mysql基础知识

评论(0)Web开发网
阅读(96)喜欢(1)PHP/apache/Perl