select 列1,列2,... from 表1,表2 where 条件 group by having order by select 也可以被用于检索没有引用任何表的计算列 select left(字段,长度) from 数据库 select * from emp order by sal limit 0,5;--前5位 insert into 表 values(值1,值2,值3)... insert into 表(列1,列2,列3) values (值1,值2,值3) delete from 表[where 条件] 清除表的全部数据 truncate table 表----((截断),自动提交 -----从外部导入数据----- load data infile 文件 into table 表[fields terminated by '字符']; load data infile '/tmp/teacher.txt' into table teacher;-----字段必须一一对应,用tab键分割 load data infile '/tem/teacher.txt' into table teacher fields terminated by ','---用逗号分割 ---------导出--------- select * from teacher into outfile '/tmp/test.txt' create database if not exists 数据库---如果存在,不创建----创建表即在数据库的根目录中创建一个目录,创建表时创建三个文件 tb1_name.frm表格式(定义)文件 tb1_name.myd数据文件 tb1_name.myi索引文件 drop database if exists ----如果存在则删除 create table 表名( 列1 类型[选项] 列2 类型[选项] 列3 类型[选项] ) alter table t1 rename t2;---数据库的改名字rename alter table t2 modify a tinyint not null,change b c chae(20)------将b的结构从char(10)改为char(20),同时重命名 alter table t2 add d timestamp---增加新列 alter table t2 add c int auto_increament,add index(c)---auto_increment列必须被索引---列的改名字change alter table t2 drop column c---删除列c 简历视图 create view test v as select * from t----关键字as ------------视图 ---------- create index idx2_t2 on t2(d) create index idx_t2 on t2 alter table t2 add index (d),add unique index(b),add primary key(a);增加一个索引,增加唯一索引, unique customer_userid(userid)---在列userid上创建唯一索引customer_userid,不唯一索引是index -----跨数据库访问--- select autor_name,editor_name from autor,db2.editor where autor.editor_id = db2.editor.editor_id desc comment_info 'con%';----描述数据库的某个字段 mysql运行在autocommit自动提交模式--set autocommit=0---设成手动提交模式 DDL(create/drop database,create/drop/alter table)语句无法回滚 当事务中对数据库进行更改操作而不是对数据进行操作时,会自动提交先前的事务 ---创建回滚点--- savepoint identifier rollback to savepoint identifier ----锁---- lock tables 表名[read][write],表名[read][write]... unlock tables 当当前线程去锁定另外一张表或连接关闭时,就当前线程锁定的表自动解锁 当一个线程在一个表上得到read,所有线程只能读取 当一个线程在一个表上得到write,只有此线程可以读写, write锁比read锁的优先级高 ------全文索引-------- 全文索引mysql是一个fulltext类型索引,fulltext索引可以在create table时或之后使用alter table或create index 在char,varchar或text列上创建 对于大的数据库,将数据装载到一个没有fulltext索引的表中,然后再使用alter table(或crate index)创建索引,如果将数据装载到一个已经有fulltext索引的表中是非常慢的,全文搜索是通过match()函数完成 eg: create table atricle( id int unsigned auto_increment not null primary key, title varchar(200), body text, fulltext(title,body) ) select * from articles where match(title,boby) against('database'); 搜索字符串作为against()的参数被给定,搜索以忽略字母的大小写的方式执行,返回的记录行被自动以相关性从高到低的次序排列 select id,match(title,body) against('tutotrial') from atricle;---查询相关性 against('+mysql' in boolean mode) against匹配串 apple banana 找出至少包含词的一个的记录行 +apple +juice 两个词都被包含 +apple macintosh 包含apple,但是如果同时包含macintosh,排列更高 +apple -macintosh 包含apple,但不包含macintosh "some words" 整个关键字作为一个整体搜索 mysql有查询缓存,当相同的查询,服务器将从查询缓存中检索结果,为不是再次分析和执行语句 字母严格一致 当相应的表更改时,缓存将被移除 select sql_cache id,name,from customer; select sql_no_cache id,name from customer select @@query_cache_type---默认为on,允许查询被缓存 show variable like 'hava_query_cache'-----表示查询缓存是否可用 select @@global.query_cache_size;---查询缓存大小,默认为0 set @@global.query_cache_size set session query_cache_type = off; flush query cache; show status---监视查询缓存性能 show status like 'qcache_%'; Qcache_queries_in_cache---搜索缓存中结果集的查询数目 Qcache_inserts---被加入到缓存中的查询数目 Qcache_hits---缓存命中的数目 Qcache_lowmen_prunes---因为缺少内存而被从缓存中删除的查询数目 Qcache_not_cachee ---没有用缓存的查询数目 Qcache_free_menory---查询缓存的空闲内存总数 Qcache_free_blocks---查询缓存的空闲内存快的数目 Qcache_total_blocks---查询缓存中的快的总数目 ---------授权---------- grant select,insert,update,delete on *.* to 'test_user'@'%' identified by '123' 授权用户可以在任何主机上登录以及对所有表有增删改查的权限 (grant 权限 to 用户---oracle) grant all privileges on *.* to.....@'localshot' ...with grant option rovoke all on *.* from 'test_user'@localhost; delete from user where user = 'test_user' flush privileges SET PASSWORD FOR 'hua'@'localhost' = PASSWORD('huayaoyue');