介绍
DDL(Data Definition Languages)语句:即数据库定义语句
对于数据库而言实际上每一张表都表示是一个数据库的对象,而数据库对象指的就是DDL定义的所有操作,例如:表,视图,索引,序列,约束等等,都属于对象的操作,所以表的建立就是对象的建立,而对象的操作主要分为以下三类语法
- 创建对象:CREATE 对象名称;
- 删除对象:DROP 对象名称;
- 修改对象:ALTER 对象名称;
DDL 命令
- 数据库的安装相关操作再此就不在为大家演示了,直接进入正题!
数据库相关操作
一. 创建数据库
- 语法:
create database 数据库名字
;
mysql> create database sqltest;
- 结果:
二. 查看已经存在的数据库
- 语法:
show databases
;
mysql> show databases;
结果:
可以发现,在上面的列表中除了刚刚创建的 mzc-test,sqltest,外,还有另外 4 个数据库,它们都是安装MySQL 时系统自动创建的,其各自功能如下
- information_schema:主要存储了系统中的一些数据库对象信息。比如用户表信息、列信息、权限信息、字符集信息、分区信息等。
- cluster:存储了系统的集群信息。
- mysql:存储了系统的用户权限信息。
- test:系统自动创建的测试数据库,任何用户都可以使用。
三. 选择数据库
- 语法:
use 数据库名
;
mysql> use mzc-test;
返回Database changed
代表我们已经选择 sqltest 数据库,后续所有操作将在 sqltest 数据库上执行。
- 有些人可能会问到,连接以后怎么退出。其实,不用退出来,use 数据库后,使用show databases就能查询所有数据库,如果想跳到其他数据库,用use 其他数据库名字。
四. 查看数据库中的表
- 语法:show
tables
;
mysql> show tables;
结果:
五. 删除数据库
- 语法:
drop database 数据库名称
;
mysql> drop database mzc-test;
结果:
- 注意:删除时,最好用 `` 符号把表明括起来
数据库表相关操作
一. 创建表
语法:create table 表名 {列名,数据类型,约束条件};
CREATE TABLE `Student`( `s_id` VARCHAR(20), `s_name` VARCHAR(20) NOT NULL DEFAULT '', `s_birth` VARCHAR(20) NOT NULL DEFAULT '', `s_sex` VARCHAR(10) NOT NULL DEFAULT '', PRIMARY KEY(`s_id`) );
结果
注意:表名还请遵守数据库的命名规则,这条数据后面要进行删除,所以首字母为大写。
二. 查看表定义
- 语法:
desc 表名
mysql> desc Student;
- 结果:
- 虽然 desc 命令可以查看表定义,但是其输出的信息还是不够全面,为了查看更全面的表定义信息,有时就需要通过查看创建表的 SQL 语句来得到,可以使用如下命令实现
- 语法:
show create table 表名 \G;
mysql> show create table Student \G;
结果:
- 从上面表的创建 SQL 语句中,除了可以看到表定义以外,还可以看到表的engine(存储引擎)和charset(字符集)等信息。
\G
选项的含义是使得记录能够按照字段竖着排列,对于内容比较长的记录更易于显示。
三. 删除表
- 语法:
drop table 表名
mysql> drop table Student;
- 结果:
四. 修改表 (重要)
对于已经创建好的表,尤其是已经有大量数据的表,如果需要对表做一些结构上的改变,我们可以先将表删除(drop),然后再按照新的表定义重建表。这样做没有问题,但是必然要做一些额外的工作,比如数据的重新加载。而且,如果有服务在访问表,也会对服务产生影响。因此,在大多数情况下,表结构的更改一般都使用 alter table语句,以下是一些常用的命令。
1. 修改表类型
语法:ALTER TABLE 表名 MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
例如,修改表 student 的 s_name 字段定义,将 varchar(20)改为 varchar(30)
mysql> alter table Student modify s_name varchar(30);
结果:
增加表字段
- 语法:
ALTER TABLE 表名 ADD [COLUMN] [FIRST | AFTER col_name];
- 例如,表 student 上新增加字段 s_test,类型为 int(3)
mysql> alter table student add column s_test int(3);
结果:
3. 删除表字段
- 语法:
ALTER TABLE 表名 DROP [COLUMN] col_name
- 例如,将字段 s_test 删除掉
mysql> alter table Student drop column s_test;
结果:
注意:change 和 modify 都可以修改表的定义,不同的是 change 后面需要写两次列名,不方便。但是 change 的优点是可以修改列名称,modify 则不能。
5. 修改字段排列顺序
前面介绍的的字段增加和修改语法(ADD/CNAHGE/MODIFY)中,都有一个可选项first|after column_name,这个选项可以用来修改字段在表中的位置,默认 ADD 增加的新字段是加在表的最后位置,而 CHANGE/MODIFY 默认都不会改变字段的位置。
例如,将新增的字段 s_test 加在 s_id 之后
语法:alter table 表名 add 列名 数据类型 after 列名;
mysql> alter table Student add s_test date after s_id;
结果:
- 修改已有字段 s_name,将它放在最前面
mysql> alter table Student modify s_name varchar(30) default '' first;
- 结果:
- 注意:CHANGE/FIRST|AFTER COLUMN 这些关键字都属于 MySQL 在标准 SQL 上的扩展,在其他数据库上不一定适用。
6.表名修改
- 语法:
ALTER TABLE 表名 RENAME [TO] new_tablename
- 例如,将表 Student 改名为 student
mysql> alter table Student rename student;
结果:
其他不常用命令
- 剩下的命令在这就不一一演示了,大家下去可以自行测试。
语法 | 作用 |
create view view_name as select id fROMtb_name; | 定义视图 |
alter table tb_name add columntexttext [first/after 已存在的列名 ]; | 添加一个text列 |
later table tb_name change 旧列名 新列名 数据类型; | 修改表的一个列的列名 |
alter table tb_name modify 列名 新数据类型; | 修改某列的数据类型 |
alter table tb_name rename 新表名; | 修改表的名字 |
alter table tb_name engine=innoDB/MyISAM… | 修改表的存储引擎 |
alter table tb_name add index idx_name on tb_name(id); | 创建普通索引索引idx_name基于id列 |
alter table add unique(name); | 创建唯一索引name |
alter table add primary key(列名) | 添加主键索引 |
alter table tb_name drop 列名; | 删除表的某列 |
drop index index_name on tb_name; | 删除表的某个索引 |
show index from tb_name; | 查看表的索引 |
登录数据库相关命令
一. 启动服务
语法:
mysql> net stop mysql
二. 关闭服务
语法:
mysql> net start mysql
三. 链接MySQL
- 语法:
mysql -u用户名 -p密码
;
root@243ecf24bd0a:/ mysql -uroot -p123456;
在以上命令行中,mysql 代表客户端命令,-u 后面跟连接的数据库用户,-p 表示需要输入密码。如果数据库设置正常,并输入正确的密码,将看到上面一段欢迎界面和一个 mysql>提示符。
四. 退出数据库
- 语法:
quit
mysql> quit
结果: