mysql 自我练习基础 1

-- 查看系统中有哪些数据库
show databases;

-- 创建test数据库
create database test;


-- 选择进入数据库
use test;


-- 删除数据库(慎用)
drop database test;


-- 创建数据表
create database test;


-- 查看当前数据库中有哪些表
show tables;
create table dep(
deptno int primary key,
dname varchar (15), 
loc varchar (10)
);


-- 查看表结构
desc dep;


-- 删除数据表(慎用)
drop table dep;



-- 创建带有约束条件的表(因为两张表中有主外键约束,所以需要先创建主键所在的dep,再创建外键所在的emp)
create table emp(
empno int primary key auto_increment,
ename varchar(15) unique,
job varchar(10) not null,
mgr int,
hiredate date,
sal float default 0,
comm float,
deptno int,
foreign key (deptno) references dep (deptno)
);


-- 修改表名
alter table emp rename empolyee;


show tables;
-- 修改字段名
alter table empolyee change empno eno int auto_increment;


-- 修改字段类型
alter table empolyee modify sal decimal default 4000;


alter table empolyee rename emp;
alter table dep rename dept;
-- 添加字段
alter table emp add Nu int not null after eno;
desc emp;
desc dept;

-- 修改字段的排列位置:
alter table emp modify NU int not null first;
alter table emp modify NU int not null after job;


-- 删除字段
alter table emp drop NU;

alter table emp change eno empno int auto_increment;
-- 插入数据:字段名与字段值的数据类型、个数、顺序必须一一对应
insert into dept(dname,deptno,loc) values ('accounting',10,'new york'),('research',20,'dallas');

insert into dept values (30,'sales','chicago'),(40,'operations','boston');

select * from dept;#查询表中的数据

insert into emp values(1001,'a','operator',7369,'2021-02-01',600,40);
insert into emp(ename,job,sal,deptno) values('b','programmer',7000,40);#自动增长约束
insert into emp(empno,ename,job,sal,deptno) values(1001,'c','acountant',6000,40);#报错:触发主键约束
insert into emp(empno,ename,job,deptno) values(1003,'d','acountant',40);#默认约束
insert into emp(empno,ename,job,sal,deptno) values(1004,'d','programmer',2100,40);#报错:触发唯一约束
insert into emp(empno,ename,sal,deptno) values(1005,'e',4000,40);#报错:触发非空约束
insert into emp(empno,ename,job,sal,deptno) values(106,'f','operator',3500,100);#报错:触发外键约束
insert into emp(empno,ename,job,sal,deptno) values(107,'g','operator','四千',40);#报错:数据类型不符

select * from emp;#查询表中的数据


-- 批量导入数据(路径中不能有中文,‘\’在编程语言中是转义符,需要将‘\’改为‘\\’或‘/’)
-- 先有部门,才能存储每个部门的员工信息,所以先添加dept的部门信息,再导入emp的员工信息
show variables like '%secure%';-- 查看安全路径

load data infile "C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/employee.csv"
into table emp 
fields terminated by ',' 
ignore 1 lines;

select * from emp; -- 检查导入数据内容
select count(*) from emp; -- 检查导入数据总行数

-- 更新数据
set sql_safe_updates=0; -- 设置数据库安全权限,执行该代码后可以批量修改 不用where
update emp set sal=10000 where deptno=40;



-- 删除数据
delete from emp where deptno=40;



-- 清空数据
delete from emp;-- 如果该代码执行报错,则先执行上面set sql_safe_updates=0;语句 才可以批量清空数据
truncate emp;-- 与deletefrom 区别为该语句直接整个表删除然后重新建一个表,速度更快,delete from 则是一条一条的删除

 

posted @ 2021-10-06 12:37  charlly  阅读(64)  评论(0)    收藏  举报