插入数据(insert)

insert语句的3个主要组成部分:

  • 所要插入数据的表的名称;
  • 表终需要使用的列的名称;
  • 需要插入到列的值。

数字型主键生成机制

数字型主键生成机制,除了随机选择数字外,还可以有以下两个常用选择:

  • 查看表中当前主键的最大值,并加1;
  • 让数据库服务器自动提供。

第1种方法在并发的时候可能会发生问题,基于第2种方案,MySQL有一种实现方式:只需简单地为主键列打开自增(auto-increment)特性。

一般情况下,应该在建表时定义此属性;

也可以使用alter table修改已经存在的表定义:

ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;

该语句实质上重新定义了 person 表的 person_id 列,现在如果再次使用 describe 命令,会看到 person_id 的“Extra”列中列出了自增特性。

+-------------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------------------+------+-----+---------+----------------+
| person_id | smallint(5) unsigned | NO | PRI | NULL | auto_increment |
| fname | varchar(20) | YES | | NULL | |
| lname | varchar(20) | YES | | NULL | |
| gender | enum('M','F') | YES | | NULL | |
| birth_date | date | YES | | NULL | |
| street | varchar(30) | YES | | NULL | |
| city | varchar(20) | YES | | NULL | |
| state | varchar(20) | YES | | NULL | |
| country | varchar(20) | YES | | NULL | |
| postal_code | varchar(20) | YES | | NULL | |
+-------------+----------------------+------+-----+---------+----------------+

insert语句

执行如下SQL语句新增一列信息:

INSERT INTO person
(person_id, fname, lname, gender, birth_date)
VALUES (null, 'Zifeiy', 'Wang', 'M', '1982-05-27');

执行如下语句进行查询:

SELECT person_id, fname, lname, birth_date
FROM person;

效果如下:

mysql> INSERT INTO person
-> (person_id, fname, lname, gender, birth_date)
-> VALUES (null, 'Zifeiy', 'Wang', 'M', '1982-05-27');
Query OK, 1 row affected (0.05 sec) mysql> SELECT person_id, fname, lname, birth_date
-> FROM person;
+-----------+--------+-------+------------+
| person_id | fname | lname | birth_date |
+-----------+--------+-------+------------+
| 1 | Zifeiy | Wang | 1982-05-27 |
+-----------+--------+-------+------------+
1 row in set (0.00 sec)

可以使用 where 子句指定想要提取的数据,例如 person_id 为1的行:

SELECT person_id, fname, lname, birth_date
FROM person
WHERE person_id=1;

或者lanme为‘Wang’的行:

SELECT person_id, fname, lname, birth_date
FROM person
WHERE lname='Wang';

Zifeiy还喜欢3种食物,因此再执行如下三条SQL:

INSERT INTO favorite_food (person_id, food) VALUES (1, 'apple');
INSERT INTO favorite_food (person_id, food) VALUES (1, 'banana');
INSERT INTO favorite_food (person_id, food) VALUES (1, 'orange');

下面获取Zifeiy的喜爱食物列表,并根据字典序进行排列(使用order by):

mysql> SELECT food FROM favorite_food WHERE person_id=1 ORDER BY food;
+--------+
| food |
+--------+
| apple |
| banana |
| orange |
+--------+
3 rows in set (0.00 sec)

为了让Zifeiy不感到孤单,可以再次执行insert语句向person表中增加Binbin Fan:

INSERT INTO person
(person_id, fname, lname, gender, birth_date,
street, city, state, country, postal_code)
VALUES (null, 'Binbin', 'Fan', 'F', '1992-02-02',
'23 Tomas St.', 'Huzhou', 'ZJ', 'CHINA', '330501');

再次查询表格:

mysql> SELECT person_id, fname, lname, birth_date FROM person;
+-----------+--------+-------+------------+
| person_id | fname | lname | birth_date |
+-----------+--------+-------+------------+
| 1 | Zifeiy | Wang | 1982-05-27 |
| 2 | Binbin | Fan | 1992-02-02 |
+-----------+--------+-------+------------+
2 rows in set (0.00 sec)

更新数据

UPDATE person
SET street = '123 Haha St.',
city = 'Hangzhou',
state = 'JS',
country = 'CHINA',
postal_code = '320101'
WHERE person_id = 1;

删除数据

DELETE FROM person WHERE person_id = 2;

MySQL操作与修改表的更多相关文章

  1. MySQL中的修改表操作

    一.增加表的列 语法:alter table 表名 add(           增加列定义          ); 实例: #增加列 alter table text add( text_num ) ...

  2. MySQL操作数据库和表的常用命令新手教程

    1.查看数据库 获取服务器上的数据库列表通常很有用.执行show databases;命令就可以搞定. mysql> show databases; 2.创建数据库 mysql> crea ...

  3. 查看mysql字符集及修改表结构--表字符集,字段字符集

    MySQL 乱码的根源是的 MySQL 字符集设置不当的问题,本文汇总了有关查看 MySQL 字符集的命令.包括查看 MySQL 数据库服务器字符集.查看 MySQL 数据库字符集,以及数据表和字段的 ...

  4. sql操作之修改表结构

    修改表的语法=========================增加列[add 列名]=========================①alter table 表名 add 列名 列类型 列参数[加的 ...

  5. 查看mysql字符集及修改表结构

    MySQL 乱码的根源是的 MySQL 字符集设置不当的问题,本文汇总了有关查看 MySQL 字符集的命令.包括查看 MySQL 数据库服务器字符集.查看 MySQL 数据库字符集,以及数据表和字段的 ...

  6. MySQL查看和修改表的存储引擎(转载+加点东西)

    1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎 两种方法: a.show table status from YOUR_DB_NAME where name='YOU ...

  7. MySQL查看和修改表的存储引擎

    1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎 两种方法: a.show table status from db_name where name='table_na ...

  8. mysql中如何修改表的名字?修改表名?

    需求描述: 今天在进行mysql表的历史数据迁移,需要将某张表进行备份,修改表的名字,在此记录下操作过程. 操作过程: mysql> create table ts01 like ti_o_sm ...

  9. MySQL使用alter修改表的结构

    SQL语句     DLL        数据定义语言         create,drop     DML     数据操纵语言         insert,delete,select,upda ...

随机推荐

  1. dubbo + dubbo-admin 入门级demo

    整个示例中,除了dubbo的服务提供者和消费者是在windows里跑着,其他的所有程序都是在centos中. 1.准备环境 windows中jdk和java ide下载. 在centos中,创建软件安 ...

  2. 【Ansible】 基于SSH的远程管理工具

    [Ansible] 参考文档:[http://www.ansible.com.cn/docs/intro.html] 和ansible类似的工具还有saltstack,puppet,sshpass等, ...

  3. kvm之六:配置kvm虚拟机通过VNC访问

    1.网络安装的snale2没有添加VNC访问方式,配置如下 [root@kvm ~ ::]#virsh edit snale2 插入如下配置: <graphics type=' autoport ...

  4. 2017-2018-1 Java演绎法 小组会议及交互汇总

    第一周会议 今天我们小组开展了第一次团队例会活动.我们小组将<构建之法>分为了六个部分并由六位成员先分别学习并向组长上传学习收获,这次的活动内容便是 交流前两周小组成员学习阅读<构建 ...

  5. 学号:201621123032 《Java程序设计》第12周学习总结

    1:本周学习总结 1.1:以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2:面向系统综合设计-图书馆管理系统或购物车 2.1: 简述如何使用流与文件改造你的系统.文件中数据的格式如何? ...

  6. Node入门教程(1)目录

    aicoder.com 全栈实习之简明 Node 入门文档 aicoder.com 线下实习: 不 8000 就业,不还实习费. 如果需要转载本文档,请联系老马,Q: 515154084 JS基础教程 ...

  7. 调用WCF时,调用已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定。

    解决方案: 其实只要在客户端配置文件中加上如下紫色粗体属性( maxReceivedMessageSize): <?xml version="1.0" encoding=&q ...

  8. Python struct模块

    有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体. struct模块中最重 ...

  9. lamp环境搭建经验总结

    环境:centos6.4,13个源码包:参考教程高罗峰细说php思路:1.首先确定gcc,g++的安装,因为这是c语言的编译工具,没有它,源码不可能安装,redhat的yum需要配置,分为本地源和网络 ...

  10. Windows 的Apache支持SSI配置

    配置SSI什么是shtml? 使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为"服务器端嵌入"或 ...