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;
原文:http://www.cnblogs.com/lizejie/p/6483556.html