内容:1、建表。verchar长度最好2的整数倍,方便存储中文。表名最好t_或table_,提高可读性。
2、向表格插入数据。insert,DML语句:insert、update、delete,增删改数据,和表的结构无关。
insert into tablename(columnname1,columnname2,columnname3...)
values(value1,value2,value3...)可赋默认值。
字段和值必须一一对应,个数必须相同,数据类型必须相同。若插入时未给字段赋值,则默认为null
插入中文报错:因为DOS窗口是GBK编码方式,但数据库表只能接受UTF8。使用MYSQL FRONT软件
插入数据(mysql客户端软件,在实际开发中使用较多)。
查询时出现乱码:修改查询结果集的编码方式set character_set_results='GBK';
3、获取系统当前时间:select now();
4、表的复制:create table name2 as select * from name1;
5、将查询结果插入表中:insert into a select * from a where sal>3000;
6、增删改表结构。 (add,moidfy,drop)
添加字段:alter table student add tel varchar(10);
字段长度从10扩展到20:alter table student modify tel varchar(20);
删除字段:alter table student drop tel;
7、增删改表中数据续。(DML,insert,update,delete)
update:UPDATE tablename SET 字段名=字段值,字段名=字段值 WHERE 条件;
注意:update语句没有条件,会将一张表中所有的数据全部更新。
delete:DELETE FROM tablename WHERE 条件;
若没有条件,则删除表中所有的记录。
8、约束:constraint,表中数据的限制条件,加入约束目的是为了保证表中记录完整、有效。
非空约束: not null
唯一性约束: unique
*表级约束。
create table t_student(
id int(10),
name varchar(32) not null,
email varchar(128),
unique(name,email)
);
此处name和email联合唯一。
可添加约束名,方便日后删除
create table t_student(
id int(10),
name varchar(32) not null,
email varchar(128),
constraint t_student_email_unique unique(name,email)
);
not null 和 unique 可以联合使用。
主键约束: primary key(PK)
-主键约束
-主键字段:表中某字段添加主键约束后其为主键字段
-主键值 :主键字段中出现的每个数据称为主键值
给某字段添加主键约束后,该字段不能为空,也不能重复,还会默认添加"索引-index"。
一张表应该有主键字段,若没有,表无效。"主键值"是当前行数据的唯一标识。
单一主键:给一个字段添加主键约束;
//列级约束
drop table if exists t_student;
create table t_student(
id int(10) primary key,
name varchar(32)
);
//表级约束
drop table if exists t_student;
create table t_student(
id int(10),
name varchar(32),
constraint t_student_id_pk primary key(id)
);
复合主键:给多个字段联合添加主键约束。
//表级约束
drop table if exists t_student;
create table t_student(
id int(10),
name varchar(32),
email varchar(128),
constraint t_student_id_name_pk primary key(id,name)
);
一个表中只能有一个主键约束。
自然主键:(推荐使用)
*主键值是自然数,且该自然数和当前业务没有任何关系
业务主键:
*主键值和当前业务相关,若业务改变,主键值易受影响
mysql提供自增数字用来生成主键值,默认从1开始
drop table if exists t_student;
create table t_student(
id int(10) primary key auto_increment,
name varchar(32),
email varchar(128)
);
外键约束: foreign key (FK)
-外键约束、外键字段、外键值、单一外键、复合外键
一张表中可以有多个外键字段
例:设计数据库用来存储学生和班级信息。
一、学生信息和班级信息存储到一张表中:除了学生编号、姓名不重复,可能出现班级重复
缺点:数据冗余
二、分开存储:学生表、班级表。使学生表中班级编号和班级表中编号连接,添加外键约束
注:外键值可以为null
注:外键字段去引用其他表中的字段时,被引用字段必须具有唯一性约束
注:被引用字段的表被称为父表。先创建父表,在创建子表,先删除子表,再删除父表
注:外键约束只有表级约束
drop table if exists t_student;
drop table if exists t_class;
create table t_class(
classid int(8) primary key,
classname varchar(12) not null unique
);
create table t_student(
id int(10) primary key auto_increment,
name varchar(32),
classid int(8),
constraint t_student_classid_fk foreign key(classid) references t_class(classid)
);
insert into t_class(classid,classname)values(301,'gr3 cla1');
insert into t_class(classid,classname)values(302,'gr3 cla2');
insert into t_class(classid,classname)values(303,'gr3 cla3');
insert into t_student(name,classid)values('wang',301);
insert into t_student(name,classid)values('zhang',302);
insert into t_student(name,classid)values('yang',302);
insert into t_student(name,classid)values('zhao',302);
insert into t_student(name,classid)values('qian',303);
insert into t_student(name,classid)values('sun',303);
添加有外键约束的子表字段时会检查子表中外键约束的字段是否能在父表中查询到,无法查到则报错。
找出学生所对的班级名称:等同外连接。
级联更新和删除:更新on update cascade、删除父表中数据on delete cascade,更新、删除子表中
数据。谨慎使用。在外键约束后面添加。
alter table t_student drop foreign key t_student_classid_fk;
alter table t_student add constraint t_student_classid_fk foreign key(classid) references t_class(classid)
on delete cascade;
检查约束:(oracle支持)