网站建设知识
MySQL命令大全
2025-07-22 10:00  点击:0

1.mysql命令简介

mysql命令是MySQL数据库的客户端应用程序,用于解释执行SQL语句。

2.SQL的五种子语言

SQL(Structured Query Language)是结构化查询语言,也是一种高级的非过程化编程语言。SQL语句可用于增删查改数据以及管理关系型数据库,并不局限于数据查询。

SQL主要由五个子语言组成,分别是DDL、DML、DCL、TCL(TPL)和CCL,下面将一一讲解。

(1)DDL(Data Definition Language,数据定义语言)
DDL用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性约束、安全控制等。使我们有能力创建、修改和删除表格。也可以定义索引和键,规定表之间的链接,以及施加表之间的约束。DDL不需要commit,主要操作有:
CREATE - 创建
ALTER - 修改
DROP - 删除
TRUNCATE - 截断
COMMENT - 注释
RENAME - 重命名

(2)DML(Data Manipulation Language,数据操作语言)
供用户对数据库中数据的操作,包括数据的增加、删除、更新、查询等操作。
SELECT-从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据
UNION - 纵向联合
JOIN - 横向拼接
LOAD - 载入数据

(3)DCL(Data Control Language,数据控制语言)
用于对数据库,数据表的访问角色和权限的控制等。
GRANT - 授权
REVOKE - 撤销授权
DENY - 拒绝授权

(4)TCL(Transaction Control Language,事务控制语言)
又名TPL(Transaction Process Language)事务处理语言,它能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括:
BEGIN TRANSACTION - 开始事务
SAVEPOINT - 在事务中设置保存点,可以回滚到此处
ROLLBACK - 回滚
COMMIT - 提交
SET TRANSACTION – 改变事务选项

(5)CCL(Cursor Control Language,游标控制语言)
游标(cursor)是DBMS为用户开设的一个数据缓冲区,存放SQL语句的执行结果。游标控制语言对游标的操作主要有:
DECLARE CURSOR - 申明游标
OPEN CURSOR - 打开游标
FETCH INTO - 取值
UPDATE WHERE CURRENT - 更新游标所在的值
CLOSE CURSOR - 关闭游标

下面将从上面的五个子语言来陈述MySQL的常用SQL语句和MySQL的相关命令。

3.MySQL常见命令

本人使用MySQL版本是5.1.61,下面所有的命令均在本版本MySQL测试通过,如遇到问题,请留言探讨!

3.1MySQL准备篇

3.1.1连接到本机上的MySQL

首先打开shell命令终端或者命令行程序,键入命令mysql -u root -p,回车后提示你输密码。注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。
或者直接给出密码:

mysql> show databases;

3.3.4 查看当前数据库

mysql> select database();#或者mysql> status;

3.3.5连接数据库

#命令格式mysql> use [databasename]#示例mysql> use Student;

3.3.6创建数据表

命令格式:

mysql> create table [表名] ( [字段名1] [类型1] [is null] [key] [default value] [extra] [comment],...)[engine] [charset];

说明:上面的建表语句命令格式,除了表名,字段名和字段类型,其它都是可选参数,可有可无,根据实际情况来定。is null表示该字段是否允许为空,不指明,默认允许为NULL;key表示该字段是否是主键,外键,唯一键还是索引;default value表示该字段在未显示赋值时的默认值;extra表示其它的一些修饰,比如自增auto_increment;comment表示对该字段的说明注释;engine表示数据库引擎,MySQL支持的常用引擎有ISAM、MyISAM、HEAP、InnoDB和BDB(BerkeleyDB),不显示指明默认使用MyISAM;charset表示数据表数据存储编码格式,默认为latin1。

以学生表为例,演示数据表的创建。

学生表设计:

字段(Field)类型(Type)可空(Null)键(Key)默认值(Default)其他(Extra)
学号(studentNo)INT UNSIGNEDNPRINULLauto_increment
姓名(name)VARCHAR(12)NNNULL
学院(school)VARCHAR(12)NNNULL
年级(grade)VARCHAR(12)NNNULL
专业(major)VARCHAR(12)NNNULL
性别(gender)BooleanNNNULL

建表语句是:

mysql> create table if not exists student(    studentNo int unsigned not null comment '学号' auto_increment,    name varchar(12) not null comment '姓名',    school varchar(12) not null comment '学院',    grade varchar(12) not null comment '年级',    major varchar(12) not null comment '专业',    gender boolean not null comment '性别',    primary key(studentNo))engine=MyISAM default charset=utf8 auto_increment=20160001;

说明: 上面的建表语句需要注意三点。第一,可以使用if not exists来判断数据表是否存在,存在则创建,不存在则不创建。第二,设置主键时可以将primary key放在字段的后面来修饰,也可以另起一行单独来指定主键。第三,设置自增时,可以指定自增的起始值,MySQL默认是从1开始自增,比如QQ号是从10000开始的。

关于MySQL支持的数据类型,可参考MySQL 数据类型

3.3.7删除数据表

mysql> drop table [tablename];

3.3.8查看数据表结构

mysql> desc [tablename];#或者mysql> describe [tablename];

查看上面创建的student数据表的结构如下:

3.3.9查看建表语句

mysql> show create table [tablename]

3.3.10重命名数据表

mysql> rename table [tablename] to [newtablename];

3.3.11增加、删除和修改字段自增长

(1)删除字段自增长

#命令格式mysql>alter table [tablename] change [columnname] [columnname] [type];#示例,取消studentNo的自增长mysql>alter table student change studentNo studentNo int(10) unsigned;

说明:注意列名称要重复一次,即需要将列的名称写两次。

(2)增加字段自增长

#命令格式mysql>alter table [tablename] modify [columnname] [type] auto_increment;#或者与上面删除字段自增长相反mysql>alter table [tablename] change [columnname] [columnname] [type] auto_increment;#示例,添加studentNo自增长mysql>alter table student modify studentNo int(10) unsigned auto_increment;

说明:添加自增长的列必须为NOT NULL及PRIMARY KEY(UNIQUE)属性。如果不是,需添加相应定义。

(3)修改自增长起始值

#命令格式mysql> alter table [tablename] auto_increment=[value];#示例,设置studentNo从10000开始自增mysql> alter table [tablename] auto_increment=10000;

注意:设定的起始值value只能大于已有的auto_increment的整数值,小于的值无效。
show table status like 'table_name' 或者show create table [tablename]可以看到auto_increment这一列现有的起始值。

3.3.12增加、删除和修改数据表的列

(1)增加列

#命令格式mysql>alter table [tablename] add column [columnname] [columdefinition];#示例,为数据表student增加家乡hometownmysql>alter table student add column hometown varchar(32) comment '家乡';

(2)删除列

#命令格式mysql>alter table [tablename] drop column [columnname];

(3)重命名列

#命令格式mysql>alter table [tablename] change [columnname] [newcolumnname] [type];

(4)修改列属性

#命令格式mysql> alter table [tablename] modify [columnname] [newdefinition];#示例,修改home类型为varchar(64)且不允许NULLmysql> alter table student modify home varchar(64) not null;

3.3.13添加、删除和查看索引

(1)添加索引

#命令格式mysql> alter table [tablename] add index [indexname](字段名1,字段名2…);#示例,为数据表student数据列studentNo添加索引mysql> alter table student add index index_studentNo(studentNo);#或者mysql> alter table student add index(studentNo);

说明: 上面示例的第二种方法,如果不显示指明索引名称的话,默认以列名称作为索引的名称。添加索引是为了提高查询的速度。

(2)查看索引

mysql> show index from [tablename];

(3)删除索引

#命令格式mysql> alter table [tablename] drop index [indexname];#示例mysql> alter table student drop index index_studentNo;

3.4DML篇

3.4.1插入记录

#命令格式mysql> insert into [tablename](column1,column2,...) values(value1,value2,...);#示例mysql> insert into student(name,school,grade,major,gender) values('lvlv0','software','first year','software engineering',0);

3.4.2删除记录

#命令格式mysql> delete from [tablename] where [condition];#示例,删除学号为10000的学生记录mysql> delete from student where from studentNo=1000;

3.4.3查询记录

#命令格式mysql> SELECT [列名称] FROM [表名称] where [条件]

说明:一个完整的SELECT语句包含可选的几个子句。SELECT语句的定义如下: