数据库SQL语言入门(二)

作者: Mr_WangZz | 来源:发表于2018-10-22 09:55 被阅读0次

系列文章:

数据库SQL语言入门(一)
数据库SQL语言入门(三)

DDL语句

常用的SQL语句关键字有 create、drop、alter等

1.0 显示所有数据库 show databases
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| DB_APP1            |
| DB_WeSecrects      |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)
1.1 创建数据库:create database DBname
mysql> create database test;
Query OK, 1 row affected (0.00 sec)
1.2 删除数据库:drop database DBname
mysql> drop database test;
Query OK, 0 rows affected (0.01 sec)
1.3 选择某数据库 use DBname
mysql> use test
Database changed
2.1 创建表

语法:

CREATE TABLE tablename (column_name_1 column_type_1 constraints,
column_name_2 column_type_2 constraints , ......column_name_n column_type_n
constraints)
mysql> create table newtable1 (level_id int(4), level_name varchar(6));
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| newtable1      |
+----------------+
1 row in set (0.00 sec)
2.2.1 查看表定义

语法:

DESC tablename
mysql> desc newtable1;
+------------+------------+------+-----+---------+-------+
| Field      | Type       | Null | Key | Default | Extra |
+------------+------------+------+-----+---------+-------+
| level_id   | int(4)     | YES  |     | NULL    |       |
| level_name | varchar(6) | YES  |     | NULL    |       |
+------------+------------+------+-----+---------+-------+
2.2.2 查看更全面的表定义
mysql> show create table newtable1;
+-----------+------------------------------------------------------------------------------------------------------------------------------------------+
| Table     | Create Table                                                                                                                             |
+-----------+------------------------------------------------------------------------------------------------------------------------------------------+
| newtable1 | CREATE TABLE `newtable1` (
  `level_id` int(4) DEFAULT NULL,
  `level_name` varchar(6) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-----------+------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

除了可以看到表定义,还有表的ENGINE(存储引擎)、CHARSET(字符集)等信息

2.3 删除表

语法:

DROP TABLE tablename
mysql> drop table newtable1;
Query OK, 0 rows affected (0.01 sec)
mysql> show tables;
Empty set (0.00 sec)
2.4.1 修改表类型 modify

语法:

ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]

执行:将表newtable1中的字段level_name的Type由 varchar(6) -> varchar(10)。

mysql> desc newtable1;
+------------+------------+------+-----+---------+-------+
| Field      | Type       | Null | Key | Default | Extra |
+------------+------------+------+-----+---------+-------+
| level_id   | int(4)     | YES  |     | NULL    |       |
| level_name | varchar(6) | YES  |     | NULL    |       |
+------------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> alter table newtable1 modify level_name varchar(10);
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc newtable1;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| level_id   | int(4)      | YES  |     | NULL    |       |
| level_name | varchar(10) | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
2.4.2 增加表字段 add

语法:

ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name]

执行:在表newtable1中新增字段level_score。

mysql> alter table newtable1 add column level_score int(5);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc newtable1;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| level_id    | int(4)      | YES  |     | NULL    |       |
| level_name  | varchar(10) | YES  |     | NULL    |       |
| level_score | int(5)      | YES  |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
2.4.3 删除表字段 drop

语法:

ALTER TABLE tablename DROP [COLUMN] col_name

执行:将表newtable1中新增的字段level_score删除。

mysql> alter table newtable1 drop column level_score;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc newtable1;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| level_id   | int(4)      | YES  |     | NULL    |       |
| level_name | varchar(10) | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
2.4.4 更新字段名 change

语法:

ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition [FIRST | AFTER col_name]

执行: 将表newtablw1的字段level_id更新为level_guid,并修改字段类型为int(5)。

mysql> alter table newtable1 change level_id level_guid int(5);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc newtable1;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| level_guid | int(5)      | YES  |     | NULL    |       |
| level_name | varchar(10) | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

注意:change 和 modify 都可以修改表的定义,不同的是 change 后面需要写两次列名,不方便。 但是 change 的优点是可以修改列名称,modify 则不能。

2.4.5 修改字段的排列顺序

执行:将level_score放到level_guid的后面

mysql> alter table newtable1 add level_update date after level_guid;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc newtable1;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| level_guid   | int(5)      | YES  |     | NULL    |       |
| level_update | date        | YES  |     | NULL    |       |
| level_name   | varchar(10) | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

执行 将level_update放到最前

mysql> alter table newtable1 modify level_update date first;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc newtable1;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| level_update | date        | YES  |     | NULL    |       |
| level_guid   | int(5)      | YES  |     | NULL    |       |
| level_name   | varchar(10) | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

CHANGE / FIRST|AFTER COLUMN 这些关键字都属于 MySQL 在标准 SQL 上的扩展,在 其他数据库上不一定适用。

2.3.6 表改名
ALTER TABLE tablename RENAME [TO] new_tablename

执行:

mysql> alter table newtable1 rename table1;
Query OK, 0 rows affected (0.01 sec)

mysql> desc newtable1;
ERROR 1146 (42S02): Table 'test.newtable1' doesn't exist
mysql> desc table1;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| level_update | date        | YES  |     | NULL    |       |
| level_guid   | int(5)      | YES  |     | NULL    |       |
| level_name   | varchar(10) | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

参考:

《深入浅出MySQL》

相关文章

  • 数据库SQL语言入门(一)

    系列文章 数据库SQL语言入门(二)数据库SQL语言入门(三) SQL简介 SQL 是 Structure Que...

  • 数据库SQL语言入门(三)

    系列文章: 数据库SQL语言入门(一)数据库SQL语言入门(二) DML语句 DML操作指对数据中的表记录的操作,...

  • 数据库SQL语言入门(二)

    系列文章: 数据库SQL语言入门(一)数据库SQL语言入门(三) DDL语句 常用的SQL语句关键字有 creat...

  • MySQL之SQL入门(一)

    SQL语言入门(一) 前言 各种版本的数据库中,有一种通用的语言用于管理数据库中的数据,它就是SQL,本章我们将学...

  • SQL Server 2014基础入门学习

    SQL Server 2014 基础入门学习(一) 1.引言: SQL 是用于访问和处理数据库的标准的计算机语言。...

  • BAND-P4:数据分析与SQL学习笔记

    一. 数据库与SQL语言简介简介 1.1 SQL:与数据库交互的语言 SQL的全称是结构化查询语言(Structu...

  • Oracle学习第三天

    1.PLSQL入门 Oracle数据库对SQL进行了扩展,然后加入了一些编程语言的特点,可以对SQL的执行过程进行...

  • java成长之路-MYSQL学习笔记

    一、数据库:存储、维护和管理数据的集合。DBMS DB二、sql:结构化查询语言sql分类:DDL:数据定义语言,...

  • MySQL的笔记(一)

    SQL语句的定义:简称SQL,结构化查询语言,数据库管理系统通过SQL语言来管理数据库中的数据。 SQL的分类: ...

  • 数据库SQL语言类型(DQL.DML.DDL.DCL)

    1.SQL语言 SQL(Structure Query Language)语言是数据库的核心语言。SQL是一个标准...

网友评论

    本文标题:数据库SQL语言入门(二)

    本文链接:https://www.haomeiwen.com/subject/vauwzftx.html