整理mysql的一些常用用法
在php项目中,使用mysql的一些常用的语句,今天有空系统整体一下。有些整理自网络,如有错误,请指正,谢谢。。。。
#显示数据库和显示数据表
show databases;
use databaseName;
show tables;
#更改数据表的名称
alter table tableName rename 新名称;
#给指定表中添加一个字段
alter table tableName add  字段名称  字段类型;
#修改字段
alter table tableName change 字段名称 字段类型;
alter table tableName  modify 字段名称 字段类型;
#删除列
alter table tableTable drop 字段名称;
#创建索引
alter table c_table add index (c_n1,c_n2);
alter table c_table add unique index_name(c_n);
alter table c_table add primary key(sid);
#删除索引:
alter table c_table drop index c_n1;
#更改列信息:
alter table t_table change c_1 c_1 varchar(200);
alter table t_table modify 1 c_1 varchar(200);
#insert插入语句:
insert into table_name (c_1,c_2) values (’x1′,1);
#update语句:
update table_name set c_1 =1 where c_2=3;
#删除数据库或者表:
drop table table_name;
drop database database_name;
对于数据库的优化(整理自网络):
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 
2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。
3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 
4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如: 
select id from t where num=10 or num=20 
可以这样查询: 
select id from t where num=10 
union all 
select id from t where num=20 
5.in 和 not in 也要慎用,否则会导致全表扫描,如: 
select id from t where num in(1,2,3) 
对于连续的数值,能用 between 就不要用 in 了: 
select id from t where num between 1 and 3 
6.下面的查询也将导致全表扫描: 
select id from t where name like '%abc%' 
若要提高效率,可以考虑全文检索。 
7.如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程
序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然而,如果在编译时建立访问计划,变
量的值还是未知的,因而无法作为索引选择的输入项。如下面语句将进行全表扫描: 
select id from t where num=@num 
可以改为强制查询使用索引: 
select id from t with(index(索引名)) where num=@num 
8.应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如: 
select id from t where num/2=100 
应改为: 
select id from t where num=100*2 
9.应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如: 
select id from t where substring(name,1,3)='abc'--name以abc开头的id 
select id from t where datediff(day,createdate,'2005-11-30')=0--‘2005-11-30’生成的id 
应改为: 
select id from t where name like 'abc%' 
select id from t where createdate>='2005-11-30' and createdate<'2005-12-1' 
10.不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用
索引。 
11.在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时
才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致。 
12.不要写一些没有意义的查询,如需要生成一个空表结构: 
select col1,col2 into #t from t where 1=0 
这类代码不会返回任何结果集,但是会消耗系统资源的,应改成这样: 
create table #t(...) 
13.很多时候用 exists 代替 in 是一个好的选择: 
select num from a where num in(select num from b) 
用下面的语句替换: 
select num from a where exists(select 1 from b where num=a.num)
整理mysql的一些常用用法的更多相关文章
- SqlServer与MySql的一些常用用法的差别
		最近学习了一下mySql,总结一下SqlServer不同一些用法: 操作符优先级以下列表显示了操作符优先级的由低到高的顺序.排列在同一行的操作符具有相同的优先级.:=||, OR, XOR&& ... 
- mysql alter的常用用法
		增加字段,并加注释: ALTER TABLE table_name ADD field_name field_type [not null|null|default value][comment '注 ... 
- Mysql的常用用法
		一.mysql中limit的用法详解[数据分页常用] 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT ... 
- MySql与SqlServer的一些常用用法的差别
		MySql与SqlServer的一些常用用法的差别 本文为转载 本文将主要列出MySql与SqlServer不同的地方,且以常用的存储过程的相关内容为主. 1. 标识符限定符 SqlServer [] ... 
- mysql中event的用法详解
		一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ... 
- 【三支火把】---一份程序看懂C程序printf()的几种常用用法
		闲来继续巩固我的学习之路,今天略微整理了一下,C程序中Printf()的一些常用用法,虽然自己以前好像会,但是不够系统,今天大致整理了一些,先贴上来看看,以后在看到其他,继续补充,希望能帮到一些像我一 ... 
- grep参数说明及常用用法
		grep参数说明及常用用法 趁着午休的时间把自己经常使用的一些grep命令整理一下. 方便以后查看. 后续会逐步把awk/sed/find等常用的命令理一理. 增强下记忆. 也算是对得起自己了. ^^ ... 
- mySQL中replace的用法
		MySQL replace函数我们经常用到,下面就为您详细介绍MySQL replace函数的用法,希望对您学习MySQL replace函数方面能有所启迪 mysql replace实例说明: ... 
- MySQL的DML常用语法格式
		MySQL的DML常用语法格式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们知道MySQL的查询大致分为单表查询,多表查询以及联合查询.多表查询,顾名思义,就是查询的结果可能 ... 
随机推荐
- oracle数据库管理--用户管理
			一.oracle数据库用户管理 1.sys和system用户区别 (1)存储的数据的重要性不同: sys所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于or ... 
- Java三大特征之继承(二)
			在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ... 
- ORACLE CASE函数 .
			Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ... 
- source install MacPorts--checking for Tcl configuration... configure: error: Can't find Tcl configuration definitions
			If you installed MacPorts using the package installer, skip this section. To install MacPorts from t ... 
- VMware下设置CentOS虚拟机与主机同一网段
			由于在开发中经常使用到自己的电脑搭建虚拟机器进行个人开发,而虚拟机器每次登录所使用的命令行界面比较小,看起来也不舒服.以下主要对centos虚拟机器下配置与主机共享同一网段IP,通过第三方软件(put ... 
- python中的星号*、**的意义
			我们都知道,定义一个函数,当传入的参数个数未知时就可以使用*来表示. 单引号*: def test(*args): if len(args) >= 4: print(arg[3]) test(1 ... 
- Exception和IOException之间的使用区别
			Exception和IOException之间的使用区别 先看一段代码.这段代码来自<深入剖析tomcat> public void await() { // 创建ServerSock ... 
- MS SQL 小总结
			1.获取当前数据库下所有的表名称: Use 你的数据库 select Name from sysobjects where xtype='U' 2.获取当前表下的列名: select name fro ... 
- 打开本地STL文件并创建webgl使用的geometry
			需求 打开本地STL文件 一个独立基于webgl的viewer,会被别的网站重用 将打开文件的数据传输给viewer,并且在文件加载的时候显示进度条 解决方案 #1可以使用传统的html5 api来打 ... 
- android 自定义AlertDialog(一段)
			java: final AlertDialog dialog = new AlertDialog.Builder(mContext) .create(); dialog.setCancelable(f ... 
