当前位置:七道奇文章资讯数据防范MySQL防范
日期:2012-06-02 15:06:00  来源:本站整理

Mysql利用大全 从底子到存储历程[MySQL防范]

赞助商链接



  本文“Mysql利用大全 从底子到存储历程[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
普通习惯了phpmyadmin等其他工具的的朋友有的根本就不会号令,假如让你笔试去面试我看你怎么办,所以,学习一下还是非常有效的,也可以知道你通过GUI工具的时刻工具到底做了什么.Mysql用处很广,是php最佳拍档,Java中利用也很便利.

    我是通过Windows 7 操作的,所以翻开运行-输入cmd吧,然后输入mysql -hlocalhost -uroot -p;回车后便可以输入密码了,这里可以*号显示,当然也可以和-p连写的,这就是登录mysql.改正密码mysqladmin -uroot -pold password new;这里的root是用户名 new是你的新密码.退出是什么号令,曾有人问我,我说你直接点X好了,不过号令是quit;退出到cmd环境,退出cmd环境号令是exit;接着就是操作mysql的增删改查,常称为CURD操作.
复制代码 代码以下:
#登录数据库
mysql -hlocalhost -uroot -p;
#改正密码
mysqladmin -uroot -pold password new;


#显示数据库
show databases;
#显示数据表
show tables;
#挑选数据库
use examples;
#成立数据库并设置编码utf-8 多语言
create database `examples` default character set utf8 collate utf8_general_ci;
#删除数据库
drop database examples;
#成立表
create table test(
id int(10) unsigned zerofill not null auto_increment,
email varchar(40) not null,
ip varchar(15) not null,
state int(10) not null default '-1',
primary key (id)
)engine=InnoDB;
#显示表构造
describe
#删除表
drop table test;
#重命名表
alter table test_old rename test_new;
#增添列
alter table test add cn int(4) not null;
#改正列
alter table test change id id1 varchar(10) not null;
#删除列
alter table test drop cn;
#成立索引
alter table test add index (cn,id);
#删除索引
alter table test drop index cn
#插入数据
insert into test (id,email,ip,state) values(2,'qq@qq.com','127.0.0.1','0');
#删除数据
delete from test where id = 1;
#改正数据
update test set id='1',email='q@qq.com' where id=1;
#查数据
select * from test; #取全部数据
select * from test limit 0,2; #取前两条数据
select * from test email like '%qq%' #查含有qq字符 _表示一个 %表示多个
select * from test order by id asc;#降序desc
select * from test id not in('2','3');#id不含2,3大概去掉not表示含有
select * from test timer between 1 and 10;#数据在1,10之间

#---------------------------表衔接知识------------------------------
#等值衔接又叫内链接 inner join 只返回两个表中衔接字段相等的行
select * from A inner join B on A.id = B.id; #写法1
select * from A,B where A.id = B.id; #写法2
select a.id,a.title from A a inner join B b on a.id=b.id and a.id=1;#写法3 表的暂时名称
select a.id as ID,a.title as 标题 from A inner join B on A.id=B.id;#增添as字句

#左衔接又叫外衔接 left join 返回左表中全部记录和右表中衔接字段相等的记录
select * from A left join B on A.id = B.id;

select * from A left join (B,C,D) on (B.i1=A.i1 and C.i2=A.i2 and D.i3 = A.i3);#复杂衔接

#右衔接又叫外衔接 right join 返回右表中全部记录和左表中衔接字段相等的记录
select * from A right join B on A.id = B.id;

#完好外部链接 full join 返回左右表中全部数据
select * from A full join B on A.id = B.id;

#穿插衔接 没有where字句 返回卡迪尔积
select * from A cross join B;
-------------------------表衔接完毕------------------------------------------------------------
-----------------索引成立------------------------------------------------
show index from A #查看索引
alter table A add primary key(id) #主键索引
alter table A add unique(name) #唯一索引
alter table A add index name(name) #普通索引
alter table A add fulltext(name) #全文索引
alter table A add index name(id,name) #多列索引

#常用函数
abs(-1)#绝对值
pi()#pi值
sqrt(2)#平方根
mod(-5,3)#取余-2
ceil(10.6)#进位+1 后果11 ceil(10.0)后果10
floor(10.6)#取整 10
round(2.5)#四舍五入到整数 后果3
round(2.5,2)#保存两位小数 后果2.50
truncate(2.5234,3)#取小数后3位不四舍五入 2.523
sign(-2);#标记函数 返回-1 0还是0 正数返回1
pow(2,3),exp(2);#2的3次幂 或e的2次幂
log(2),log10(2);#求对数
radians(180),degrees(0.618);#角度弧度转换
sin(0.5),asin(0.5)#正弦和反正弦 近似cos acos tan atan
length('hi')#计算字符长度
concat('1',1,'hi')#归并字符串
insert('12345',1,0,'7890');#从开首第1个字符开始到0个完毕,替换成后边字符串,0表示在最前边插入
ucase('a'),lcase('A')#转成大写和小写
left('abcd',2),right('abcd',2);#返回前两个字符和后两个字符
ltrim(' 0 '),rtrim(' 0 '),trim(' 0 ')#删除空格
replace('1234567890','345678','0');#替换输出12090
substring('12345',1,2)#取字符 输出12 1是位置 2是长度
instr('1234','234');#获得234位置是2
reverse('1234');#反序输出4321
current()#返回日期
curtime()#返回时间
now()#返回日期时间
month(now())#当前月份 monthname 英文月份
dayname(now())#星期英文 dayofweek()1是星期天 weekday()1是星期二
week(now())#本年第多少周
dayofyear(now()),dayofmonth(now())#本日是本年第多少天 本日是本月第多少天
year(now()),month(now()),day(now()),hour(now()),minute(now()),second(now())#返回年代日 时分秒
time_to_sec(now()),sec_to_time(3600*8);#转换时间为秒和复原
version()#mysql版本
database()#当前衔接的数据库 没有为null
user()#获得用户名
md5('a')#加密字符串
ascii('a')#ascii值97
bin(100),hex(100),oct(100)#返回二进制 十六进制 八进制
conv(10001,2,8);#各种进制彼此转换
rand()#生成0到1之间随机数
sleep(0.02)#暂停秒数

数据库优化
.开启缓存,尽大概利用php函数而不是mysql
. explain select 语句可以知道性能
.一行数据利用 limit 1;
.为搜索字段重建索引 比方关键字 标签
.表衔接join保证字段范例相同并且有其索引
.随机查询利用php $r = mysql_query("SELECT count(*) FROM user");
$d = mysql_fetch_row($r);
$rand = mt_rand(0,$d[0] - 1);
$r = mysql_query("SELECT username FROM user LIMIT $rand, 1");
.避免利用select * 应当利用具体字段
.每张表都是用id主键,并且是unsigned int
.关于取值有限而固定利用enum范例,如性别 国家 名族 部门 状况
.尽大概利用not null ip存储利用int(4),利用ip 转化函数ip2long()彼此long2ip()
.delete和insert语句会锁表,所以可以采取分拆语句操作
while(1){操作语句;usleep(2000);}
.挑选精确的存储引擎;MyISAM合适大量查询 写操作多用InnoDB支持事件

#存储历程
#存储程序
delimiter #定义存储程序
create procedure getversion(out params varchar(20)) #params是传出参数 in传进 out传出 inout传回
begin
select version() into params; #版本信息赋值params
end
call getversion(@a); #调用存储历程
select @a;
delimiter #定义存储函数
create function display(w varchar(20)) returns varchar(20)
begin
return concat('hello',w);
end
select display('world');

drop procedure if exists spName; #删除一个存储历程
alter function spName [];#改正一个存储历程
show create procedure spName;#显示存储历程信息
declare varName type default value;#声明部分变量
#if语句
if 条件 then 语句
elseif 条件 then 语句
else 语句
end if
#case语句
case 条件
when 条件 then 语句
when 条件 then 语句
else 语句
end case
#loop语句
fn:loop
语句
end loop fn;
leave fn #退出循环
#while语句
fn:while 条件 do
语句
end while fn


#mysql利用帮忙资料
? contents; #列出帮忙范例
? data types;#列出数据范例
? int;#列出具体范例
? show;#show语句
? create table;#
#常见表的对比
Myisam BDB Memory InnoDB Archive
存储限制 no no yes 64T no
事物安全 支持 支持
锁机制 表锁 页锁 表锁 行锁 行锁
全文索引 支持
外键支持 支持
myisam frm存储表定义 MYD存储数据 MYI存储索引
InnoDB 用于事件处理
char 和 varchar保存和索引都不相同
浮点数float(10,2) 定点数decimal(10,2)
长度一定下,浮点数表示更大数据范围,缺陷是惹起精度丧失,钱币等利用定点数存储
索引合适于where字句大概衔接字句列
关于唯一值利用唯一索引

增添新用户 grant select,insert,update,delete on *.* to Yoby@localhost identified by 'mysql';
# *.* 数据库名.表名,限制登录某一个数据库 test.* localhost是本地主机 网络可以利用 '%'替换全部主机 'mysql'是密码 Yoby是用户名 全部权限可以用 all替换
查看用户权限 show grants for 'root'@'localhost';
移除权限 revoke all on *.* from root@localhost;
group by id 分组
having 限制字句
select1 union select2 结合查询有反复去掉保存一行
select2 union all select2 全部行归并到后果集合去

这是一份最完好的mysql笔记,需求的可以复制保存了!

(原创 Yob
  以上是“Mysql利用大全 从底子到存储历程[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 搭配 IIS7 PHP MySQL 环境
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • mysql数据库插入速度和读取速度的调整记录
  • MySQL Order By索引优化办法
  • MySQL Order By用法分享
  • mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''
  • MySQL Order By Rand()效率解析
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .