3.1.1 插入表数据
一旦创建了数据库和表,下一步就是向表里插入数据。通过INSERT或REPLACE语句可以向表中插入一行或多行数据。
语法格式:
INSERT [LOW_PRIORITY | DELAYED |HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},...),(...),...
| SET col_name={expr | DEFAULT}, ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
说明:
tb1_name:被操作的表名。
col_name:需要插入数据的列名。如果要给全部列插入数据,列名可以省略。如果只给表的部分列插入数据,需要指定这些列。对于没有指出的列,它们的值根据列默认值或有关属性来确定,MySQL处理的原则是:
(1)具有IDENTITY属性的列,系统生成序号值来唯一标志列。
(2)具有默认值的列,其值为默认值。
(3)没有默认值的列,若允许为空值,则其值为空值;若不允许为空值,则出错。
(4)类型为timestamp的列,系统自动赋值。
VALUES子句:包含各列需要插入的数据清单,数据的顺序要与列的顺序相对应。若tb1_name后不给出列名,则在VALUES子句中要给出每一列(除IDENTITY和timestamp类型的列)的值,如果列值为空,则值必须置为NULL,否则会出错。VALUES子句中的值:
(1)expr:可以是一个常量、变量或一个表达式,也可以是空值NULL,其值的数据类型要与列的数据类型一致。例如,列的数据类型为int,插入的数据是‘aaa’就会出错。当数据为字符型时要用单引号括起。
(2)DEFAULT:指定为该列的默认值。前提是该列原先已经指定了默认值。
如果列清单和VALUES清单都为空,则INSERT会创建一行,每个列都设置成默认值。
INSERT语句支持下列修饰符:
LOW_PRIORITY:可以使用在INSERT、DELETE和UPDATE等操作中,当原有客户端正在读取数据时,延迟操作的执行,直到没有其他客户端从表中读取为止。
DELAYED:若使用此关键字,则服务器会把待插入的行放到一个缓冲器中,而发送INSERT DELAYED语句的客户端会继续运行。如果表正在被使用,则服务器会保留这些行。当表空闲时,服务器开始插入行,并定期检查是否有新的读取请求(仅适用于MyISAM、MEMORY和ARCHIVE表)。
为了让客服端能识别汉字
set character_set_client=gb2312;
为了让结果不出现乱码
set character_set_results=gb2312;
create table xs
(学号 char(6) notnull primary key,
姓名 char(8),
专业名 char(10),
出生日期 date,
总学分 tinyint,
照片 blob,
备注 text
);
插入记录命令
insert into 表名(字段名1,字段名2.。。。)
values(值1,值2.。。。);
081101王林计算机 1 1990-02-10 50null null
insert into xs(学号,姓名,专业名,出生日期,总学分,照片,备注)
values('081101','王林','计算机','1990-02-10',50,null,null);
或者:(如果提供的值的个数和顺序与表中字段一致,可以省略字段名)
insert into xs values('081101','王林','计算机','1990-02-10',50,null,null);
或者:如果只给表中的部分字段插入值时,要指明字段名
insert into xs(学号,姓名,专业名,出生日期,总学分)
values('081101','王林','计算机','1990-02-10',50);
081102李四
insert into xs(学号,姓名)values('081102','李四');
081103王五 软件工程1990-10-10
insert into xs values('081103','王五','软件工程','1990-10-10',null,null,null);
insert into xs(学号,姓名,专业名,出生日期) values('081103','王五','软件工程','1990-10-10');
1.创建数据库
create database 库名
create database if not exists 库名
创建库的同时指定字符集,校对规则
create database mydb character set utf8
collateutf8-general_ci;
显示所有数据库
show databases;
显示创建数据库的定义信息
show create dabasese 库名
2.修改数据库,只能改参数
alter database 库名characterset gb2312 collate gb2312_chinese_ci;
3.删除数据库
drop database 库名
drop database if exists 库名
4.创建表
创建表就是创建表的结构:包含哪些字段(属性),字段名,字段类型
create table 表名
(字段名1 类型,
字段名2 类型,
。。。。
)
创建一个学生表
xs:id name sex
确定你的表建在哪个库中,把此库变为当前数据库
use 库名;
create table xs
(
id int,
name char(10),
sex char(2)
);
5.修改表结构:增加字段 修改旧字段 删除字段
alter table 表名
add 字段名类型(宽度)//增加字段
modify 旧字段类型 //修改旧字段
drop 字段名//删除字段
change 旧字段名新字段内容//改列名
在学生表中增加birthday字段
alter table xs
add birthday date;
alter table xs
modify name varchar(20);
alter table xs
change name sname varchar(20);
6.修改表名
rename table 旧名 to 新名
7 复制表
create table 表名 like 表名1
8 删除表
drop table 表名
删除记录:
delete from 表名 //删除表中的所有记录,此表变为了空表
delete from 表名 where 条件 //删除表中符合条件的记录
delete from xs where 学号='081102';
droptable xs ; //删除整张表,结构和记录
truncate table 表名 //快速删除表中的所有记录
修改记录(更新记录)
update 表名
set 字段名1=值1 [,字段名2=值2.。。。]
where 条件
insert
delete
update