MySQL DDL语句

     DDL语句是定义语言的缩写,是对数据库内部的对象进行创建、删除、的操语句,它和DML语句最大的区别是DML只对表的数据进行操作,而不涉及表的定义、结构的修改,更不会涉及其它对象。

0、连接mysql

mysql -uxxx -pxxx -h192.168.0.123 -Pxxx

1、创建数据库

CREATE DATABASE dbname;

2、查看有哪些数据库

SHOW DATABASES;

3、选择将要操作的数据库

USE dbname;

4、删除数据库

DROP DATABASE dbname;

5、创建表 

CREATE TABLE tablename(id INT(11) NOT NULL,name VARCHAR(256) NOT NULL);

6、查看表结构信息 

DESC tablename;
或:
SHOW CREATE TABLE tablename;

7、删除表

DROP TABLE tablename;

8、修改表

8.1修改表类型

语法:

ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]

如将上表的name varchar(256)改成char(128):




ALTER TABLE tablename MODIFY name CHAR(128) NOT NULL;

 8.2增加表字段

语法:
ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name];
如给上表添加age字段:
ALTER TABLE tablename ADD age INT(11) NOT NULL;

 8.3删除表字段

语法:
ALTER TABLE tablename DROP [COLUMN] col_name;
如删除上表age字段:
ALTER TABLE tablename DROP age;

8.4字段改名

语法:
ALTER TABLE tablename CHANGE [COLUMN] old_col_name new_col_definition [FIRST | AFTER col_name];
如修改上表字段name名为uname:
ALTER TABLE tablename CHANGE name uname CHAR(128);

    CHANGE和MODIFY都可以修改表字段定义,不同的是CHANGE写两次字段名,但是CHANGE可以修改列名,而MODIFY则不能。

8.5修改字段排列顺序

    上面介绍的修改表定义后面都有一个可选项目[FIRST | AFTER col_name],这个选项可以用来修改字段在表中的顺序,ADD新增字段的默认位置是在表的最后,CHANGE和MODIFY默认不改动字段的位置。

    如:

在上表中添加birth字段,并放到列id后面:
ALTER TABLE tablename ADD birth DATETIME AFTER id;
再次修改,把它放到uname表后面:
ALTER TABLE tablename MODIFY birth DATETIME NOT NULL AFTER uname;

 8.6修改表名

语法:
ALTER TABLE tablename RENAME [TO] new_tablename;
如把上面表名tablename改成test:
ALTER TABLE tablename RENAME test;

 8.7修改表引擎

      http://chenzehe.iteye.com/blog/1558543

9、锁表

锁表:
FLUSH TABLES WITH READ LOCK;
解锁:
UNLOCK TABLES;

10、创建索引

1.ALTER TABLE

ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。 
ALTER TABLE table_name ADD INDEX index_name (column_list)
ALTER TABLE table_name ADD UNIQUE (column_list)
ALTER TABLE table_name ADD PRIMARY KEY (column_list)

2.CREATE INDEX

CREATE INDEX可对表增加普通索引或UNIQUE索引。
CREATE INDEX index_name ON table_name (column_list)
CREATE UNIQUE INDEX index_name ON table_name (column_list)

11、删除索引

可利用ALTER TABLE或DROP INDEX语句来删除索引。类似于CREATE INDEX语句,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,语法如下。 

DROP INDEX index_name ON talbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY 

其中,前两条语句是等价的,删除掉table_name中的索引index_name。
第3条语句只在删除PRIMARY KEY索引时使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。

猜你喜欢

转载自chenzehe.iteye.com/blog/1558619