第一部分 创建数据库
1.1 创建并切换操作的数据库
创建数据库CREATE DATABASE 数据库名
切换: USE 数据库名
#创建数据库
MariaDB [mysql]> CREATE DATABASE study_db;
#切换数据库
MariaDB [mysql]> USE study_db;
Database changed
第二部分 表操作
2.1 创建一个书籍表格
MariaDB [study_db]> CREATE TABLE books(
-> book_id INT AUTO_INCREMENT PRIMARY KEY,
-> book_name VARCHAR(20),
-> book_author_name VARCHAR(20),
-> publication_date DATE,
-> description TEXT);
Query OK, 0 rows affected (0.02 sec)
- AUTO_INCREMENT 选项则告诉 MySQL 此列的值是自增的。如果没指定一个起始数,那么就 是从1开始。
- PRIMARY KEY 主键, 使数据能以其索引;(唯一)
2.2 查看表结构: DESCRIBE
也可以使用> DESC 表名
MariaDB [study_db]> DESCRIBE books;
+------------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------+------+-----+---------+----------------+
| book_id | int(11) | NO | PRI | NULL | auto_increment |
| book_name | varchar(20) | YES | | NULL | |
| book_author_name | varchar(20) | YES | | NULL | |
| publication_date | date | YES | | NULL | |
| description | text | YES | | NULL | |
+------------------+-------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)
- 第一行是各列的标题。
- 第二列,Type,用于展示各列的类型。
- 第三列,Null,用于说明各列能否含有 NULL 值;
- 第四列,Key,用于说明该列是否是键——索引列。
- 第五列,Default,用于说明各列的默认值。
- 最后一列,Extra,用于提供一些额外的信息。
删除表---DROP TABLE 表名; 不可逆, 切勿乱操作.
2.3 创建书类表
MariaDB [study_db]> CREATE TABLE book_classify
-> (classify_id TINYINT AUTO_INCREMENT PRIMARY KEY,
-> classify_name VARCHAR(20),
-> description BLOB);
第三部分 插入数据
3.1 格式:
INSERT INTO 表名 (列名, 列名....) VALUES (数据, 数据....)
3.2 实例
插入两条数据
MariaDB [study_db]> INSERT INTO books
-> (book_name, publication_date)
-> VALUES
-> ('跟我学MariaDB', NOW()),
-> ('NodeJS', '2016-12-02'),
-> ('MYSQL', '2016-12-01');
3.3 筛选数据
MariaDB [study_db]> SELECT * FROM books;
+---------+------------------+------------------+------------------+-------------+
| book_id | book_name | book_author_name | publication_date | description |
+---------+------------------+------------------+------------------+-------------+
| 1 | 跟我学MariaDB | NULL | 2016-12-02 | NULL |
| 2 | NodeJS | NULL | 2016-12-02 | NULL |
+---------+------------------+------------------+------------------+-------------+
2 rows in set (0.00 sec)
3.4 查看表结构的另外一种方法
MariaDB [study_db]> SHOW CREATE TABLE books \G
*************************** 1. row ***************************
Table: books
Create Table: CREATE TABLE `books` (
`book_id` int(11) NOT NULL AUTO_INCREMENT,
`book_name` varchar(20) DEFAULT NULL,
`book_author_name` varchar(20) DEFAULT NULL,
`publication_date` date DEFAULT NULL,
`description` text,
PRIMARY KEY (`book_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
*附加
查看数据存储位置
MariaDB [(none)]> SHOW VARIABLES LIKE '%dir%';
+-----------------------------------------+---------------------------------------------------------+
| Variable_name | Value |
+-----------------------------------------+---------------------------------------------------------+
| aria_sync_log_dir | NEWFILE |
| basedir | /usr/local/Cellar/mariadb/10.1.19 |
| binlog_direct_non_transactional_updates | OFF |
| character_sets_dir | /usr/local/Cellar/mariadb/10.1.19/share/mysql/charsets/ |
| datadir | /usr/local/var/mysql/ |
| ignore_db_dirs | |
| innodb_data_home_dir | |
| innodb_log_arch_dir | ./ |
| innodb_log_group_home_dir | ./ |
| innodb_max_dirty_pages_pct | 75.000000 |
| innodb_max_dirty_pages_pct_lwm | 0.001000 |
| innodb_tmpdir | |
| innodb_undo_directory | . |
| lc_messages_dir | |
| plugin_dir | /usr/local/Cellar/mariadb/10.1.19/lib/plugin/ |
| slave_load_tmpdir | /var/folders/jb/_sy6fgc57n5d25r6hkk36cqh0000gn/T/ |
| tmpdir | /var/folders/jb/_sy6fgc57n5d25r6hkk36cqh0000gn/T/ |
| wsrep_data_home_dir | /usr/local/var/mysql/ |
| wsrep_dirty_reads | OFF |
+-----------------------------------------+---------------------------------------------------------+
19 rows in set (0.00 sec)
遇到的问题:
创建表时, 只是设置了主键, 没有对任何一列设置AUTO_INCREMENT,
后期将列添加AUTO_INCREMENT,直接使用ALTER TABLE book_classify CHANGE classify_id test_id INT PRIMARY KEY AUTO_INCREMENT;
无效
**原因: **
MariaDB [study_db]> SHOW INDEX FROM book_classify \G
*************************** 1. row ***************************
Table: book_classify
Non_unique: 0
#此处有彩蛋!!!!!!!!!!!!!
Key_name: PRIMARY
Seq_in_index: 1
Column_name: classify_id
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
1 row in set (0.00 sec)
因为索引与该列关联,该列要在索引删除后才能重命名。
解决方法:
先删除索引, 再更改.
> ALTER TABLE book_classify
DROP PRIMARY KEY,
CHANGE classify_id test_id INT PRIMARY KEY AUTO_INCREMENT;
Tip:
更改AUTO_INCREMENT
的值:
ALTER TABLE book_classify AUTO_INCREMENT = 100;
更多精彩内容请关注“IT实战联盟”哦~~~
IT实战联盟.jpg
网友评论