文章目录
数据定义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)