MYSQL常用查命令:
?
mysql> select version(); 查看MySQL的版本号 mysql> select current_date (); 查看MySQL的当前日期 mysql> select version(), current_date (); 同时查看MySQL的版本号和当前日期 mysql> show databases; 显示当前存在的数据库 mysql> USE mysql 选择使用数据库(USE和QUIT命令不需要分号结束) Database changed mysql> select database (); 显示当前选择的数据库 mysql> show tables; 显示当前数据库中存在的表 mysql> select * from db; 显示表(db)的内容 mysql> describe mytable; 显示表的结构 |
或show columns from 表名;
?
mysql> select -> user () -> \c mysql> |
练习如下操作:
?
mysql> select -> USER () -> , -> now() ->; mysql> Select (20+5)*4; mysql> Select (20+5)*4,sin(pi()/3); mysql> Select (20+5)*4 AS Result,sin(pi()/3); ( AS : 指定假名为Result) |
查看MySQL当前用户占用的连接数
命令: show processlist;
如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。
show processlist;只列出前100条,如果想全列出请使用show full processlist;
?
1 | mysql> show processlist; |
一。数据库:
?
mysql> CREATE DATABASE abccs; 创建一个数据库 mysql> USE abccs 选择使用数据库 mysql> drop database 数据库名; 删除数据库 |
二。表:
1。创建一个表mytable:
?
mysql> CREATE TABLE mytable -> ( -> name VARCHAR (20), -> sex CHAR (1), -> birth DATE , -> birthaddr VARCHAR (20) -> ); |
建立一个员工生日表,表的内容包含员工姓名、性别、出生日期、出生城市。
由于name、birthadd的列值是变化的,因此选择VARCHAR,其长度不一定是20。
可以选择从1到255的任何长度,如果以后需要改变它的字长,可以使用ALTER TABLE语句。
性别只需一个字符就可以表示:"m"或"f",因此选用CHAR(1);
birth列则使用DATE数据类型。
2。查询刚添加的记录:
?
1 | mysql> select * from mytable; |
Empty set (0.00 sec) 这说明刚才创建的表还没有记录。
3。添加新记录:
?
mysql> insert into mytable -> values ->( -> 'abccs' , -> 'f' , -> '1977-07-07' , -> 'china' ->); |
4。用文本方式将数据装入一个数据库表:
一条一条地添加新记录,实在太麻烦。
创建一个文本文件“mysql.txt”,按表结构排好每行每条记录,用定位符(tab)把值分开。
?
123 | abccs f 1977-07-07 china mary f 1978-12-12 usa tom m 1970-09-02 usa |
使用此命令将文本文件“mytable.txt”装载到表中:
?
1 | mysql> Load data local infile "mytable.txt" into table mytable; |
数据传入命令load data local infile
"文件名" into table
表名;
注意:你最好将文件复制到mysql/bin目录下,并且要先用use命令选表所在的库。
5。更新记录:
?
1 | mysql> update mytable set birth = "1973-09-02" where name = "tom" ; |
6。删除记录:
?
mysql> delete from mytable where id=10; //删除掉所有id=10的记录; mysql> delete from mytable where id=10 limit 1; //限制删除掉1条id=10的记录; mysql> delete from mytable //删除一个表的全部记录; mysql> DELETE FROM t1 WHERE C>10; mysql> drop table tablename1,tablename2,…; //删除整一个表或多个表,小心使用。 |
7。重命名表:
?
1 | mysql> alter table t1 rename t2; |
8。修改mysql的表结构:
查看mysql的表结构:
?
1 | mysql> describe mytable; 或用show columns from 表名; |
修改字段属性
?
1 | mysql> alter table tablename modify id int (10) unsigned auto_increment primary key not null |
修改默认值
?
1 | mysql> alter table tablename alter id default 0 |
给字段增加primary key
?
1 | mysql> alter table tablename add primary key (id); |
删除primary key
?
12 | alter table tablename drop primary key ; drop primary key on tablename; |
修改table表数据引擎
?
1 | mysql> alter table tableName ENGINE = MyISAM (InnoDB); |
增加一新字段名:
?
12 | mysql> alter table mytable add column single char (1); mysql> ALTER TABLE table ADD field INT (11) UNSIGNED NOT NULL |
删除字段
?
1 | mysql> alter table t2 drop column c; |
附:
为了改变列a,从INTEGER改为TINYINT NOT NULL(名字一样),
并且改变列b,从CHAR(10)改为CHAR(20),同时重命名它,从b改为c:
?
1 | ALTER TABLE t2 MODIFY a TINYINT NOT NULL , CHANGE b c CHAR (20); |
增加一个新TIMESTAMP列,名为d:
?
1 | ALTER TABLE t2 ADD d TIMESTAMP ; |
在列d上增加一个索引,并且使列a为主键:
?
1 | ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a); |
增加一个新的AUTO_INCREMENT整数列,命名为c:
?
1 | ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD INDEX (c); |
注意,我们索引了c,因为AUTO_INCREMENT柱必须被索引,
并且另外我们声明c为NOT NULL,因为索引了的列不能是NULL。
使用name列的头10个字符创建一个索引:
?
1 | CREATE INDEX part_of_name ON customer ( name (10)); |
三。数据的备份与恢复:
导出和导入数据:(命令在DOS的mysql/bin目录下执行)
导出表
?
1 | mysqldump --opt school > school.sql |
注释:将数据库school中的表全部备份到school.sql文件,school.sql是一个文本文件,
文件名任取,打开看看你会有新发现。
?
1 | mysqldump --opt school teacher student > school.teacher.student.sql |
注释:将数据库school中的teacher表和student表备份到school.teacher.student.sql文件,school.teacher.student.sql是一个文本文件,文件名任取,打开看看你会有新发现。
导入表
?
1234 | mysql mysql> create database school; mysql>use school; mysql>source school.sql; |
(或将school.sql换为school.teacher.sql / school.teacher.student.sql)
导出数据库
?
1 | mysqldump --databases db1 db2 > db1.db2.sql |
注释:将数据库dbl和db2备份到db1.db2.sql文件,db1.db2.sql是一个文本文件,文件名
任取,打开看看你会有新发现。
(举个例子:
mysqldump -h host -u user -p pass --databases dbname > file.dump
就是把host上的以名字user,口令pass的数据库dbname导入到文件file.dump中。)
导入数据库
?
1 | mysql < db1.db2.sql |
复制数据库mysqldump --all-databases > all-databases.sql
注释:将所有数据库备份到all-databases.sql文件,all-databases.sql是一个文本文件,文件名任取。
导入数据库
?
mysql mysql> drop database a; mysql> |