??xml version="1.0" encoding="utf-8" standalone="yes"?> 打开MySQL/bin目录下输入mysql -uroot -p ,默认是没有密码的Q一般是直接按回车进入,但是?x)出?/span> 在cmd里面输入mysql -u root-p可以不用密码登录了(jin)Q出现passwordQ的时候直接回车可以进入,不会(x)出现ERROR 1045(28000)Q但很多操作都会(x)受限Ӟ因ؓ(f)没有不能grantQ没有权限)(j)的密?/span> (1).q入mysql数据库:(x) mysql> use mysql;Database changed (2).lroot用户讄新密码mysql> update user set authentication_string=password("123456") where user="root"; (3).h数据?nbsp;Q一定要记得hQmysql>flush privileges; QueryOK, 0 rows affected (0.00 sec) (4).退出mysqlQmysql> quit
2.在mysql-5.7.10-winx64目录下,新徏一个my.ini。复制下面的代码保存可以了(jin)?/span>
; 讄mysql客户端默认字W集
default-character-set=utf8
[mysqld]
;讄3306端口
port = 3306
; 讄mysql的安装目?/span>
basedir=D:\MYSQL\mysql-5.7.10-winx64
; 讄mysql数据库的数据的存攄?/span>
datadir=D:\MYSQL\mysql-5.7.10-winx64\data
; 允许最大连接数
max_connections=200
; 服务端用的字符集默认ؓ(f)8比特~码的latin1字符?/span>
character-set-server=utf8
; 创徏新表时将使用的默认存储引?/span>
default-storage-engine=MYISAM
4.在bin目录下,q行>mysqld install
5.然后q行>mysqld --initialize
q个初始化操作将my.ini中的datadir目录下生成数据库文gQ也可以该里面的文件全删除。重新输入该命o(h)初始?br />6.启动服务>net start mysql
7. 修改密码
ERROR 1045 (28000): Access denied for user'root'@'localhost'(using password: YES)的错??/span>
解决的方法都是在在配|文件[mysqld]条目下加一条命令skip-grant-tables然后重启服务可以略q密码进入了(jin)?/span>
Query OK,1 rows affected(0.01 sec)Rows matched:1 Changed:1Warnings: 0
8.如果再次q入输入 >show databases;提示以下错误:
]]>
2. 期望以上id?Q?的分别只保留两条
3.新徏一个(f)时表Q字D同上,q新增一个num字段增。ƈ插入
insert into t_tmp(id,value) select id,value from t_value order by id;
4.于是t_tmp如下Q?br />
5.再通过以下SQL查出
]]>
]]>
]]>
CONV(N,from_base,to_base)
在不同的数字基数之间转换数字。将数字 N 从from_base 转换?to_baseQƈ以字W串形式q回。如果Q何一个参Cؓ(f) NULLQ那么返回g?NULL。参?N 被解释ؓ(f)是一个整敎ͼ但是也可以被指定Z个整数或一个字W串。最基?2Q最大基?36。如?to_base 是一个负|N 被看作为是一个有W号数字。否则,N 被视为是无符L(fng)。CONV ?64 位精度工作?br />
mysql> select conv(100,10,2);
+----------------+
| conv(100,10,2) |
+----------------+
| 1100100 |
+----------------+
在ySQL命o(h)H口下输入\s就可以查看当前数据库的~码?jin)?/span>
修改Ҏ(gu)
面和Java文g中的修改׃说了(jin)Q大家肯定都?x),只说说怎样修改MySQL的吧?/span>
修改数据库编码的命o(h)是:(x)ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
修改表的~码的命令是QALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
修改表中字段的编码的命o(h)是:(x)ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
修改MySQL默认~码Ҏ(gu)Q在windows环境?/strong>可以直接用Mysql Server Instance Config Wizard q行讄
Linux环境?/strong>
/etc/init.d/mysql start (stop) 为启动和停止服务?/span>
/etc/mysql/ 主要配置文g所在位|?my.cnf
/var/lib/mysql/ 攄的是数据库表文g夹,q里的mysql相当于windows下mysql的date文g?/p>
启动mysql后,以rootdmysql
isher@isher-ubuntu:~$ mysql -u root
>show variables like 'character%'; #执行~码昄
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
在某些时候,我们l要修改mysql默认数据库的~码Q以保证某些q移的程序可以正常显C,~辑my.cnf文gq行~码修改,windows可以直接用Mysql Server Instance Config Wizard q行讄
在linux下修?个my.cnf??etc/mysql/my.cnf文g
扑ֈ客户端配|[client] 在下面添?/p>
default-character-set=utf8 默认字符集ؓ(f)utf8
在找到[mysqld] d
default-character-set=utf8 默认字符集ؓ(f)utf8
init_connect='SET NAMES utf8' (讑֮q接mysql数据库时使用utf8~码Q以让mysql数据库ؓ(f)utf8q行)
修改好后Q重新启动mysql 卛_Q查询一下show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
此方法用于标准mysql版本同样有效Q对?etc/my.cnf文gQ需要从mysql/support-files的文件夹cp my-large.cnf一份到/etc/my.cnf?/p>
一、root用户密码的维护:(x)
׃安装MySQL完后,MySQL?x)自动提供一个不带密码的root用户Qؓ(f)?jin)安全v见给root讄密码Q?/p>
#mysqladmin -u root password 123 (123为密码,也可以写?'123'?123") Q?/p>
讄密码后登入时׃能直接输入mysql?jin),必须跟些参数?如下Q?/p>
[root@localhost ~]# mysql -u root -p Q?u 后跟d的用户名Q?p 提示要密码登入)(j)
Enter password:(输入密码)
修改密码Q?/p>
[root@localhost ~] #mysqladmin -u root -p password 123456 (password 后跟的是要更新的新密?
Enter password:(输入原始密码Q回车即?
二、其他用L(fng)增加和删除:(x)
以root用户dQ在mysql中有一张mysql.user表是存储MySQL中所有用L(fng)信息表,所以可以直接增加删除这个表的记录就可增加和删除用户Q?/p>
1.d用户Q有两种形式Q:(x)
A.mysql> grant all on *.* to yushan@"%" identified by "123" ;
mysql>flush privileges; (hpȝ权限?
(执行完会(x)在mysql.user表插入一条记录,all表示所有权?包括???查等权限)Q?*.* 表示所有数据库Qyushan为添加的用户名,123为密?%为匹配的所有主机,上面的信息都可以指定如grant select,update on db.* to yushan@localhost identified by '123";)
B.直接对mysql.userd一条记?/p>
mysql> insert into mysql.user(Host,User,Password) values("localhost","yusuhan",password("123"));
mysql>flush privileges;
q样创Z(jin)一个名为:(x)yushan 密码为:(x)123 (密码是经q加密的 ) 的用P不过q样没有权限因ؓ(f)只添加了(jin)三个字段Q也可通过grant?nbsp; 加权限:(x)
mysql>grant all on *.* to yushan@localhost identified by '123";
mysql>flush privileges;(hpȝ权限?
Q这U好像有点啰嗦了(jin)。直接用grant不久得了(jin)Q?/p>
d完用?如果要远E登入MySQL,必须跟上LIp 如下Q?/p>
[root@localhost ~]# mysql -u yushan -p -h 192.168.59.123
Enter password:(输入密码)
2.删除用户 Q?/p>
mysql>delete from mysql.user where user ='yushan' ;
mysql>flush privileges; (hpȝ权限?
其他用户的密码修改与root的一P在这里无论是d或是删除操作后必L?span style="color: #008000">flush privileges;q样才能起作用特别是删除用户后,如果未执行,被删除的用户q可dQ以上都是在MySQL root用户下操作,Z(jin)MySQL的安全,应该l用h定相应的权限
DROP PROCEDURE IF EXISTS `Sp_SendRequest`;
DELIMITER ;;
CREATE PROCEDURE Sp_SendRequest(
inRequestID Varchar(32),
inRequestTagID int(11),
inSendID varchar(30),
inOwnerID varchar(30)
)
BEGIN
set @days := 0;
set @timestamps := UNIX_TIMESTAMP();
select from_unixtime(@timestamps,'%d') into @days;
case @days
when 1 then insert into Tbl_FreeGift_01(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 2 then insert into Tbl_FreeGift_02(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 3 then insert into Tbl_FreeGift_03(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 4 then insert into Tbl_FreeGift_04(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 5 then insert into Tbl_FreeGift_05(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 6 then insert into Tbl_FreeGift_06(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 7 then insert into Tbl_FreeGift_07(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 8 then insert into Tbl_FreeGift_08(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 9 then insert into Tbl_FreeGift_09(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 10 then insert into Tbl_FreeGift_10(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 11 then insert into Tbl_FreeGift_11(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 12 then insert into Tbl_FreeGift_12(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 13 then insert into Tbl_FreeGift_13(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 14 then insert into Tbl_FreeGift_14(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 15 then insert into Tbl_FreeGift_15(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 16 then insert into Tbl_FreeGift_16(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 17 then insert into Tbl_FreeGift_17(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 18 then insert into Tbl_FreeGift_18(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 19 then insert into Tbl_FreeGift_19(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 20 then insert into Tbl_FreeGift_20(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 21 then insert into Tbl_FreeGift_21(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 22 then insert into Tbl_FreeGift_22(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 23 then insert into Tbl_FreeGift_23(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 24 then insert into Tbl_FreeGift_24(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 25 then insert into Tbl_FreeGift_25(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 26 then insert into Tbl_FreeGift_26(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 27 then insert into Tbl_FreeGift_27(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 28 then insert into Tbl_FreeGift_28(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 29 then insert into Tbl_FreeGift_29(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 30 then insert into Tbl_FreeGift_30(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
when 31 then insert into Tbl_FreeGift_31(RequestID,RequestTagID,SendID,OwnerID,StartTimeStamp) values(inRequestID,inRequestTagID,inSendID,inOwnerID,@timestamps);
end case;
END;;
怎么设计索引是合理的,q里要分析下索引的设计及(qing)使用?/p>
1. 索引通常是设|where字句中的列,如果你设|select后的列,q是没有M意义的。当然你需要对某列q行排序Qorder by后的列也是可以徏成烦(ch)引的?/p>
2. 使用唯一索引Q主键就是最好的例子Q假设你建的索引列,大量都是重复的,例如Q性别Q那么这L(fng)索引q不?x)加快搜索速度。至于ؓ(f)什么,请大家自行了(jin)解烦(ch)引的工作原理?/p>
3. 只要有可能,p量限定索引的长度,例如索引列ؓ(f) char(100)Q在其前10个字W大部分都是唯一的,误|烦(ch)引的长度?0Q用短索引可以加快查询速度Qƈ节省盘I间?/p>
4. 索引的左前缀Ҏ(gu),联合索引实质上也是徏立了(jin)多个的烦(ch)引,那么是徏立联合烦(ch)引好q是分别建多个烦(ch)引好呢?昄前者更好,利用左前~Ҏ(gu),只要联合索引的最左的列被用到Q那么烦(ch)引都?x)被使用?/p> 5. 当然Q最后要说的是,不要q度使用索引Q烦(ch)引越多,插入的速度慢Q尤其到数据量庞大时Q同Ӟ大量的烦(ch)引将耗费很多盘I间Q造成不必要的费
ALTER TABLEQ添加,修改Q删除表的列Q约束等表的定义?/p>
sp_renameQSQLServer 内置的存储过E,用与修改表的定义?/p>