1. 指定数据库

mysql> use portal;

2. 数据库表基本操作

2.1 查看数据表

mysql> show tables;
+------------------+
| Tables_in_portal |
+------------------+
| product |
+------------------+

3. 创建表

3.1 创建表语法

CREATE TABLE table_name (column_name column_type);
mysql> CREATE TABLE product
-> (
-> product_id INT,
-> product_name VARCHAR(50)
-> );

3.2 设置主键

  单字段主键:

column_name column_type PRIMARY KEY
mysql> CREATE TABLE product
-> (
-> product_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
-> product_name VARCHAR(50)
-> );

  多字段主键:

PRIMARY KEY (column_name, ... , column_name)
mysql> CREATE TABLE product
-> (
-> product_id INT,
-> category_id INT,
-> product_name VARCHAR(50),
-> PRIMARY KEY (product_id, category_id)
-> );

3.3 设置外键

CONSTRAINT constraint_name FOREIGN KEY(column_name, ... , column_name) REFERENCES table_name(column_name, ... ,column_name)
mysql> CREATE TABLE category
-> (
-> category_id INT PRIMARY KEY,
-> category_name VARCHAR(50)
-> );
mysql> CREATE TABLE product
-> (
-> product_id INT PRIMARY KEY,
-> product_name VARCHAR(50),
-> category_id INT,
-> CONSTRAINT FK_product_category FOREIGN KEY(category_id) REFERENCES category(category_id)
-> );

3.4 设置非空约束

column_name column_type NOT NULL
mysql> CREATE TABLE product
-> (
-> product_id INT PRIMARY KEY,
-> product_name VARCHAR(50) NOT NULL
-> );

3.5 设置唯一约束

column_name column_type unique
mysql> CREATE TABLE product
-> (
-> product_id INT PRIMARY KEY,
-> product_name VARCHAR(50) UNIQUE
-> );

3.6 设置字段值自动增加

column_name column_type AUTO_INCREMENT
mysql> CREATE TABLE product
-> (
-> product_id INT AUTO_INCREMENT PRIMARY KEY,
-> product_name VARCHAR(50)
-> );

  MySQL规定自增长列必须为主键。

  AUTO_INCREMENT默认从1开始,每次加1。

  创建表时指定AUTO_INCREMENT自增值的初始值(即起始值):

mysql> CREATE TABLE product
-> (
-> product_id INT AUTO_INCREMENT PRIMARY KEY,
-> product_name VARCHAR(50)
-> ) AUTO_INCREMENT = 100;

  通过 ALTER TABLE 修改初始值(但是要大于表中的 AUTO_INCREMENT 自增值,否则设置无效):

mysql> ALTER TABLE product AUTO_INCREMENT = 100;

  查询指定表的AUTO_INCREMENT值:

mysql> SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE table_name = "product";

  查看AUTO_INCREMENT相关的变量设置:

mysql> SHOW VARIABLES LIKE 'auto_increment%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
+--------------------------+-------+

  其中,auto_increment_increment:自增量每次增加的值,

       auto_increment_offset:加载数值时的偏移值的个位值。

  修改设置auto_increment_increment:

mysql> SET @@auto_increment_increment = 10;
mysql> SHOW VARIABLES LIKE 'auto_increment%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 10 |
| auto_increment_offset | 1 |
+--------------------------+-------+
mysql> INSERT INTO product(product_name) VALUES ('商品01'),('商品02'),('商品03'),('商品04'),('商品05');
mysql> SELECT product_id,product_name FROM product;
+------------+--------------+
| product_id | product_name |
+------------+--------------+
| 1 | 商品01 |
| 11 | 商品02 |
| 21 | 商品03 |
| 31 | 商品04 |
| 41 | 商品05 |
+------------+--------------+

  修改设置auto_increment_increment及auto_increment_offset:

mysql> SET @@auto_increment_increment = 10;
mysql> SET @@auto_increment_offset = 5;
mysql> SHOW VARIABLES LIKE 'auto_increment%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 10 |
| auto_increment_offset | 5 |
+--------------------------+-------+
mysql> INSERT INTO product(product_name) VALUES ('商品01'),('商品02'),('商品03'),('商品04'),('商品05');
mysql> SELECT product_id,product_name FROM product;
+------------+--------------+
| product_id | product_name |
+------------+--------------+
| 5 | 商品01 |
| 15 | 商品02 |
| 25 | 商品03 |
| 35 | 商品04 |
| 45 | 商品05 |
+------------+--------------+

  当auto_increment_offset设置的值大于auto_increment_increment值时,auto_increment_offset设置无效。

3.7 设置字段默认值

column_name column_type DEFAULT default_value
mysql> CREATE TABLE product
-> (
-> product_id INT PRIMARY KEY AUTO_INCREMENT,
-> product_name VARCHAR(50),
-> unit_price FLOAT DEFAULT 0
-> );

4. 查看表

4.1 查看表基本结构语句 DESC

DESC table_name
mysql> DESC product;
+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| product_id | int(11) | NO | PRI | NULL | auto_increment |
| product_name | varchar(50) | YES | | NULL | |
| unit_price | float | YES | | 0 | |
+-------------+-------------+------+-----+---------+----------------+
3 rows in set (0.02 sec)

4.2 查看表详细结构语句SHOW CREATE TABLE

SHOW CREATE TABLE table_name;
mysql> SHOW CREATE TABLE product;

5. 修改表

5.1 修改表名

ALTER TABLE old_table_name RENAME [TO] new_table_name;
mysql> ALTER TABLE product RENAME product1;

5.2 修改字段数据类型

ALTER TABLE table_name MODIFY column_name column_type FIRST | AFTER column_name
mysql> ALTER TABLE product MODIFY product_name VARCHAR(100);
mysql> ALTER TABLE product MODIFY product_name VARCHAR(100) NOT NULL;
mysql> ALTER TABLE product MODIFY product_name VARCHAR(100) FIRST;
mysql> ALTER TABLE product MODIFY product_name VARCHAR(100) AFTER id;

5.3 修改字段名

ALTER TABLE table_name CHANGE old_column_name new_column_name new_column_type
mysql> ALTER TABLE product CHANGE product_name Name VARCHAR(50);

5.4 增加字段

ALTER TABLE table_name ADD column_name column_type [CONSTRAINT] [FIRST | AFTER column_name];
mysql> ALTER TABLE product ADD unit_price FLOAT NOT NULL;
mysql> ALTER TABLE product ADD ID INT NOT NULL FIRST;
mysql> ALTER TABLE product ADD product_no VARCHAR(50) NOT NULL AFTER product_id;

5.5 删除字段

ALTER TABLE table_name DROP column_name;
mysql> ALTER TABLE product DROP ID;

5.6 修改字段排列位置

ALTER TABLE table_name MODIFY column_name column_type FIRST | AFTER colunm_name;
mysql> ALTER TABLE product MODIFY product_no VARCHAR(50) FIRST;
mysql> ALTER TABLE product MODIFY product_no VARCHAR(50) AFTER product_id;

5.7 修改表存储引擎

ALTER TABLE table_name ENGINE=engine_name;
mysql> ALTER TABLE product ENGINE = MyISAM;
mysql> SHOW CREATE TABLE product\G;

5.8 删除表的外键约束

ALTER TABLE table_name DROP FOREIGN KEY constraint_name;
mysql> CREATE TABLE category
-> (
-> id INT UNSIGNED NOT NULL AUTO_INCREMENT,
-> category_name VARCHAR(100) NOT NULL,
-> PRIMARY KEY(id)
-> );
mysql> CREATE TABLE product
-> (
-> id INT UNSIGNED NOT NULL AUTO_INCREMENT,
-> category_id INT UNSIGNED NOT NULL,
-> product_name VARCHAR(100) NOT NULL,
-> PRIMARY KEY(id),
-> CONSTRAINT fk_product_category FOREIGN KEY (category_id) REFERENCES category(id)
-> );
mysql> ALTER TABLE product DROP FOREIGN KEY fk_product_category;

6. 删除表

DROP TABLE [IF EXISTS] table_name, table_name, table_name, ...;
mysql> DROP TABLE product;

MySQL系列:数据表基本操作(2)的更多相关文章

  1. MySQL:数据表基本操作

    数据表基本操作 注意点: 1.数据表中已经有数据时,轻易修改数据类型,有可能因为不同的数据类型的数据在机器 中存储的方式及长度并不相同,修改数据类型可能会影响到数据表中已有的数据类型. 2.  数据表 ...

  2. mysql学习——数据表基本操作1

    选择数据库 创建数据表 包括字段名和数据类型两部分 查看数据表 使用主键约束 主键又称主码,能够唯一的表示表中的一条记录,分为单字段主键与多字段联合主键 单字段主键 定义主键的两种方式: 1.在最后指 ...

  3. mysql(三) 数据表的基本操作操作

    mysql(三) 数据表的基本操作操作 创建表,曾删改查,主键,外键,基本数据类型. 1. 创建表 create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGIN ...

  4. MySQL为数据表的指定字段插入数据

    username not null 没有默认值/有默认值   insert不插入username字段 均不报错 2014年07月23日21:05    百科369 MySQL为数据表的指定字段插入数据 ...

  5. MySQL 删除数据表

    MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TA ...

  6. MySQL 创建数据表

    MySQL 创建数据表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: CREATE TABLE table_name (col ...

  7. MySQL查询数据表中数据记录(包括多表查询)

    MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...

  8. MySQL修改数据表存储引擎的3种方法介绍

    这篇文章主要介绍了MySQL修改数据表存储引擎的3种方法介绍,分别是直接修改.导出导入.创建插入3种方法, 可以参考下   MySQL作为最常用的数据库,经常遇到各种各样的问题.今天要说的就是表存储引 ...

  9. MySQL对数据表进行分组查询

    MySQL对数据表进行分组查询(GROUP BY) GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组.字段中值相等的为一组.基本的语法格式如下: GROUP BY 属性名 [HAVI ...

  10. MySQL对数据表进行分组查询(GROUP BY)

    MySQL对数据表进行分组查询(GROUP BY) GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组.字段中值相等的为一组.基本的语法格式如下: GROUP BY 属性名 [HAVI ...

随机推荐

  1. day26 Python __getattribute__

    __getattr__#不存在的属性访问,触发__getattr__ class Foo: def __init__(self,x): self.x=x def __getattr__(self, i ...

  2. Java-Method类常用方法详解

    一.Method类的定义Method类位于 java.lang.reflect 包中,主要用于在程序运行状态中,动态地获取方法信息二.Method类的常用方法  1.getAnnotatedRetur ...

  3. Luogu P1967 货车运输

    qwq 这题是知道了正解做法才写的.. 求每两点间最小权值最大的路径,本来我以为要每个点都跑一遍dij(?),后来意识到生成树好像是用来找这个的( ´▽`) 然后我问dtxdalao对不对,他说“我记 ...

  4. [TPYBoard - Micropython之会python就能做硬件 6] 学习使用OLED显示屏

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi            欢迎加入讨论群 64770604 一.实验器材 1.TPYBoard板子一块 2.数据线一条 ...

  5. 理解MySql的锁&事务隔离级别

    这几篇文章是从网上(http://www.hollischuang.com)看到的一系列文章,也是重温了一下数据库的相关知识.下面是对这些文章的一些前后行文逻辑的说明: 我们知道,在DBMS的多个事业 ...

  6. JasperReport制作行内容合并的表格

    效果图: 实现思路一: 交叉表 另一个思路: 普通表格 缺点:无法实现内容 垂直居中显示 准备工作 一.数据准备 DROP TABLE IF EXISTS `address_item_sex_valu ...

  7. 这20个Docker Command,有几个是你会的?

    在这之前呢,也写过两篇关于Docker基础入门类的文章 Docker容器技术入门(一) Docker容器技术入门(二) 很多人都感觉这文章这么简单.这么基础,可是别忘记了"万丈高楼平地起&q ...

  8. HashMap是如何工作的

    目录 1 HashMap在JAVA中的怎么工作的? 2 什么是哈希? 3 HashMap 中的 Node 类 4 键值对在 HashMap 中是如何存储的 5 哈希碰撞及其处理 6 HashMap 的 ...

  9. Python网络爬虫实战:根据天猫胸罩销售数据分析中国女性胸部大小分布

    本文实现一个非常有趣的项目,这个项目是关于胸罩销售数据分析的.是网络爬虫和数据分析的综合应用项目.本项目会从天猫抓取胸罩销售数据,并将这些数据保存到SQLite数据库中,然后对数据进行清洗,最后通过S ...

  10. Java面试MySQL的一些问题

    MySQL InnoDB存储的文件结构 索引树是如何维护的? 数据库自增主键可能的问题