阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Mariadb学习总结(二):数据库及表管理

39次阅读
没有评论

共计 4776 个字符,预计需要花费 12 分钟才能阅读完成。

数据库管理

佛曰:“先有库,后有表,再有数据 …..”

Mariadb 学习总结(二):数据库及表管理

创建数据库
CREATE DATABASE [IF NOT EXISTS] db_name
    [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

例如:创建数据库,并指定默认字符集为 UTF-8

SHOW CHARACTER SET;// 查看支持的字符集
CREATE DATABASE mydb CHARACTER SET='utf8'; // 创建数据库 mydb,并指定字符集为 utf-8
查看数据库创建信息
MariaDB [(none)]> SHOW CREATE DATABASE mydb;
+----------+---------------------------------------------------------------+
| Database | Create Database                                               |
+----------+---------------------------------------------------------------+
| mydb     | CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
1 row in set (0.00 sec)
修改数据库

ALTER {DATABASE | SCHEMA} [db_name]
alter_specification …
ALTER {DATABASE | SCHEMA} db_name
UPGRADE DATA DIRECTORY NAME // 这条命令在升级数据库时,使用此命令重新编码数据库文件

alter_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_nam

修改数据库 mydb 的字符集为 utf-16:

MariaDB [(none)]> ALTER DATABASE mydb CHARACTER SET = utf16;
Query OK, 1 row affected (0.00 sec)
删除数据库

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name 删除数据库非常的。。。快!所以呢,想好再回车。

MariaDB [(none)]> DROP DATABASE IF EXISTS mydb;
Query OK, 0 rows affected (0.00 sec)
设定数据库默认字符集

只需要在 my.cnf 中加入此指令即可,在 [mysqld] 下:

character_set_server = utf8
表管理
创建表
CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...) [table_options]... [partition_options]

比较基础的就是表定义选项了,如下:

column_definition:
    data_type
      [NOT NULL | NULL] [DEFAULT default_value | (expression)]
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
      [INVISIBLE] [{WITH|WITHOUT} SYSTEM VERSIONING]
      [COMMENT 'string']
      [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
      [reference_definition]

例如:创建 User 表,有 4 个字段,分别为:ID、用户名、密码、登录时间

MariaDB [mydb]> CREATE TABLE IF NOT EXISTS user(
    -> id INT AUTO_INCREMENT PRIMARY KEY,
    -> username VARCHAR(10) NOT NULL,
    -> password VARCHAR(32) NOT NULL,
    -> logintime TIMESTAMP NOT NULL);
查看表

在 Mysql 中,可以使用 DESCRIBE table_name; 来查看表的定义,DESCRIBE 可以缩写为 DESC,如下:

MariaDB [mydb]> DESC user;
+-----------+-------------+------+-----+-------------------+-----------------------------+
| Field     | Type        | Null | Key | Default           | Extra                       |
+-----------+-------------+------+-----+-------------------+-----------------------------+
| id        | int(11)     | NO   | PRI | NULL              | auto_increment              |
| username  | varchar(10) | NO   |     | NULL              |                             |
| password  | varchar(32) | NO   |     | NULL              |                             |
| logintime | timestamp   | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-----------+-------------+------+-----+-------------------+-----------------------------+
4 rows in set (0.03 sec)

当然,我们也可以使用SHOW CREATE TABLE table_name; 来查看定义表时所使用的命令

MariaDB [mydb]> SHOW CREATE TABLE user;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                           |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user  | CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(10) NOT NULL,
  `password` varchar(32) NOT NULL,
  `logintime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf16 |  // 这里可以看到这张表使用的存储引擎和字符集
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
修改表

1. 为 user 表添加一个新的字段 registtime 来记录用户的注册时间

MariaDB [mydb]> ALTER TABLE user ADD COLUMN registtime TIMESTAMP NOT NULL AFTER logintime;

所以,添加字段的格式可以为如下:

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

其中,FIRST 与 AFTER 是指定新添加的字段在什么位置,FIRST 代表第一列,而 AFTER 指示在某一列之后

2. 为 user 表修改一个字段,把刚才新加的 registtime 字段的数据类型修改为 datatime 类型

MariaDB [mydb]> ALTER TABLE user MODIFY COLUMN registtime DATETIME;

命令格式如下:

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

3. 修改字段 registtime 为 createtime
MariaDB [mydb]> ALTER TABLE user CHANGE registtime createtime DATETIME NOT NULL;
命令格式如下,需要重新定义下新的字段:

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

4. 删除这个 createtime 字段,所有行的这个字段的数据也会被删除

MariaDB [mydb]> ALTER TABLE user DROP COLUMN createtime;

5. 修改表名 user 为 users

MariaDB [mydb]> ALTER TABLE user RENAME TO users;

6. 修改数据表的字符集

MariaDB [mydb]> ALTER TABLE users DEFAULT CHARACTER SET=utf8;

7. 修改数据表的存储引擎,有关存储引擎这方面暂时了解的不深,所以这条命令 …. 嗯,你懂得。

MariaDB [mydb]> ALTER TABLE users ENGINE=MyISAM;

会导致数据重建的 … 所以,谨慎修改

8. 修改数据表的排序字段

MariaDB [mydb]> ALTER TABLE users ORDER BY logintime;
删除一个数据表

与删除数据库一样,谨慎按下回车键

MariaDB [mydb]> DROP TABLE IF EXISTS users;

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计4776字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中