一、创建数据库
mysql>create database demo2;
mysql>create database if not exists demo2;
二、删除数据库
mysql>drop database demo2;
三、数据表的设计
1采用E-R图(实体-关系图)
2要有主键
3外键(一个字段关联两张表,如果这个字段在某表中是主键,则此表为主表;如果这个字段在某表中不是主键,则此表为从表,而此键为外键)。
4约束:是定义在表上的一种强制规则。
1)not null(非空)
2)unique(唯一)
3)primary key(主键)
4)foreign key(从表)
5)check(检查约束)
四、创建表
1数据类型
1)数值类型
int,bigint,float,double,decimal
2)日期类型
date,datetime,time
3)字符串类型
char(M) 定长,varchar(M) 变长,blob 二进制大对象,text
例题:
mysql>create database demo1;
mysql>use demo1;
mysql>create table a(a date,b datetime);
mysql>insert into a values('2018-1-1','2018-1-1 12:12:12');
mysql>select * from a;
4)创建表的例题
mysql>use demo1;
mysql>create table c1(id int auto_increment primary key,
username varchar(50) not null);
mysql>insert into c1(username)values('a');
mysql>insert into c1(username)values('b');
mysql>insert into c1(username)values('c');
mysql>select * from c1;
创建DEPT表
mysql>create table dept(deptno int auto_increment primary key comment '部门编号',
dname varchar(20) comment '部门名称',
loc varchar(30) comment '部门地点');
mysql>create table EMP (empno int(4) auto_increment primary key comment '员工编号',
ename varchar(10) comment '员工姓名',
job varchar(10) comment '职务',
mgr varchar(50) comment '经理编号',
hiredate date comment '入职日期',
sal double(7,2) comment '工资',
comm double(7,2) comment '奖金',
depno int(2) comment '部门编号');
ppt24:练习1
mysql>create table department(
id varchar(50) primary key,
name varchar(50) unique,
leader varchar(50) not null,
loc enum('南湖校区','浑南校区')
);
mysql>create table class(
cid varchar(50) primary key,
name varchar(50) unique,
id varchar(50) references department(id)
);
mysql>create table student(
sid char(10) primary key,
name char(20) not null,
sex char(2) check(sex='男' or sex='女'),
birthday date,
cid varchar(50) references class(cid)
);
五、复制表
方法一:create table 新表名 like 源表(能复制表中的约束,但不复制表中的数据)
mysql>insert into department values(1,1,1,1);
mysql>create table d1 like department;
方法二:create table 新表名 select * from 源表(不能复制表中的约束,但复制表中的数据)
mysql>create table d2 select * from department;
方法三:create table 新表名 like 源表;
mysql>insert into 新表 select * from 源表;(既能复制表结构,也能复制表的内容)
六、删除表
mysql>drop table 表名;
七、修改表结构(难点)
增加列:alter table 表名 add 列名 数据类型和长度 列属性
修改列:alter table 表名 modify 列名 新数据类型和长度 新列属性
删除列:alter table 表名 drop column 列名
例题:
mysql>create table c2(id int primary key);
mysql>alter table c2 add name varchar(50) not null;
mysql>alter table c2 modify name varchar(100);
mysql>alter table c2 drop column name;
mysql>alter table c2 add name varchar(50) not null;
mysql>alter table c2 change name username varchar(100);
练习3:
mysql>alter table emp add gender char(2) default('男');
mysql>alter table emp modify gender char(4) default('男');
mysql>alter table emp modify gender char(4) default('女');
mysql>alter table emp drop column gender;
八、修改约束条件
添加约束:
alter table 表名 add constraint 约束名 约束类型(字段名)
例:
alter table person add constraint name_unique unique(name);
其中person是表名,name_unique是约束名,unique是约束类型,(name) 是(字段名)。
唯一约束
mysql> alter table emp add constraint ename_unique unique(ename);
mysql> alter table emp drop key ename_unique;
主键约束
mysql>create table c3(id int);
mysql>alter table c3 add constraint id_primary primary key(id);
mysql>alter table c3 drop primary key;
外键约束
mysql>create table d9(
id varchar(50) primary key,
name varchar(50) unique,
leader varchar(50) not null,
loc enum('南湖校区','浑南校区')
);
mysql>create table class9(
cid varchar(50) primary key,
name varchar(50) unique,
id varchar(50)
);
mysql>alter table class9 add constraint id_fk foreign key(id) references d9(id);
alter table 是固定的,class9是表名,add constraint 固定,表示添加约束,id_fk约束名,
foreign key固定,外键,(id)本表中的关联字段,references固定的,引用,d9是主表(id)
是d9表中的关联字段。
mysql>alter table class9 drop foreign key id_fk;
mysql>alter table class9 add constraint id_fk foreign key(id) references d9(id) on delete cascade on update cascade;
mysql>alter table class9 drop foreign key id_fk;
九、改表名
方法一:rename table 旧表名 to 新表名;
mysql>rename table c3 to cc3;
方法二:alter table 旧表名 rename 新表名;
mysql>alter table cc3 rename c3;