现在的位置: 首页 > 综合 > 正文

mysql crash course 必知必会 摘要

2013年12月02日 ⁄ 综合 ⁄ 共 2773字 ⁄ 字号 评论关闭

show databases;-- 显示全部的数据库
use database_name;-- 选择一个数据库
show tables;
-- 显示当前数据库所有的表

1.添加PRIMARY KEY(主键索引) 
mysql>ALTER TABLE `table_name` ADD PRIMARY KEY (`column`)

2.添加UNIQUE(唯一索引) 
mysql>ALTER TABLE `table_name` ADD UNIQUE (`column`)

3.添加INDEX(普通索引) 
mysql>ALTER TABLE `table_name` ADD INDEX index_name (`column`) 

4.添加FULLTEXT(全文索引) 
mysql>ALTER TABLE `table_name` ADD FULLTEXT (`column`) 

5.添加多列索引 
mysql>ALTER TABLE `table_name` ADD INDEX index_name (`column1`, `column2`, `column3`)

1. 使用distinct 关键字返回一列不同的值,select distinct column_name from table_name;

2. 单独的limit 5 表示返回的数据不多于5行,limit 3,5; 返回从行3开始的5行数据,3是起始位置,5表示要检索的数据行数. limit 3,5 == limit 3 offset 5; 

3. select column_name from table_name order by column_name2 ASC; 默认排序是ASC升序,DESC表示降序。

4.正则表达式regexp和like 主要区别在于like匹配整个列,要求完全相同,而regexp匹配则可以是列的子串。例:select 'test' like 'tes' 返回0匹配失败,select 'test' regexp 'tes' 返回 1匹配成功;

5.Mysql中的正则表达式匹配(自版本3.23.4后)不区分大小写,若要区分大小写可使用binary关键字,select column_name form table_name where column_name2 regexp binary 'string';
 
6. 多数正则表达式使用单斜杠'\'作为转义字符,mysql里面的使用双反斜杠 '\\' ,mysql自己解释一个,
正则表达式库解释一个。

7. 可以在不使用数据库表的的情况下测试正则表达式,语法如下:select 'hello' regexp '[0-9]';

8. 多数的DBMS使用 '+' 或者 '||' 来实现拼接,mysql则使用concat()函数来实现,当把sql语句转换为mysql语句时,一定要把这个函数区别铭记在心。 select concat(column_name ,'(', column_name2,')')
 from table_name;

9. 使用count(*)函数 对表中行的数目进行计数,不管列中是否包含null值,但使用 count(column_name)对特定列计算行数,要忽略null值。

10. 一般在使用group by子句时应该给出order by 子句,这是保证数据正确排序的唯一方法,
千万不要仅仅依赖group by 排序数据。

11. 应该保证所有的联结都有where子句,否则mysql将返回比想要的数据多得多的数据。

12. union组合查询必须由2条或2条以上的select语句组成,union中每个查询必须包含相同的列,表达式
或者聚集函数,不过各个列不需要以相同的次序列出。union会自动消去重复行,union all不取消重复的行。

13. 一般不要使用没有明确给出的列的列表的insert语句,使用列的列表能使sql代码继续发挥作用,即使
表结构发生了变化。insert into table_name(name,phone,sex) values('meinv','12306','female') 

14. mysql用单条insert 语句处理多个插入比使用多条insert语句快,下面是插入2行记录的语句。
insert into table_name(column1,column2) values(值,值),values(值2,值2); 

15. 如果使用update语句更新多行,并且在更新这些行中的一行,或者多行出现错误,则整个update 操作被取消(错误发生前更新的所用行被恢复到他们原来的值),即使发生错误,也继续更新,可以使用IGNORE关键字,例:update ignore table_name set ....

16. delete 语句从表中删除行,但不删除表本身,如果想从表中删除所有行,不要使用delete,可使用 
truncate delete 语句,它完成相同的工作,但速度更快(truncate 实际上删除原来的表并重新创建一张新表,而不是逐行删除它们)

17. 视图为虚拟的表,它们包含不是数据而是检索数据的查询,视图提供了一种mysql的select 封装,可用来简化数据的处理。

18. 存储过程简单来说,就是为以后的使用而保存的一条或者多条mysql语句的集合。

19. 不像多数的DBMS,mysql 游标只能用于存储过程(和函数)

20. 触发器是mysql响应以下任意语句而自动执行的一条mysql语句(或位于begin和end语句之间的一组语句) : delete ,insert,update,其他mysql语句不支持触发器。

21. 创建insert触发器语句:create trigger trigger_name after insert on tbl_name for each
row trigger_stmt

22. 事务处理可以用来维护数据库的完整性,他保证成批的mysql操作要么完全执行,要么完全不执行。

23. 事务用来处理 insert,update,delete语句,不能回退select语句,这也是没有任何意义的,不能回退
create和drop语句

24. 普通mysql语句是隐含提交的,处理事务语句块时不会隐含提交,必须使用commit显示提交,但commit或者rollback语句执行后,事务会自动关闭

25. 切换用户: mysql -u user_name -p, 输入完成后输入密码

26. grant 和 revoke 可以在几个层次上控制访问权限:
整个服务器,使用grant all  和 revoke all
整个数据库,使用grant on database_name.*;
特定的表,使用grant on database_name.table_nam;
特定的列;
特定的存储过程;

27.修改用户的密码,第二个password是个函数,修改密码必须通过password函数加密。set password for guest_usr = password('12345');

抱歉!评论已关闭.