查询所有表信息
select * from information_schema.tables where table_schema='mvcphp'”
information_schema 是一张数据表,里面存储了服务器上所有数据库的信息。上述sql语句 释义:
通过 条件table_schem=‘mvcphp’(你想要查询的数据库名) 在数据表 information_schema 进行查询。
简单列举下返回的结果集中的键名含义:
TABLE_NAME ---- 数据表的表名
ENGINE ---- 数据表的引擎
MyISAM InnoDB MEMORY Archive 各有优劣
TABLE_ROWS ---- 数据表的数据条数
AVG_ROW_LENGTH ---- 平均每行的长度
DATA_LENGTH ---- 数据表的大小长度
DATA_FREE ---- 表碎片 (在做数据库优化可能会用到 -- 针对 varchar/text等可变长度类型的值被删除时)
sql = "select table_name,engine,table_rows,data_length+index_length length,DATA_FREE from information_schema.tables
where TABLE_SCHEMA='mvcphp'" 可以查看某个表的大小以及表碎片大小
AUTO_INCREMENT ---- 自增的最大数值
CREATE_TIME ---- 创建时间
TABLE_COLLATION ---- 数据表编码格式
一些比较有用的SQL语句
获取数据表结构:
SELECT CREATE TABLE `TABLENAME`
删去字段
ALTER TABLE tbl DROP COLUMN filed1, DROP COLUMN field2;
修改列的类型 (需要列出两次列名)
ALTER TABLE tbl CHANGE filed1 filed1 BIGINT NOT NULL;
删除数据库
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;
删除表
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE];
删除多个表
DROP TABLE IF EXISTS my_tbl1, my_tbl2;
向表中插入数据语法
INSERT INTO tbl_name (f1, f2, f3) VALUES(val1, val2, val3);
创建表
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [
create_definition1,create_definition2,...)
][table_options] [select_statement]
查询表结构
desc [tableName];
修改字段名
alert table [tableName] change [fieldName] [newfieldName] [type(这里必须加上类型)] ;
删除字段
alert table tableName drop column fieldName
创建数据库
create database [dbName];
增、删、改、查语句
insert into [tableName] ( fields,.... ) value ('value,....');
例:insert into `arti` (title,content) value ('标题','内容');
delete from [tableName] where [field]='[value]' ; 删除一般使用 id字段。
例: delete from `arti` where id=1; 在 【arti】表中删除 id = 1 的那条数据;
update [tableName] set [field]='[value]' where [field] = '[value]';
例:update arti set title='修改标题' where id=5;
select [fields] from [tableName];
例:select title,content from arti; select * from arti; 尽量不适用 * 查询整张表。
关于SQL语句优化
1,不使用子查询
2,避免使用索引
3,用in来代替or 查询
4,like百分号无法使用到索引
分组统计可以禁止排序
避免随机取记录
禁止不必要的order by
插入数据时批量插入
......