1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > SQL基础语句 - 数据定义DDL操作数据库和数据表的详细介绍

SQL基础语句 - 数据定义DDL操作数据库和数据表的详细介绍

时间:2019-07-16 18:18:12

相关推荐

SQL基础语句 - 数据定义DDL操作数据库和数据表的详细介绍

文章目录

数据定义DDLDDL操作数据库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 changedmysql> 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 changedmysql> 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)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。