Mysql数据库管理

修改root用户密码

本文中主要是命令行方式描述。请注意理解命令后使用,不要因为使用错误造成不可挽回的损失,更多mysql命令请上百度搜索。

方法1:用UPDATE直接编辑user表 
首先登录MySQL。 
mysql> use mysql; 
mysql> update user set password=password('123') where user='root'; 
mysql> flush privileges; 

方法2: 用SET PASSWORD命令 
首先登录MySQL。 
格式:mysql> set password for 用户名@localhost = password('新密码'); 
例子:mysql> set password for root@localhost = password('123'); 

方法3:用mysqladmin 
格式:mysqladmin -u用户名 -p旧密码 password 新密码 
例子:mysqladmin -uroot -p123456 password 123 

方法4:在忘记root密码的时候,可以这样 
以windows为例: 
1. 关闭正在运行的MySQL服务。 
2. 打开DOS窗口,转到mysql\bin目录。 
3. 输入mysqld --skip-grant-tables 回车。--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。 
4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。 
5. 输入mysql回车,如果成功,将出现MySQL提示符 >。 
6. 连接权限数据库: use mysql;  
6. 改密码:update user set password=password("123") where user="root"; 
7. 刷新权限(必须步骤):flush privileges; 
8. 退出 quit。 
9. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。

创建/删除/查看数据库

创建一个数据库

mysql -uroot  –p密码                                        #进入数据库控制台

MySQL [(none)]> create database 数据库名称;     #特别注意有分号

MySQL [(none)]>  show  databases;                      #查看数据库

MySQL [(none)]>  exit;                                 #退出数据库控制台,特别注意有分号

删除一个数据库

MySQL [(none)]> drop database 数据库名称;     #删除数据库

MySQL [(none)]> exit;                                     #退出数据库控制台,特别注意有分号

查看数据库: show databases;           #如下图中3个数据库是默认数据库,不可删除

缺省数据库

选择数据库: use dbname;

新增数据库用户

创建数据库用户

为了安全我们通常给每一个网站程序建立唯一的数据库连接帐号(帐号名不能为root)。

如:添加一个用户名为  db_user,密码为 123456,授权为本机  localhost  对

test数据库所有权限,先登录数据库(注意:先创建一个test数据库),然后命令如下

MySQL  [(none)]>   grant  all   privileges  on  test.*   to  db_user@'localhost'

identified by '123456';                          #授权语句,特别注意有分号

MySQL [(none)]> flush privileges;         #权限立即生效

MySQL [(none)]>  exit;                        #退出数据库控制台,特别注意有分号

 

 

表的操作

显示库下面的表
show tables;

查看表的结构: desc tableName; 查看表的创建过程: show create table tableName; 创建表: create table tbName ( 列名称1 列类型 [列参数] [not null default ], ....列2... .... 列名称N 列类型 [列参数] [not null default ] )engine myisam/innodb charset utf8/gbk 例子: create table user ( id int auto_increment, name varchar(20) not null default '', age tinyint unsigned not null default 0, index id (id) )engine=innodb charset=utf8; 注:innodb是表引擎,也可以是myisam或其他,但最常用的是myisam和innodb, charset 常用的有utf8,gbk; 修改表 1.修改表之增加列: alter table tbName add 列名称1 列类型 [列参数] [not null default ] #(add之后的旧列名之后的语法和创建表时的列声明一样) 2.修改表之修改列 alter table tbName change 旧列名 新列名 列类型 [列参数] [not null default ] (注:旧列名之后的语法和创建表时的列声明一样) 3.修改表之减少列: alter table tbName drop 列名称; 4.修改表之增加主键 alter table tbName add primary key(主键所在列名); 例:alter table goods add primary key(id) 该例是把主键建立在id列上 5.修改表之删除主键 alter table tbName drop primary key; 6.修改表之增加索引 alter table tbName add [unique|fulltext] index 索引名(列名); 7.修改表之删除索引 alter table tbName drop index 索引名; 8.清空表的数据 truncate tableName;

表数据操作

1.插入数据 
	insert into 表名(col1,col2,……) values(val1,val2……); -- 插入指定列
	insert into 表名 values (,,,,); -- 插入所有列
	insert into 表名 values	-- 一次插入多行 
	(val1,val2……),
	(val1,val2……),
	(val1,val2……);


2.修改数据
	update tablename 
	set 
	col1=newval1,  
	col2=newval2,
	...
	...
	colN=newvalN
	where 条件;

3.删除数据    delete from tablenaeme where 条件;

4.select查询

  (1)  条件查询   where  a. 条件表达式的意义,表达式为真,则该行取出
			   b.  比较运算符  = ,!=,< > <=  >=
                           c.  like , not like ('%'匹配任意多个字符,'_'匹配任意单个字符) 
				in , not in , between and
                           d. is null , is not null			
  (2)  分组       group by 
			一般要配合5个聚合函数使用:max,min,sum,avg,count
  (3)  筛选       having
  (4)  排序       order by
  (5)  限制       limit

5.连接查询
5.1 左连接
	.. left join .. on
	table A left join table B on tableA.col1 = tableB.col2 ; 
  例句:
  select 列名 from table A left join table B on tableA.col1 = tableB.col2
5.2 右链接: right join 
5.3 内连接: inner join 左右连接都是以在左边的表的数据为准,沿着左表查右表. 内连接是以两张表都有的共同部分数据为准,也就是左右连接的数据之交集. 7 子查询 where 型子查询:内层sql的返回值在where后作为条件表达式的一部分 例句: select * from tableA where colA = (select colB from tableB where ...); from 型子查询:内层sql查询结果,作为一张表,供外层的sql语句再次查询 例句:select * from (select * from ...) as tableName where ....

字符集、索引、存储引擎、触发器等

字符集
客服端sql编码 character_set_client 服务器转化后的sql编码 character_set_connection 服务器返回给客户端的结果集编码 character_set_results 快速把以上3个变量设为相同值: set names 字符集

索引
提高查询速度,但是降低了增删改的速度,所以使用索引时,要综合考虑. 索引不是越多越好,一般我们在常出现于条件表达式中的列加索引. 值越分散的列,索引的效果越好
索引类型 primary key主键索引 index 普通索引 unique index 唯一性索引 fulltext index 全文索引 
存储引擎 engine=1\2 1 Myisam 速度快 不支持事务 回滚 2 Innodb 速度慢 支持事务,回滚 数据库事务
①开启事务 start transaction ②运行sql; ③提交,同时生效\回滚 commit\rollback 触发器 trigger 监视地点:表 监视行为:增 删 改 触发时间:after\before 触发事件:增 删 改 创建触发器语法 create trigger tgName after/before insert/delete/update on tableName for each row sql; -- 触发语句 删除触发器:drop trigger tgName;