mysql

#1.sql语句中对于字符串形式的数据,一定要加上引号,否则查不到数据; 例:uName='qingfeng';
#2.数据库突然连接不上?
答:可能是同时连接多个数据库,造成端口已被占用
#3.mysql替换数据中的某部分字符串
答:update 表名 set 字段名=replace(字段名,‘被替换字符串’,‘替换字符串’);
#4.sql语句select version();可以获取mysql版本;获取当前日期select current_date();获取当前时间select current_time();获取π值,select pi();计算数据select 4+1;
#5.修改auto_increment的sql语句:alter table 表名auto_increment=值;数据表的重命名alter table oldname rename to newname;修改引擎 alter table 表名 engine=innodb;
#6.mysql数据库命名规范:字母(区分大小写),0-9,以及下划线'_',共63个字符
#7.$con = mysql_connect('localhost','root','lamp69');mysql_get_server_info($con);获取数据库服务器信息
#8.修改mysql配置文件的字符集[client] default-character-set= utf8 [mysqld]  character-set-server=utf8 collation-server=utf8_general_ci  skip-character-set-client-handshake [mysql]  default-character-set = utf8   查看:show variables like "%char%"; show variables like 'collation_%';

#9.先前电脑中有mysql,java用的,当装了wampserver后mysql -uroot -p 进不去,关闭mysql服务,通过进程查看mysqld-nt.exe占了3306端口,把该进程kill掉,启动wampserver中的mysql服务,就可以进去了

#10.flush tables with read lock;命令执行后,该mysql中所有数据库中的所有表数据只能查询,不能再增删改(A线程加锁后,A执行增删改会报错,其他线程执行增删改会阻塞),可以在A线程下执行show processlist;命令来查看,如果有阻塞的,状态是Waiting for global read;解锁用unlock tables,A解锁后,其他线程上原来被阻塞的命令自动开始执行

#11.数据库是否支持分区,show variables like '%partition%';优化表,optimize table 表名,如果删除了表的大部分或改变了变长(varchar,blob,text)字段的值,使用优化后,删除的记录以一个链接表维持,随后的insert操作再次使用旧的记录位置,来利用旧数据未使用的空间

#12.数据库索引:普通索引就是为提高查询速度,应该为应用(查询,排列等)次数多、不经常变更、精确缩减范围的字段(性别就不加索引)添加,alter table 表名 add index 索引名(字段名);索引名任意起,起标识索引的作用,删除索引时用到;字段名两边不要加引号;唯一索引,除了提高查询速度外,一般更是为了使数据唯一,如果没有设置该字段not null的话,可以重复为null;主键索引,可以作为外键,主键不能为空,字段的数据也具有唯一性;外键索引,关联另一张表主键,保持数据一致性的索引;添加方法1,alter table 表名 add foreign key(字段名) references 表2名(表2主键)on delete cascade on update cascade;如果有后面on语句,则在删除或更新表2(主键表)中已经与表一(外键表)有关联的数据时,不再因已有关联而无法删除或更新(报错),而是表一中数据随表二中关联数据删除或更新;添加方法2是在建表语句中用 constraint 外键名(该名称任意起) foreign key(字段名) references `表2名`(·表2主键·);外键关联的两张表都得是innodb类型才可以,否则报150错;show engine innodb status;  LATEST FOREIGN KEY ERROR显示错误原因;添加外键时如果报错为Cannot add or update a child row:a foreign key constraint fails,则表示表1中存在外键,在表2中没有对应的主键。字符字段只建前缀索引

#13.mysql的联合索引 alter table 表名 add index 索引名(字段1,字段2......) ; 如果建表语句是这样的:

CREATE TABLE test (
id INT NOT NULL,
last_name CHAR(30) NOT NULL,
first_name CHAR(30) NOT NULL,
PRIMARY KEY (id),
INDEX name (last_name,first_name));

以下将被索引

SELECT * FROM test WHERE last_name='Widenius';
  
SELECT * FROM test WHERE last_name='Widenius'
AND first_name='Michael';
  
SELECT * FROM test WHERE last_name='Widenius'
AND (first_name='Michael' OR first_name='Monty');
  
SELECT * FROM test WHERE last_name='Widenius'
AND first_name >='’M' AND first_name < 'N';

以下将不被索引

SELECT * FROM test WHERE first_name='Michael';
 
SELECT * FROM test WHERE last_name='Widenius'
OR first_name='Michael';

char和varchar类型的列,可以以一个列的固定长度来作为索引,如前10个字符:alter table 表名 add index 索引名(列名(10));对于BLOB和TEXT类型的列,你必须指明索引长度,也就是索引列的前缀,你不能索引列的全部

mysql的预处理 prepare 对象名 from 'sql语句';

prepare stmt from 'select * from test4 where id=?';
set @a=1;
execute stmt using @a;
deallocate prepare stmt;//取消预处理分配

mysql的事务处理 set autocommit=0; rollback;commit; 或者begin 或者starttransaction;mysql存储 procedure

#14.phpmyadmin  修改用户密码,登陆root账号,点击用户, 编辑权限,输入密码 ,点击 生成(会加密,也可以不点) , 执行,  修改程序配置文件   (更新缓存,有的需要,有的不需要)

#15.数据库中是时间戳,转成年月日时分秒用select from_unixtime(uptime) from mlc_user limit 5;   存的是年月日时分秒,转成时间戳用 select unix_timestamp(current_date());

#16.show index from 表名  查看该表的索引

#17.mysql 利用source 文件路径.sql 时报错MySQL server has gone away,执行命令show VARIABLES like '%max_allowed_packet%';运行后发现是max_allowed_packet = 1M 限制了,把设置成更大值,就导入成功了;然后导入一个2M大的sql文件时,前面导入成功,后面就断开连接了。这时就不用source了,删掉导入的部分数据。用mysql -uroot -p 库名<e:/a.sql 导入。这时又报错,默认值无效,查看了下,发现是默认值是中文。然后删掉导入的部分数据,又重新导入。用的是mysql -uroot -p --default-character-set=utf8 库名<e:/a.sql

#18.连接另一个局域网内机器的数据库,每天早上启动该数据库服务器后,有时无法链接,可能是该机器的ip和别的机器有冲突,此时修改下ip就行

#19.select sum(if(age > 0,age,0) ) from user;如果字段的值不大于0时,就当0来统计,防止负数的出现

#20.mysql 查询 中order by case when 条件 then 字段 else 字段 end的使用。例:“b.status=1 and b.preheat_time>".time()." desc,case when b.preheat_time>".time()." then b.preheat_time  end,b.order desc,b.status=1 and b.borrow_end_time>".time()." desc,b.status=1 or b.status=8 desc,b.status=3 desc,b.preheat_update_time desc”

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值