mysql笔记

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');

你可能感兴趣的:(mysql)