DDL语句 data definition languages
针对的是数据段、数据库、表、列、索引等数据库对象。关键字主要有create、drop、alter等。
启动MySQL服务之后,登录数据库命令:
mysql -uroot -pxxx;
注意:-u和-p与后面的名称、密码之间是没有空格的。
- 创建数据库
#创建数据库
create database dbname;
#选择数据库
use dbname;
#显示数据库表
show tables;
示例
CREATE DATABASE mybase;
USE mybase;
- 删除数据库
mysql> drop database dbname;
Query OK, 0 rows affected (0.00 sec)
drop语句操作的结果都是显示“0 rows affected”。
- 创建表
create table tablename(
column_name_1 column_type_1 constraints;
column_name_2 column_type_2 constraints;
...
column_name_n column_type_n constraints;
);
示例
CREATE TABLE users (
uid INT PRIMARY KEY AUTO_INCREMENT ,
uname VARCHAR(20),
uaddress VARCHAR(200)
);
MySQL的表名是以目录的形式存在于磁盘上,所以表名的字符可以用目录名允许的字符。column_name是列的名字;column_type是列的数据类型;constraints是列的约束条件。
#查看数据表结构
desc tablename;
#查看建表的SQL语句
show create table tablename \g;
mysql> show create table users;
+-------+----------------------------------------------+
| Table | Create Table
+-------+----------------------------------------------+
| users | CREATE TABLE `users` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`uname` varchar(20) DEFAULT NULL,
`uaddress` varchar(200) DEFAULT NULL,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+----------------------------------------------+
1 row in set (0.00 sec)
mysql> show create table users \g;
+-------+----------------------------------------------+
| Table | Create Table
+-------+----------------------------------------------+
| users | CREATE TABLE `users` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`uname` varchar(20) DEFAULT NULL,
`uaddress` varchar(200) DEFAULT NULL,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+----------------------------------------------+
1 row in set (0.00 sec)
ERROR:
No query specified
除了可以看到表定义以外,还可以看到表的engine(存储引擎)和charset(字符集)等信息。
\g:时的记录能够按照字段竖向排列,这样方便显示字段信息比较长的记录。(可以看看上面的代码的区别)
- 删除表
drop table tablename;
- 修改表
如果不想删除表,可以对表结构进行适当的修改以适应新的要求。
#添加列,添加字段:修改 表 表名 添加 列名 列数据类型 约束 ……
#alter table tablename add [column] column_definition [first|after col_name];
ALTER TABLE users ADD tel INT ;
#修改列的数据类型约束:修改 表 表名 修改 列名 列数据类型 约束 ……
#alter table tablename modify [column] column_definition [first|after col_name];
ALTER TABLE users MODIFY tel VARCHAR(50);
#修改列名:alter table 表名 change 旧列名 新列名 数据类型 约束
#alter table tablename change [column] old_col_name new_col_name column_definition [first|after col_name];
ALTER TABLE users CHANGE tel newtel DOUBLE;
#删除列:alter table 表名 drop 列名
#alter table tablename drop [column] col_name;
ALTER TABLE users DROP column newtel;
#(一)修改表名:rename table 表名 to 新名
RENAME TABLE users TO newusers;
#(二)alter table tablename rename [to] new_tablename;
alter table users rename newusers;
字段增加和修改语句(add/change/modify)都有一个可选项first|after column_name,这个可以用来修改字段在表中的位置,add增加的新字段默认是加在表的最后的位置,而change/modify默认都不会改变字段的位置。