MySQL数据库中SQL语句的基本使用(一)

SQL语言的概述

SQL全称为:Structure Query Language(结构化查询语言),SQL语言为关系型数据库的语言,各大关系型数据库都支持SQL语言。SQL语言主要分为DDL(数据定义语言)、DML(数据操作语言)、DQL(数据查询语言)这几个部分。

DDL(数据定义语言)

DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、列、表等。DDL的关键字主要为CREATE 、ALTER、 DROP。

1.创建数据库

创建数据库使用关键字create,基本语法为

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    [(create_definition,...)]
    [table_options] [select_statement]

例如:创建一个名字为db1的数据库的语句为

create database db1;

注意:语句结尾一定加分号

2. 查询数据库的定义信息

查询数据库的定义信息关键字为show,例如查看数据库服务器上的所有数据库:

show databases;

查看之前创建的数据库db1

show create database db1;

3.修改数据库

修改数据库使用的关键字为alter,基本语法如下:

ALTER {DATABASE | SCHEMA} [db_name]
    alter_specification [, alter_specification] ...

alter_specification:
    [DEFAULT] CHARACTER SET charset_name
  | [DEFAULT] COLLATE collation_name

例如:修改数据库的编码为utf8

alter database db1 character utf8;

4.删除数据库

删除数据库的关键字为drop,基本语法如下:

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

例如:删除db1数据库

drop database db1;

5.创建数据表

创建数据表的关键字和创建数据库的关键字相同也是create。创建数据表的语法基本如下:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    [(create_definition,...)]
    [table_options] [select_statement]
或:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    [(] LIKE old_tbl_name [)];

在举例子创建数据表之前先介绍以下MySQL中常用的基本数据类型,在MySQL数据库中分为3种类型:

  1. 数值类型:
    int: 整型数据
    float: 单精度浮点类型,float(M,D)M是小数纵位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保存值。单精度浮点数精确到大约7位小数位。
    double: 双精度浮点型 ,例如double(4,2)表示最多4位,其中必须有2位小数。
  2. 时间类型
    date:日期类型,格式为:yyyy-MM-dd
    time:时间类型,格式为:hh:mm:ss
    timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss
    datetime:日期时间类型 yyyy-MM-dd hh:mm:ss
  3. 字符串类型
    text:字符串类型,TEXT[(M)] M为字符串长度
    char:固定长度字符串类型 ,CHAR[(M)]M为字符串长度 。固定长度字符串,当保存时在右侧填充空格以达到指定的长度。M表示列长度。M的范围是0到255个字符。
    varchar:可变长度字符串类型。VARCHAR[(M)],变长字符串。M 表示最大列长度。M的范围是0到65,535。(VARCHAR的最大实际长度由最长的行的大小和使用的字符集确定。最大有效长度是65,532字节)。

介绍完数据类型接下来是创建数据表的例子:

create table student (
    id int,
    name varchar(100),
    birthday date,
    age float(4,1),
    resume text
);

切换数据库的命令为:

use 数据库名称;

查看某个数据库下的全部数据表:

show tables;

查看某个数据表中的字段:

desc 数据表名;

6.修改数据表

修改数据表的关键字为alter基本语法如下:

ALTER [IGNORE] TABLE tbl_name
    alter_specification [, alter_specification] ...

alter_specification:
    ADD [COLUMN] column_definition [FIRST | AFTER col_name ]
  | ADD [COLUMN] (column_definition,...)
  | ADD INDEX [index_name] [index_type] (index_col_name,...)
  | ADD [CONSTRAINT [symbol]]
        PRIMARY KEY [index_type] (index_col_name,...)
  | ADD [CONSTRAINT [symbol]]
        UNIQUE [index_name] [index_type] (index_col_name,...)
  | ADD [FULLTEXT|SPATIAL] [index_name] (index_col_name,...)
  | ADD [CONSTRAINT [symbol]]
        FOREIGN KEY [index_name] (index_col_name,...)
        [reference_definition]
  | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
  | CHANGE [COLUMN] old_col_name column_definition
        [FIRST|AFTER col_name]
  | MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
  | DROP [COLUMN] col_name
  | DROP PRIMARY KEY
  | DROP INDEX index_name
  | DROP FOREIGN KEY fk_symbol
  | DISABLE KEYS
  | ENABLE KEYS
  | RENAME [TO] new_tbl_name
  | ORDER BY col_name
  | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
  | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]
  | DISCARD TABLESPACE
  | IMPORT TABLESPACE
  | table_options
  | partition_options
  | ADD PARTITION partition_definition
  | DROP PARTITION partition_names
  | COALESCE PARTITION number
  | REORGANIZE PARTITION partition_names INTO (partition_definitions)
  | ANALYZE PARTITION partition_names
  | CHECK PARTITION partition_names
  | OPTIMIZE PARTITION partition_names
  | REBUILD PARTITION partition_names
  | REPAIR PARTITION partition_names

从基本语法可以看出 alter table 可以改变原有数据表的结构 。例如,增加或删除列,更改列名字,修改列的类型等等。
下面举几个例子:
在student表中添加一个image列:

alter table student add image blob;

删除image列,一次只能删除一列:

alter table student drop image;

修改name字段的长度:

alter table student modify name varchar(80);

7.删除数据表

删除数据表的关键字为drop,基本语法为:

DROP [TEMPORARY] TABLE [IF EXISTS]
    tbl_name [, tbl_name] ...
    [RESTRICT | CASCADE]

例如 删除student数据表:

drop table student;

你可能感兴趣的:(mysql)