# 查看数据库列表
# show databases;
# CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'设置字符编码
# CREATE DATABASE exercise character set 'utf8' collate 'utf8_general_ci';
# 删除数据库
# drop database exercise
# 创建表
# create table students(stu_id int primary key auto_increment,stu_name varchar(20),age varchar(2))
# 查看数据库中的所有表
# show tables;
# 查看表中列的信息
# desc students
# describe students_copy;
# 查看表的编码
# show create table students;
# 复制已有的表
# create table students_copy like students;
# 创建公司库
# create database company character set 'utf8' collate 'utf8_general_ci';
# 创建表
/*create table dept(deptno int(2) primary key auto_increment comment '部门号,主键',
dname varchar(20) not null comment '部门名称,不能为空',
loc varchar(20) not null comment '部门所在地,不能为空',
index dept_index(deptno));
*/
# 修改表的注释
# alter table dept comment '部门信息表';
/*
create table salgrade(
grade int(2) primary key auto_increment comment '工资等级,主键',
losal float(7,2) comment '相应等级最低工资',
hisal float(7,2) comment '相应等级最高工资')
engine=innodb default charset=utf8 comment '工资登记表';*/
# 为表dept的deptno添加索引
# alter table dept add index dept_index(deptno);
# 创建外键时添加ON DELETE CASCADE ON UPDATE CASCADE:当dept表的deptno改变或删除时,emp的deptno也相应变化
#ON DELETE CASCADE 删除主表中的数据时,从表中的数据随之删除
#ON UPDATE CASCADE 更新主表中的数据时,从表中的数据随之更新
#ON DELETE SET NULL 删除主表中的数据时,从表中的数据置为空
#默认 删除主表中的数据前需先删除从表中的数据,否则主表数据不会被删除
/*create table emp(
empno int(4) primary key auto_increment comment '员工编号,主键',
ename varchar(20) not null comment '员工姓名,不为空',
job varchar(10) not null comment '职位,不为空',
mgr int(4) comment '经理编号',
hiredate date not null comment '入职日期,不为空',
sal float(7,2) not null comment '工资,不为空',
coomm float(7,2) comment '奖金',
deptno int(2),
#index emp_index(deptno),
foreign key(deptno) references dept(deptno) on delete cascade on update cascade
)
engine=innodb default charset=utf8;*/
# 添加主键方法1,2,3
# alter tabel 表名 add constraint pk_列名 primary key(列名)
# 在创建表的同时创建主键
# X_id int(2),primary key(X_id)
# 创建外键
# /*第一种,写在属性定义里面的*/ /*可以指定外键名称,*/
# deptno int(2) constraint fk_deptno references dept(deptno),
# foreign key(deptno) references dept(deptno), 可省略外键名称
# deptno int(2),constraint fk_deptno foreign key(deptno) references dept(deptno) /*写在属性定义外面*/
# 第四种添加外键,可指定外键名
# alter table 表名 add constraint fk_列名 foreign key(deptno) references dept(deptno)
# 删除主外键约束
# alter table emp drop primary key;
# alter table emp drop foreign key fk_deptno;
# alter table emp add constraint fk_deptno foreign key (deptno) references dept(deptno);
# show create table emp;
# 修改列名
# alter table emp change job job1 varchar(20);
# alter table emp change job1 job varchar(10) not null;
# alter table 表名 change 原列名 新列名 类型; --修改表的列属性名
# alter table 表名 modify 列名 类型 ; --修改表的类类型
# alter table 表名 drop 列名; --删除表的某一列
# alter table 表名 add 列名 类型;--添加某一列
# alter table 表名 rename 新表名; --修改表名
# alter table emp1 rename emp;
# alter table emp rename to emp2;
# rename table emp2 to emp;
# 插入数据,注意:建议在插入多条数据时使用value,插入单条数据时使用values,大数据量没试过。
# 添加一条数据
# insert into dept value(1,'zhangsan','china');
# insert into dept(deptno,dname,loc) value(5,'黄河','甘薯');
# insert into dept values(2,'张三','中国'),(3,'李斯','四川'); # 同时添加多条数据
# 修改数据
# update dept set dname='王五' where deptno=3;
#删除数据
#delete from dept where deptno=5;
# 从查询information_schema中查询指定表中的约束,table_name指定表,table_schema指定库
# use INFORMATION_SCHEMA;
# select * from TABLE_CONSTRAINTS where TABLE_NAME='dept' and table_schema='company';
# 约束:主键,外键,唯一(UNIQUE),非空,检查,默认值。这篇博客不错:https://blog.csdn.net/a909301740/article/details/62887992