SQL全称为:Structure Query Language(结构化查询语言),SQL语言为关系型数据库的语言,各大关系型数据库都支持SQL语言。SQL语言主要分为DDL(数据定义语言)、DML(数据操作语言)、DQL(数据查询语言)这几个部分。
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、列、表等。DDL的关键字主要为CREATE 、ALTER、 DROP。
创建数据库使用关键字create,基本语法为
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,...)]
[table_options] [select_statement]
例如:创建一个名字为db1的数据库的语句为
create database db1;
注意:语句结尾一定加分号
查询数据库的定义信息关键字为show,例如查看数据库服务器上的所有数据库:
show databases;
查看之前创建的数据库db1
show create database db1;
修改数据库使用的关键字为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;
删除数据库的关键字为drop,基本语法如下:
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
例如:删除db1数据库
drop database db1;
创建数据表的关键字和创建数据库的关键字相同也是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种类型:
介绍完数据类型接下来是创建数据表的例子:
create table student (
id int,
name varchar(100),
birthday date,
age float(4,1),
resume text
);
切换数据库的命令为:
use 数据库名称;
查看某个数据库下的全部数据表:
show tables;
查看某个数据表中的字段:
desc 数据表名;
修改数据表的关键字为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);
删除数据表的关键字为drop,基本语法为:
DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
例如 删除student数据表:
drop table student;