创建表
创建表实例:
create table test ( id int auto_increment,
ts1_id int ,
primary key(id,ts1_id),
ts_name varchar(20) not null,
ts_num int unique,
ts_sex varchar(20) default 'girl',
ts_count int default '0'
start_time timestamp);
分解:
id int auto_increment:设置id为自动增长,auto_increment是MYSQL中的一个特殊约束条件,其主要作用是为表中新插入的新纪录自动生成唯一的ID;
一个表只能有一个字段使用auto_increment约束,且该字段必须为主键的一部分;
auto_increment约束的字段可以是任何整数类型;
primary key(id,ts1_id):设置多个字段的主键
ts_name varchar(20) not null:设置字段的非空约束
ts_num int unique:设置字段的唯一性约束,唯一性是指所有记录中该字段的值不能重复出现
字段类型:
1. 数值型字段类型
MySQL支持整型、浮点型、双精度型、定点型等数值型字段类型。在创建表中需要声明数值字段类型,如下所示:
CREATE TABLE mytable(
myfield1 INT,
myfield2 FLOAT,
myfield3 DOUBLE,
myfield4 DECIMAL(10,2)
);
2. 字符型字段类型
MySQL支持字符型字段类型,如 CHAR、VARCHAR、TEXT、BLOB 等。它们的区别在于字符串长度和存储方式不同,如下所示:
CREATE TABLE mytable(
myfield1 CHAR(20),
myfield2 VARCHAR(50),
myfield3 TEXT,
myfield4 BLOB
);
3. 日期和时间类型
MySQL支持 DATE、TIME、DATETIME、TIMESTAMP等日期和时间类型。我们可以用它们将时间和日期的数据类型存储到数据库中,如下所示:
CREATE TABLE mytable(
myfield1 DATE,
myfield2 TIME,
myfield3 DATETIME,
myfield4 TIMESTAMP
);
4. 枚举型
MySQL支持ENUM类型,它能够将一组可选的值组成列表。如下所示:
CREATE TABLE mytable(
myfield1 ENUM('男','女')
);
- 表的完整性约束条件
primary key : 标识该属性为该表的主键,可以唯一的标识对应的元组
foreign key :标识该属性为该表的外键,是与之联系某表的主键
not null : 标识该属性不能为空
unique : 标识该属性的值是唯一的
default : 为该属性设置默认值
auto_increment : 标识该属性的值自动增加
查看表结构和字段
describe test ; --查看表结构
desc test ;--简写
show create table test ;--查看表的详细结构语句
修改表
修改表名
语法格式:alter table 旧表名 rename [to] 新表名;
Alter table example0 rename test;
修改表字段
alter table test modify ts_name varchar(30);--修改字段的数据类型
alter table test modify stu_sex varchar(30);
alter table test modify score DOUBLE;
ALTER table test change sex ts_sex boolean;--修改字段名
alter table test change stu_sex sex int(2);
ALTER table test add age int(3);--增加字段
alter table test add phone int(11) not NULL;--增加有完整性约束条件的字段
ALTER table test add job_num int(3) first;--表的第一个位置增加字段
alter table test add ts_add varchar(20) after age;--表的指定位置之后增加字段
alter table test modify stu_id int first;--字段修改到第一个位置
ALTER TABLE test MODIFY address VARCHAR(30) three;-- 修改为表的第一个字段
alter table test modify age int(3) after ts_name;--字段修改到指定位置
ALTER TABLE test MODIFY score DOUBLE AFTER address;-- score放在address的后面
添加外键约束
【alter table 从表 add foreign key(外键字段) references 主表(主键字段)】;
删除表
alter table test drop ts_add;--删除字段
drop table test;--删除表
插入删除数据
insert into test1 values ('today',101);--为表的所有字段插入数据
insert into test values (001,001,'zeng',1,'w',2);--为表的所有字段插入数据
insert into test(ts_name) values ('zeng');--为表的指定字段插入数据
insert into test values (002,002,'zeng',2,'w',2),(003,003,'zeng',3,'w',2);--同时插入多条记录
insert into test (ts_name,ts_num) select name,ts_num from test1;--将查询结果插入到表中
语法格式:
insert into 表名1 (属性列表1)
select 属性列表2 from 表名2 where 条件表达式;
表名1说明记录插入到哪个表中;
表名2表示记录是从哪个表中查询出来的;
属性列表1参数表示为哪些字段赋值;
属性列表2表示从表中查询出哪些字段的数据;
条件表达式参数设置了select语句的查询条件;
注意:使用这种方法时,必须保证属性列表1和属性列表2中的字段个数是一样的,而且每个对应字段的数据类型必须是一样的。
delete from test where id=1001;--删除数据