1.创建用户
创建用户的三种方法
(1)insert into mysql.user(Host,User,Password) values('localhost','hadoop',password('hadoop'));
(2)CREATE USER 'hadoop'@'localhost' IDENTIFIED BY 'hadoop'
2.给用户赋予可以访问某个DB的权限
--赋予 查询,插入,删除,更新的权限
GRANT SELECT,INSERT,DELETE,UPDATE ON sparkDB.* TO 'hadoop'@'%' IDENTIFIED BY "hadoop"
--赋予管理员的权限
grant all privileges on *.* to hadoop@localhost identified by "hadoop" WITH GRANT OPTION ;
//赋予所有的权限
grant all privileges ON sparkDB.* TO 'hadoop'@'%' IDENTIFIED BY "hadoop";
3.主键约束问题
(1).unique key要求列唯一,但不包括null字段,也就是约束的列可以为空且仅要求列中的值除null之外不重复即可;
(2).primary key也要求列唯一,同时又限制字段的值不能为null,相当于Primary Key=unique + not null。
创建一个primary key和unique key都会相应的创建一个unique index。
4.mysql 中coalesce相比nvl优点是,coalesce中参数可以有多个,而nvl()中参数就只有两个。
5.改变字段长度
altertable tbl_content_shop_infmodifycolumn shop_descvarchar(1024);
6. 导出表结构和数据
mysqldump -uhadoop -phadoop -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --tables hadoopDB brand> brand.sql
7.导出某个库的所以表结构(不包含数据)
mysqldump -h localhost -uhadoop -phadoop -d sparkDB > dump.sql
8.dump文件只导出数据
mysqldump -uhadoop -phadoop -h127.0.0.1 -P3306 -t hadoopDB test> test.sql
Mysql 索引
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。
1.虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件
2.建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。
索引的优缺点?
优点:
1.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
2.可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
3.可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
5.通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
缺点:
1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚集索引那么需要的空间就会更大。
3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
原来Linux下的MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:
(1)用root登录,修改 /etc/my.cnf;
(2)在[mysqld]节点下,加入一行: lower_case_table_names=1
(3)重启MySQL即可;
索引类型:
表中的聚簇索引(clustered index )就是一级索引,除此之外,表上的其他非聚簇索引都是二级索引,又叫辅助索引(secondary indexes)。