mysql-创建和操作表
一、建表
为了用程序创建表,我们可以使用SQL的create table 语句。如下:
每个列之间用逗号隔开,每列的定义以列名开始,后跟列的数据类型。
表的主键可以在创建表时用primary key关键字指定。
这张表使用InnoDB引擎创建。

1、·使用null值:允许null值的列也允许在插入时不给出该列的值。不允许null值的列不接受该列没有值的行。在插入或更新行时,该列必须有值
·2、主键primary key:主键必须唯一,即表中的每个行必须具有唯一的主键值,如果主键使用单个列,则它的值必须唯一。如果使用多个列,则这些列的组合字必须唯一。
·3、使用AUTO_INCREMENT:它告诉MYSQL,本列每当增加一行时自动增量,每次执行一个insert操作时,mysql自动对该列增量,给该列赋予下一个可用的值。这样给每行分配一个唯一的id,从而可以用作主键值。每个表只允许一个AUTO_INCREMENT列,而且必须被索引。我们还可以使用如下语句获得最后一个auto_increment的值:
select last_insert_id();
此语句返回当最后操作某张表时,如果该张表有AUTO_INCREMENT类型字段当主键,它的最后一个Auto_increment的值,然后你可以将它用作后续的mysql语句。
·4、指定默认值:如果插入行时没有给出值,mysql允许指定此时使用的默认值,默认值用default关键字指定。如下:

使用default,如果quantity没有插入值,默认为1;
5、引擎类型:mysql具备多个引擎,每种引擎具备不同的功能和特性,为不同的任务选择正确的引擎能获得良好的功能和灵活性。
在建表最后一般加上engine=xxx,如果不加的话,默认为MyISAM引擎。常用的有:
a、InnoDB:是一个可靠地事务处理引擎,但是它不支持全文检索。
b、MEMORY:在功能上等同于MyISAM,但是由于数据库在内存中,速度很快,适用于临时表
c、MyISAM:性能极高的引擎,支持全文搜索,不支持事务处理。
二、更新表
为了更新表定义,可以使用ALTER TABLE语句,但是当该表有数据后,最好就不要修改该表了。
1、增加列:alter table vendors add vend_phone char(20);
2、删除列:alter table vendors drop column vend_phone;
3、定义外键:
alter table orderitems add constraint fk_orderitems_orders foreign key(order_num) references orders(order_num);
三、删除表、重命名表
使用drop table语句
drop table customers2;
执行这条语句将永远删除该表
使用rename table 语句可以对表进行改名:
rename table customers2 to customers;
也可以使用如下对多个表进行更改:
rename table back_customers to customers,back_vendors to vendors, back_products to products;
mysql-创建和操作表的更多相关文章
- MySQL数据库(1)- 数据库概述、MySQL的安装与配置、初始SQL语句、MySQL创建用户和授权
一.数据库概述 1.什么是数据(Data) 描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字.图片,图像.声音.语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机. 在计 ...
- oracle与mysql创建表时的区别
oracle创建表时,不支持在建表时同时增加字段注释.故采用以下方式: #创建表CREATE TABLE predict_data as ( id integer ), mid ), time dat ...
- Mysql创建用户并授权
运行命令行 mysql -uroot -p 登录mysql use mysql; 创建用户:create user 'test123'@'localhost' identified by '12345 ...
- mysql 创建数据库和表格
mysql创建utf-8字符集数据库 CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; creat ...
- Mysql创建新用户后无法登录,提示 Access denied for user 'username'@'localhost' (using password: YES)
MySQL创建新用户后无法登录,提示 Access denied for user 'username'@'localhost' (using password: YES) ,多半是因为存在匿名用户, ...
- mysql创建数据库
mysql创建数据库 创建utf8编码的数据库 CREATE DATABASE IF NOT EXISTS my_db default character set utf8 COLLATE utf8_ ...
- mysql创建数据库指定编码uft8
mysql创建数据库指定编码uft8 CREATE DATABASE IF NOT EXISTS my_db default character set utf8 COLLATE utf8_gener ...
- MySQL创建索引语法
1.介绍: 所有mysql索引列类型都可以被索引,对来相关类使用索引可以提高select查询性能,根据mysql索引数,可以是最大索引与最小索引,每种存储引擎对每个表的至少支持16的索引.总索引长度为 ...
- MySQL创建一个用户,指定一个数据库 授权
Mysql 创建一个用户 hail,密码 hail,指定一个数据库 haildb 给 hail mysql -u root -ppassworduse mysql;insert into user(h ...
- mysql创建用户
mysql创建用户 创建用于localhost连接的用户并指定密码 mysql> create user 'pcom'@'localhost' identified by 'aaa7B2249' ...
随机推荐
- 《一个民企CEO的职场阳谋》–读书总结(上)
职场是一个战场,很多人几十年在这里战斗. 职场是一个熔炉,很多人大半生在这里修炼. 如果在办公室里得不到快乐,生活就不会快乐. 如果公司里头感觉不到幸福,人生就不会幸福.(以上四句来自老刘的博客) & ...
- 【转载】How to Reset USB Device in Linux
USB devices are anywhere nowadays, even many embedded devices replace the traditional serial devices ...
- 史上最全: svn与git的对照(二):svn与git的相关概念
如图1是svnserver端数据的文件夹结构 以下是gitserver端的文件夹结构 纵观svn和git服务端的文件夹结构我们非常easy发现 1.有些目录还是蛮像的.甚至是一样的比方说svn中的co ...
- JAVA设计模式之【适配器模式】
适配器模式 当不需要实现一个接口所提供的所有方法时,可先设计一个抽象类该接口,并为接口每个方法提供一个默认实现 该抽象类的子类可以选择性地覆盖父类的某些方法来实现需求 角色 适配者接口 通常在接口中声 ...
- JAVA设计模式之【外观模式】
通过引入一个外观角色来简化客户端与子系统之间的交互. 顾客无需直接和茶叶.茶具.开水等交互,整个泡茶过程由服务员来完成,顾客只需与服务员交互即可. 通过引入一个外观角色可以降低原有系统的复杂度,同时降 ...
- Linux进程精讲
进程相关概念 程序和进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu.内存.打开的文件.设备.锁....) 进程,是一个抽象的概念,与操作系统原理联系紧密.进程是活跃的程序,占用系 ...
- git相关整理
title: git相关整理 toc: false date: 2018-09-24 20:42:55 git merge 和 git merge --no--ff有什么区别? git merge命令 ...
- 解决django.db.utils.InternalError: (1049, "Unknown database 'exam_db'")
先检查seeting数据库配置DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'eaxm_db', ' ...
- Spark SQL概念学习系列之Spark SQL概述
很多人一个误区,Spark SQL重点不是在SQL啊,而是在结构化数据处理! Spark SQL结构化数据处理 概要: 01 Spark SQL概述 02 Spark SQL基本原理 03 Spark ...
- 浏览器输入一个url的过程,以及加载完html文件和js文件的标志
简单理解: 当在浏览器地址栏输入一url时,浏览器会做以下几个步骤: 1.将url转化为ip地址,也就是DNS解析,(先找本地host文件中是否有对应的ip地址,如果有就直接用,没有的话,就按域名的二 ...