MySQL数据库操作基本语法

1. MySQL数据库语言

SQL是 Structured Query Language(结构化查询语言)的缩写,最早是IBM的圣约瑟研究实验室为其关系数据库管理系统System R开发的一种查询语言,它的前身是Square语言。

由于SQL语言的标准化,越来越多的关系型数据库都支持SQL语言,他已经发展成多种平台进行交互操作的底层会话语言。MySQL数据库语言包含若干MySQL语句、常量、函数、运算符和表达式。下面是有关MySQL数据库语言的几点说明:

MySQL语句以分号结束,并且SQL处理器忽略空格、制表符和回车符。

  • 箭头(->)代表MySQL语句没有输入完成。
  • 取消MySQL语句使用( \C)。
  • Windows下MySQL语句关键字和函数名不区分大小写,但是Linux区分。
  • 使用函数时,函数名与其后的括号之间不能有空格。

2. MySQL数据库操作

2.1 创建数据库

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[ Create_Specification [ , Create_Specification]…] ;

其中 Create_Specification 的格式为:
[DEFFAULT] CHARACTER SET charset_name | [DEFAULL] COLLATE collation_name

  • db_name : 数据库名,不区分大小写。
  • IF NO EXISTS : 创建数据库前先判断,只有该数据库目前尚不存在时才执行CREATE DATABASE操作,如果数据库已经存在,就发生一个错误。
  • DEFAULL : 指定默认值。
  • CHARACTER SET : 指定数据库的字符集, charset_name为字符集名称。
  • COLLATE : 指定字符集的校对规则,collation_name 为校对规则名称。

例如:创建一个名为test的数据库:

mysql> CREATE DATABASE test;
Query OK, 1 Row Affected

2.2 查看数据库

要查看一个MySQL服务实例中有多少个数据库,可以用以下命令查看:

SHOW DATABASE [LIKE Wild] ;

其中,LIKE Wild中的 Wild 字符串可使用 SQL的 “ % “ 和 “_” 通配符。

2.3选择数据库

如果想要进入某个数据库,进行对该数据库的操作,首先就要进入数据库 ,可以使用下面的命令进行操作:

USE db_name ;

注意: 该语句也可以用来从一个数据库”跳转”到另外一个数据库。用CREATE DATABASE 创建的数据库不会自动成为当前数据库,需要使用 USE 语句指定当前数据库。
例如:

mysql>USE test;
Database Changed

2.4 删除数据库

删除数据是将数据库和数据库中的所有表删除,所以要谨慎使用:

DROP DATABASE [IF EXISTS] db_name ;

其中,IF EXISTS 子句可避免删除不存在的数据库时提醒 MySQL 错误信息。

2.5 修改数据库

命令格式:

ALTER {DATABASE | SCHEMA } [db_name] alter_specification ;

其中,alter database 用于更改数据库的全局特性,这个特性存储在数据库目录中的db.opt文件中。用户必须具有对数据库进行修改的权限,才可以使用该命令。如果语句中数据库名称忽略,则修改当前数据库。

例如: 修改数据库test的默认字符集和校对规则

mysql> ALTER DATABASE test Default Character Set Gb2312
Default Collate Gb2312_Chinese_Ci;
Query Ok, 1 row affected 

3. MySQL 数据表操作

3.1 创建数据表

命令格式:

CREATE [ TEMPORARY ] TABLE [ IF NO EXISTS ] tble_name [ ( [ column_definition ] ,… | [ index_definition] ) ] [table_option ] [ select_statemment ) ] [ table_option ] [ select_statemment ];

参数说明:

  • TEMPORARY : 创建临时表(不加 TEMPORARY 创建的表称为持久表,持久表一旦创建将一直存在,多个用户或者多个应用程序可以同时使用持久表),临时表的生命周期短,而且只能对创建它的用户可见,当断开与该数据库的连接时,MySQL会自动删除临时表。
  • IF NO EXISTS : 建表前先判断,用以避免出现表已经存在无法再新建的错误。
  • table_name : 要创建的表名。该表名必须符合标志规则,如果表名中包含MySQL保留字,则必须用单引号括起来。
  • column_definition :列定义,包括列名、数据类型,可能还有一个空值声明和一个完整性约束。
  • index_definition:表索引定义,主要定义表的索引、主键和外键等。
  • table_option : 用于描述表的选项。
  • select_statement :可以在CREATE TABLE 语句的末尾添加一个SELECT 语句,在一个表的基础上创建表。

数据库中的表是在数据库中,所以,在创建数据库表的时候,先使用语句 USE dataBaseName(数据库名),指定在哪个数据库中创建数据库表。

mysql>USE test;
mysql>CREATE TABLE student(
     id   char(20)  not null primary key,
     name char(8)   not null,
     birth  date    not null,
     sex    tinyint(1) not null default 1,
     address char(60) not null,
     phone  char(11)   not null,
     picture longblob  not null
) Engine = Innodb;

上述student表中创建了id,name,birth,sex,address,phone,picture 字段,其中指定了MySQL的存储引擎是Innodb,MySQL中有多个存储引擎,如果想指定存储引擎,就必须在创建表的时候指定。在Windows平台上默认的是Innodb存储引擎。

3.2 修改数据表

用ALTER TABLE 语句更改数据表的结构。如增加或删减列,创建或取消索引,更改原字段的类型,重新命名列或表的评注和表的类型。

命令格式:

AlTER [ IGNORE ] TABLE tbl_name alter_specifiction;

参数说明:

  • tbl_name :表名。
  • IGNORE :是MySQL相对于标准SQL的扩展。若在修改后的新表中存在重复关键字,如果没有指定 IGNORE,当重复关键字错误发生时操作失败。如果指定了IGNORE,则对于有重复关键字的行只使用第一行,其他有冲突的行被删除。
  • alter_specification :用于指定修改的内容,其格式如下:

    ADD [ COLUMN ] column_definition [ FIRST | AFTER col_name ] (新增加列)
    | ALTER [ COLUMN ] col_name {SET DEFAULT literal | DROP DEFAULT} (修改表中指定列的默认值)
    | CHANGE [ COLUMN ] old_col_name column_definition (修改列的名称)
    | MODOFY [ COLUMN ] column_definition [ FIRST | AFTER col_name ] (修改指定列的类型)
    | DROP [ COLUMN ] column_name (删除列)
    | RENAME [ TO ] new_tabl_name (重命名该表)
    | ORDER BY col_name (排序)
    | CONVERT TO CHARACTER SET charset_name [ COLLATE collation_name ]
    | [ DEFAULT ] CHARACTER SET charset_name [ COLLATE collation_name ]
    | table_options

在MySQL中,可以在一个ALTER TABLE 语句中写入多个ADD、ALTER、DROP和CHANGE 子句,中间用逗号分开。

例如:
向test数据库中的studnet 表中增加一个新列 “magor”.

mysql>ALTER TABLE student ADD COLUMN magor char(20) NULL;

将数据库test中student表的列名 name 名称修改为 home_name

mysql>ALTER TABLE student CHANGE name home_name char(20)

将数据库test中student表列birth的数据类型改为char类型

mysql>ALTER TABLE student MODIFY  birth char(10) NOT NULL;

值得注意的是,对列的任何修改,都是要指定列的数据类型。不然会报出错误,和修改不成功的。

3.3查看表结构

在创建数据表之后,可以用DESCRIBE(简写 DESC 也行) 和SHOW CREATE TABLE语句查看表结构。
DESCRIBE 的命令格式:

DESCRIBE tbl_name [ col_name ];

其中,参数colname可以是单列的名称,也可以是包含 “ % ” 和“ ”通配符的字符串。

例如查看student的表:

显示sudent表

3.4 删除数据表

删除数据表就是将数据库中已经存在的表从数据库中删除,注意,在删除之前,最好对数据做一个备份,以免造成无法挽回的后果。删除数据库表的命令格式:

DROP [ TEMPORAARY ] TABLE [ IF EXISTS ] tbl_name [, tabl_name ]…;

其中,tbl_name是要被删除的表名, IF EXISTS 短语可以避免要删除的表不存在时出现错误信息。这个命令将表的描述、表的完整性约束、索引及和表相关的权限等都全部删除。

例如:删除test 数据库的表 scoure。

mysql>USE test;
Database Changed;
mysql>DROP TABLE IF EXISTS test;

3.5 复制数据库

命令格式:

CREATE [ TEMPORARY ] TABLE [ IF NOT EXISTS ] tb1_name [ ( ) LIKE old_tabl_name ] | [ AS (select_statement ) ];

说明 : 使用LIKE关键字创建一个与old_tabel_name 表相同结构 的新表、列名、数据类型、空指定和索引也将复制,但是表的内容不会复制,因此创建的新表是一个空表。使用AS关键字可以复制表内容。但索引和完整性约束是不会复制的。

select_statement 表示一个表达式,例如,可以是一条 SELECT 语句。

例如:

复制数据库test的表student,新表的名字为 stu;

mysql>  CREATE TABLE student LIKE  student;

创建表student的一个名为stu2的拷贝,并且复制其内容;

mysql> CREATE TABLE student AS (SELECT * FROM student);
坚持原创技术分享,您的支持将鼓励我继续创作!