MySQL库和表的管理

MySQL数据库服务配置好后,系统会有4个默认的数据库.

information_schema:虚拟对象,其对象都保存在内存中
performance_schema:服务器性能指标库
mysql:记录用户权限,帮助,日志等信息
test:测试库

MySQL数据库及表的管理

1.查询所有数据库

mysql> show databases;

2.创建数据库

语法:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name

默认指定编码格式为utf-8

mysql> create database if not exist db_name;

自定义编码格式

mysql> create database db_name default character set utf8;

删除数据库

mysql> drop database if exists db_name;

3.修改数据库

查询编码格式

mysql> show create database db_name;

修改编码格式

alter database db_name default character set gbk;

4.管理表

1.创建表及查看表

查看表

USE db_name;
show tables;

查看表结构

desc tbl_name;

查看表中的列

SHOW COLUMNS FROM tbl_name;

查看表的状态信息

show table status like 'tbl_name';

创建表语法:  

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (
... 字段定义 ...,
model VARCHAR(20) NOT NULL,
... 字段定义 ...
);

创建表:

mysql> create table tbl_name(
    -> id int(11) not null auto_increment,
    -> name char(16) not null,
    -> age int default null,
    -> address char(50) not null,
    -> primary key(id)
    -> )engine=innodb default charset=utf8
    -> ;
Query OK, 0 rows affected (0.02 sec)

表中插入数据:

向MySQL数据表插入数据通用的 INSERT INTO SQL语法:

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );

5.添加,删除或重新定义列,使用ALTER命令.

给表中添加字段

alter table tbl_name add column 字段名 varchar(5);

在表中删除字段

alter table tbl_name drop column 字段名;

在表中添加id字段

alter table tbl_name add id int not null
primary key auto_increment first;

更改列定义或名称

要改变列的定义,使用MODIFY 或CHANGE 子句以及ALTER命令。 例如, 要改变字段 c 从 CHAR(1) 修改为 CHAR(10), 那么可以这样做:

mysql> ALTER TABLE tbl_name MODIFY c CHAR(10);

CHANGE语法可能有点不同。CHANGE关键字后的名称是要修改的列,然后指定新的定义,其中包括新的名称。试试下面的例子:

#其中i为旧字段,j为新字段.
mysql> ALTER TABLE tbl_name CHANGE i j int; 

更改列的默认值

可以使用ALTER命令更改任何列的默认值。尝试下面的例子.

mysql>ALTER TABLE tbl_name ALTER d SET DEFAULT 1000;
mysql> SHOW COLUMNS FROM tbl_name;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| d     | int(11) | YES  |     | 1000    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

从任何一列删除默认的约束,可以使用ALTER命令以及DROP子句

mysql> ALTER TABLE tbl_name ALTER i DROP DEFAULT;
mysql> SHOW COLUMNS FROM tbl_name;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| d     | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

更改表类型
可以通过使用ALTER命令以及TYPE子句修改表的类型。试试下面的例子,将 tbl_name 的类型更改为MyISAM 表类型。
若想要知道一个表的当前类型,那么可使用 SHOW TABLE STATUS 语句。

mysql> ALTER TABLE tbl_name TYPE = MYISAM;
mysql>  SHOW TABLE STATUS LIKE 'tbl_name'\G
*************************** 1. row ****************
           Name: tbl_name
           Type: MyISAM
     Row_format: Fixed
           Rows: 0
 Avg_row_length: 0
    Data_length: 0
Max_data_length: 25769803775
   Index_length: 1024
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2017-04-03 18:35:36
    Update_time: 2017-04-03 18:35:36
     Check_time: NULL
 Create_options:
        Comment:
1 row in set (0.00 sec)

删除数据表:

mysql> DROP TABLE tbl_name;

将表中记录清空:

mysql> DELETE FROM tbl_name;
mysql>truncate table tbl_name;

重命名表:

mysql> rename table tbl_name to tb2_name;
或者
mysql> ALTER TABLE tbl_name RENAME TO tb2_name;

复制表数据(数据一样结构不同)

create table t2 select * from t1;

复制表结构

CREATE TABLE 新表 SELECT * FROM 旧表WHERE 1=2
或者
CREATE TABLE 新表 LIKE 旧表

 

参考文档:
http://www.cnblogs.com/zmxmumu/p/4424877.html

http://www.cnblogs.com/chenmh/p/5644644.html

 http://www.yiibai.com/mysql/mysql_alter_command.html

 

posted @ 2017-04-06 20:33  梦徒  阅读(325)  评论(0编辑  收藏  举报