DDL,是对数据库内部的对象进行创建,删除,修改等的操作语言。它和DML语言最大的区别是DML只是对表内部数据的操作,而不涉及到表的定义,结构的修改,更不会涉及到其它对象。
1.连接数据库:
注:1.mysql代表客户端命令,-u后面跟连接的数据库用户,-p表示需要输入密码。
2.命令的结束符用;或者\g结束
2.创建数据库:
格式:create database dbname;
Query OK执行成功
1 row affected 只影响了数据库中一行的记录。
0.13 sec 记录了操作执行的时间
如果已经存在了这个数据库,系统如图会提示。
查看系统中存在哪些数据库:show databases;
如图:
information_schema:主要存储了系统中的一些数据库对象信息。比如用户表信息、列信信息、权限信息、字符集信息、分区信息等。
cluster:存储了系统的集群信息。
mysql:存储了系统的用户权限信息。
test:系统自动创建的测试数据库,任何用户都可以使用。
选择遥操作的数据库:
USE dbname;
接下来查看改数据库的所有数据表:show tables;
3.删除数据库:(所有表数据都会被全部删除)
格式:drop database dbname;
提示操作成功后,显示"0 rows affected"。觉得疑惑,不用管它,在MySQL里,drop语句操作的结果显示都是"0 rows affected"
4.创建表
格式:create table tablename(column_name_1 column_type_1 constraints,column_name_2 column_type_2 constraints...)
注:column_name是列的名字,column_type是列的数据类型,contraints是这个列的约束条件。
例如:创建一个emp的表。
create table emp(ename varchar(10),hiredate date,sal decimal(10,2),deptno int(2));
查看emp表的定义,可以使用 DESC tablename;
虽然 desc 命令可以查看表定义,但是其输出的信息还是不够全面,为了查看更全面的表定义信息,有时就需要通过查看创建表的 SQL 语句来得到,可以使用如下命令实现:
从上面表的创建 SQL 语句中,除了可以看到表定义以外,还可以看到表的 engine (存储引擎)
和 charset(字符集)等信息。“\G”选项的含义是使得记录能够按照字段竖着排列,对于内
容比较长的记录更易于显示。
5.删除表:
drop table emp;
6.修改表:(多数情况下表结构的修改用alter table语句)
1)修改表类型,语法如下:
ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
例如:修改表emp中的ename字段定义,将varchar(10)改为varchar(20);
如图:alter table emp modify ename varchar(20);
2)增加表字段:
ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name]
例如,表 emp 上新增加字段 age,类型为 int(3):
如图:alter table emp add column age int(3);
3)删除表字段:
ALTER TABLE tablename DROP [COLUMN] col_name
例如,将字段 age 删除掉:
如图:alter table emp drop column age;
4)给字段改名:
ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]
例如,将 age 改名为 age1,同时修改字段类型为 int(4):
如图: alter table emp change age age1 int(4) ;
5)修改字段的排列顺序:
(前面介绍的的字段增加和修改语法(ADD/CNAHGE/MODIFY)中,都有一个可选项 first|after column_name,这个选项可以用来修改字段在表中的位置,默认 ADD 增加的新字段是加在表的最后位置,而 CHANGE/MODIFY 默认都不会改变字段的位置。)
例如,将新增的字段 birth date 加在 ename 之后:
如图: alter table emp add birth date after ename;
例如:修改字段age,将它放在最前面:
如图:alter table emp modify age int(3) first;
注意:CHANGE/FIRST|AFTER COLUMN 这些关键字都属于MySQL,在标准 SQL 上的扩展,在其他数据库上不一定适用。
6)表改名:
ALTER TABLE tablename RENAME [TO] new_tablename
例如,将表 emp 改名为 emp1:
如图:alter table emp rename emp1;