插入数据
用INSERT语句把数据插入到行中。
INSERT语句一般都不会产生输出。
INSERT INTO tables VALUES ('1001','LINING','18');
如果表的定义允许,可以在INSERT操作中省略某些列。省略的列必须满足以下某个条件:
- 该列定义为允许null的值
- 在表定义中给出默认值,如果不给出值,将使用默认值
由于INSERT操作可能非常耗时,而且它可能降低等待处理的SELECT语句的性能。如果检索数据是最重要的,则可以通过在INSERT和INTO之间添加关键字LOW_PRIORITY,指示MySQL降低INSERT语句的优先级。
如果想插入多行数据到表中,可以使用多条INSERT语句,一次提交它们,每条语句用一个分号结束。
如果想将一条SELECT语句的结果插入表中,可以使用INSERT SELECT语句,它不要求列名必须匹配,它使用的是列的位置。
INSERT INTO tables(id, name,addr) SELECT id nick_name,address FROM new_table;
更新数据
为了更新(修改)表中的数据,可采用UPDATE语句更新表中的特定行和表中所有的行。
在表中使用UPDATE时要注意,如果省略了WHERE子句,就会更新表中所有行。
UPDATE tables
SET name = 'LINING',addr='home'
WHERE id='1001'
如果使用UPDATE语句更新多行,并且在更新这些行中的一行或多行时出现了错误,则整个UPDATE操作被取消,错误发生前更新的所有行被恢复到它们原来的值。如果需要继续更新,则可以使用关键字IGNORE:
UPDATE INGRORE customer
SET name = 'zhangsan'
WHERE id='1002';
也可以使用UPDATE语句删除某列的值,通过将该列的值设为NULL值:
UPDATE tables
SET addr=null
WHERE id='1005';
删除数据
为了从表中删除数据,可以使用DELETE语句。
在使用DELETE语句时如果没有WHERE子句则会删除表中所有的行。
DELETE不需要列名或通配符,DELETE删除整行而不是删除列,如果要删除指定的列,使用UPDATE语句
DELETE语句从表中删除行,甚至是删除表中所有的行,但是DELETE不删除表本身。
创建表
一般创建表的方式有两种:
- 使用具有交互式创建和管理表的工具
- 表也可以直接用MySQL语句操作
- 其实在使用交互式工具时,实际上使用的是MySQL语句。
在创建新表时,指定的表名必须不存在,否则将出错。如果仅想在一个表不存在时创建它,应该在表名前给出IF NOT EXISTS,它只是查看表名是否存在,并且仅在表名不存在时创建它。
使用NULL值
NULL值就是没有值或缺值,允许NULL值的列也允许在插入行时不给出该列的值。
CREATE TABLE orders
(order_id int NOT NULL AUTO_INCREATE,
order_name int NOT NULL,
order_num varchar )
ENGINE=InnoDB;
NULL值为默认设置,如果不指定NOT NULL,则认为指定的是NULL。主键值只能使用不允许NULL值的列,允许NULL值的列不能作为唯一标识。
引擎类型
MySQL具有多种引擎,这些引擎都隐藏在MySQL服务器内.
-
INNODB 是一个可靠的事物处理引擎,它不支持全文本搜索;
-
MEMORY在功能等同于MyISAM,但由于数据存储在内存中,速度很快
-
MyISAM是一个性能极高的引擎,它支持全文本搜索,但不支持事物处理。
外键不能跨引擎!