标签:mysql基础命令入门
/etc/init.d/mysqld start mysqld_safe --defaults-file=/etc/my.cnf 2>&1 > /dev/null &
/data/3306/mysql start mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 >/dev/null &
/etc/init.d/mysqld stop
/data/3306/mysql stop mysqladmin -uroot -p123456 -S /data/3306/mysql.sock shutdown
killall mysqld pkill mysqld killall -9 mysqld kill -9 PIDNUMBER
q 【注意】
1. 用killall关闭,要直到出现mysqld: no process killd 表示操作完成
2. 强制关闭命令在生产情况下一般不使用
3. 尽量不要采用粗鲁野蛮的方式杀死数据库,生产高并发的环境可能会引起数据丢失
mysql ==》刚装完数据库时,无需密码的登入命令 mysql -uroot ==》刚装完数据库,无需密码的登入命令 mysql -uroot -p ==》标准的命令行登入命令 mysql -uroot -p123456 ==》这种方法一般不使用,密码明文会泄漏密码
mysql -S /data/3306/mysql.sock ==》无密码的登入命令 mysql -uroot -p123456 -S /data/3306/mysql.sock ==》带密码的登入命令
[root@db01 ~]# HISTCONTROL=ignorespace
q 【注意】
若想永久生效只需加入/etc/profile中即可
quit exit Ctrl+c
mysqladmin -uroot password "123456"  ==》命令行操作
mysql> set password=password('123456');  ==》进入mysql操作mysqladmin -uroot -S /data/3306/mysql.sock password "123456" ==》命令行操作
mysql> set password=password("123456");  ==》进入mysql操作mysqladmin -uroot -p123456 password "3306"  ==》命令行操作
mysql> update mysql.user set password=password("123456") where user='root' and host="localhost";   ==》进入mysql操作mysqladmin -uroot -p123456 -S /data/3306/mysql.sock password "3306"  ==》命令行操作
mysql> update mysql.user set password=password("123456") where user='root' and host='localhost';   ==》进入mysql操作/etc/init.d/mysqld stop  ==》停止数据库
mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-table 2>&1 >/dev/null &  ==》绕过授权表
mysql   ==》登录mysql不需要密码
mysql> update mysql.user set password=password("123456") where user='root' and host='localhost';  ==》设置新的密码
mysql> flush privileges;  ==》刷新数据库的权限
mysql> quit  ==》退出数据库
/etc/init.d/mysqld start  ==》启动数据库
mysql -uroot -p123456  ==》重新登录即可/data/3306/mysql stop  ==》停止数据库
mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-table 2>&1 >/dev/null &  ==》绕过授权表
mysql -S /data/3306/mysql.sock  ==》登入mysql
mysql> update mysql.user set password=password("3306") where user='root' and host='localhost';  ==》设置新的密码
mysql> flush privileges;  ==》刷新数据库的权限
mysql> quit   ==》退出数据库
/data/3306/mysql start  ==》启动数据库
mysql -uroot -p3306 -S /data/3306/mysql.sock  ==》重新登录即可mysql> show databases; ==》显示所有数据库 mysql> help show; ==》查看帮助方法
mysql> use mysql; mysql> help use;
mysql> create database LZH;
mysql> help create database;  ==》查看帮助
Syntax:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...
 
create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_namemysql> drop database LZH;
mysql> help drop database;  ==》查看帮助
Syntax:
DROP {DATABASE | SCHEMA} [IF EXISTS] db_namemysql> select database();
mysql> show tables;
mysql> show create database lzh\G

mysql> drop user "root"@"::1"; mysql> drop user ""@"db02"; mysql> drop user "root"@"db02"; mysql> drop user ""@"localhost";
mysql> create user 'lzh'@'localhost' identified by '123456'; mysql> grant all on oldboy.* to 'lzh'@’localhost’;
mysql> grant all on oldboy.* to 'lzh'@'localhost' identified by '123456';
mysql> select user from mysql.user; mysql> select user,host from mysql.user;
mysql> create table test( -> id int(4) primary key AUTO_INCREMENT, -> name char(20) NOT NULL -> )ENGINE=innodb default charset=gbk; mysql> help create table;
列类型  | 需要的存储量  | 
TINYINT  | 1字节  | 
INT  | 4字节  | 
BIGINT  | 8字节  | 
SMALLINT  | 2字节  | 
MEDIUMINT  | 3字节  | 
INTEGER  | 4字节  | 
FLOAT  | 4字节  | 
列类型  | 需要的存储量  | 
DATE  | 3字节  | 
TIMESTAMP  | 4字节  | 
DATETINE  | 8字节  | 
TINE  | 3字节  | 
YEAR  | 1字节  | 
列类型  | 需要的存储量  | 
CHAR(M)  | 1=<M<=255字节  | 
VARCHAR  | |
BLOG,TEXT  | 
q INT型:正常大小整数类型
q CHAR型:定长字符串类型,当存储时,总是用空格填满右边到指定的长度
q VARCHAR型:变长字符串类型
mysql> desc test; +-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+----------------+ | id | int(4) | NO | PRI | NULL | auto_increment | | name | char(20) | NO | | NULL | | +-------+----------+------+-----+---------+----------------+ 2 rows in set (0.00 sec)
mysql> alter table test add dept char(20) after id; == 》在某个字段之后加入
默认是在最后插入字段
mysql> show create table test\G
*************************** 1. row ***************************
       Table: test
Create Table: CREATE TABLE `test` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk
1 row in set (0.00 sec)
5.4 插入数据
mysql> insert into test values(1,'oldboy');
mysql> insert into test(name) values('oldgirl');
mysql> insert into test values(3,'zuma'),(4,'keke'),(5,'icna');mysql> truncate table test; mysql> delete from test;
mysql> create index index_name on test(name); mysql> alter table test add index index_name(name);
mysql> alter table test add index index_name_dept(name,dept);
mysql> alter table test change id id int primary key auto_increment; ==》创建 mysql> alter table test drop primary key;
mysql> alter table test add index index_name(name(8));
mysql> alter table test add unique index_name(name);
mysql> alter table test drop index index_name;
mysql> show index from test\G
因为索引不但占用系统空间,而且在更新数据时还需要维护索引数据的,因此索引是把双刃剑,并不是越多越好,譬如数十到几百行的数据就不需要建立索引,插入更新频繁,读取比较少的索引需要建立索引。
select user,host from mysql.usre where password= 索引一定要建在where后的条件列上,并且要尽量选择在唯一值多的大表上的列建立索引。
q 索引类似书籍的目录,会加快查询的速度
q 要在表的列上创建索引
q 索引会加快查询速度,但是也会影响更新的速度,因为更新要维护索引数据
q 索引列并不是越多越好,要在频繁查询的表语句where后的条件列上创建索引
q 小表或重复值很多的列上可以不建立索引,要在大表以及重复值少的条件列上创建索引
q 多个联合索引有前缀生效特性
q 当字段前N个字符已经接近唯一时,可以对字段前N个字符创建索引
q 索引从工作方式区分,有主键、唯一、普通索引
q 索引类型会有BTREE(默认)和hash(适合做缓存(内存数据库))等
mysql> select * from test; mysql> select * from oldboy.test;
mysql> select * from test limit 2;
mysql> select * from test limit 1,2; mysql> select * from test limit N,M;
mysql> select * from test where id=1; mysql> select * from test where name='kaka';
mysql> select * from test where id=5 and name='kaka'; mysql> select * from test where id=1 or name='kaka'; mysql> select * from test where id>2 and id<5;
mysql> select * from test order by id desc; ==》按照逆序排序 mysql> select * from test order by id asc; ==》按照正序排序 默认是正序
mysql> select version(); mysql> select user(); mysql> select now(); ==》查询时间 mysql> select curdate(); ==》查询时间 mysql> select curtime(); ==》获取当前的时间
标签:mysql基础命令入门
原文地址:http://blog.51cto.com/lzhnb/2126348