SQL基础语句 - 数据定义DDL操作数据库和数据表的详细介绍
Posted 学全栈的灌汤包
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL基础语句 - 数据定义DDL操作数据库和数据表的详细介绍相关的知识,希望对你有一定的参考价值。
文章目录
数据定义DDL
DDL操作数据库
查询:
查询数据库:
SHOW DATABASES;
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
创建:
创建数据库:
CREATE DATABASE 数据库名称;
mysql> CREATE DATABASE db1;
Query OK, 1 row affected (0.01 sec)
创建数据库(判断,如果不存在则创建):
CREATE DATABASE IF NOT EXISTS 数据库名称;
mysql> CREATE DATABASE IF NOT EXISTS db1;
Query OK, 1 row affected, 1 warning (0.00 sec)
删除:
删除数据库:
DROP DATABASE 数据库名称;
mysql> DROP DATABASE db1;
Query OK, 0 rows affected (0.02 sec)
删除数据库(判断,如果存在则删除):
DROP DATABASE IF EXISTS 数据库名称;
mysql> DROP DATABASE IF EXISTS db1;
Query OK, 0 rows affected, 1 warning (0.01 sec)
使用数据库:
使用某个数据库:
USE 数据库名称;
mysql> USE db1;
Database changed
查看当前使用的数据库:
SELECT DATABASE();
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| db1 |
+------------+
1 row in set (0.00 sec)
DDL操作数据表
查询表(Retrieve):
查询当前数据库下所有表的名称:
SHOW TABLES;
例如下面查看mysql数据库中的数据表
mysql> USE mysql;
Database changed
mysql> SHOW TABLES;
+------------------------------------------------------+
| Tables_in_mysql |
+------------------------------------------------------+
| columns_priv |
| component |
| db |
| default_roles |
| engine_cost |
| func |
| general_log |
| global_grants |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| password_history |
| plugin |
| procs_priv |
| proxies_priv |
| replication_asynchronous_connection_failover |
| replication_asynchronous_connection_failover_managed |
| replication_group_configuration_version |
| replication_group_member_actions |
| role_edges |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+------------------------------------------------------+
38 rows in set (0.00 sec)
查询表的具体结构:
DESC 表名称;
例如下面查询的是mysql数据库中的func数据表
mysql> DESC func;
+-------+------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------------------+------+-----+---------+-------+
| name | char(64) | NO | PRI | | |
| ret | tinyint | NO | | 0 | |
| dl | char(128) | NO | | | |
| type | enum('function','aggregate') | NO | | NULL | |
+-------+------------------------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
创建表(Create):
注意:每一行字段用逗号隔开, 最后一行末尾,不能加逗号
创建表语法格式如下:
CREATE TABLE 表名 (
字段名1 数据类型1,
字段名2 数据类型2,
…,
字段名n 数据类型n
);
在我们自己创建的数据库db1中进行表的创建演示:
mysql> USE db1;
Database changed
mysql> CREATE TABLE tb_user(
-> id int,
-> username varchar(20),
-> password varchar(32)
-> );
Query OK, 0 rows affected (0.01 sec)
创建表案例练习:
设计一张学生表,请注重数据类型、长度的合理性
- 编号
- 姓名,姓名最长不超过10个汉字
- 性别,因为取值只有两种可能,因此最多一个汉字
- 生日,取值为年月日
- 入学成绩,小数点后保留两位
- 邮件地址,最大长度不超过 64
- 家庭联系电话,不一定是手机号码,可能会出现 - 等字符
- 学生状态(用数字表示,正常、休学、毕业…)
mysql> CREATE TABLE student(
-> id int,
-> name varchar(10),
-> sex char(1),
-> birthday date,
-> score double(5,2),
-> email varchar(64),
-> tel varchar(15),
-> status tinyint
-> );
Query OK, 0 rows affected, 1 warning (0.02 sec)
mysql> DESC student;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| score | double(5,2) | YES | | NULL | |
| email | varchar(64) | YES | | NULL | |
| tel | varchar(15) | YES | | NULL | |
| status | tinyint | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
8 rows in set (0.01 sec)
修改表(Update):
修改表名:
ALTER TABLE 表名 RENAME TO 新的表名;
例如修改tb_user表的名字
mysql> ALTER TABLE tb_user RENAME TO user;
Query OK, 0 rows affected (0.01 sec)
添加一列:
ALTER TABLE 表名 ADD 列名 数据类型;
mysql> ALTER TABLE user ADD address varchar(50);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
修改数据类型:
ALTER TABLE 表名 MODIFY 列名 新数据类型;
mysql> ALTER TABLE user MODIFY address char(50);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
修改列名和数据类型:
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
mysql> ALTER TABLE user CHANGE address addr varchar(30);
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
删除列:
ALTER TABLE 表名 DROP 列名;
mysql> ALTER TABLE user DROP addr;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
删除(Delete):
删除表: DROP TABLE 表名;
mysql> DROP TABLE user;
Query OK, 0 rows affected (0.01 sec)
删除表(判断是否存在, 存在则删除): DROP TABLE IF EXISTS 表名;
mysql> DROP TABLE IF EXISTS user;
Query OK, 0 rows affected, 1 warning (0.01 sec)
以上是关于SQL基础语句 - 数据定义DDL操作数据库和数据表的详细介绍的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 基础 SQL -- DDL 数据定义语言(数据库的操作数据库表的操作:DROPTRUNCATE RENAMEALTER 附数据类型说明 )