一、SQL(结构化查询语言) —> DDL(数据定义语言)—>
create / drop / alter
1.查看所有数据库
show databases;
2.创建数据库
create database hrs default charset utf8mb4;
3. 查看所有字符集和排序规则
show charset;
show collation;
4.删除数据库
drop database if exists hrs;
5. 切换数据库
use hrs;
1)创建表
create table tb_dept
(
dno integer not null comment '编号',
dname varchar(20) not null comment '名称',
dlocation varchar(20) not null comment '所在地',
primary key (dno)
) engine=innodb comment='部门表';
2)查看所有表
show tables;
3)查看表结构
desc tb_dept;
4)删除表
drop table if exists tb_dept;
5)修改表
alter table tb_dept add column dest date comment '成立日期';
alter table tb_dept drop column dest;
alter table tb_dept modify column dlocation varchar(50) not null;
alter table tb_dept change column dlocation dloc varchar(200) not null comment '所在地';
alter table tb_dept add constraint uk_dept_dname unique (dname);
alter table tb_dept drop constraint uk_dept_dname;
alter table tb_dept add constraint ck_dept_dloc check (char_length(dloc) >= 2);
alter table tb_dept drop constraint ck_dept_dloc;
alter table tb_dept rename to department;
二、数据类型
1. 整数
* tinyint ---> 1个字节 ---> -128 ~ 127
* smallint ---> 2个字节 ---> -32768 ~ 32767
integer / int ---> 4个字节 ---> -2^31 ~ 2^31-1
~ int unsigned ---> 无符号整数 ---> 0 ~ 2^32-1
~ int(4) zerofill ---> 1 ---> 0001
bigint ---> 8个字节 ---> -2^63 ~ 2^63-1
~ bigint unsigned ---> 无符号大整数 ---> 0 ~ 2^64-1
2.小数
* float
* double
decimal(M,N) ---> M 有效数字的位数 ---> 65
N 小数点后面的有效数字的位数 ---> 30
3.字符串
* char
varchar ---> utf8mb4 ---> 65535 / 4 ---> 15327
4.日期和时间
date
time
datetime
* timestamp ---> 记录现在距离1970年1月1日0时0分0秒过去了多少时间
---> 底层就是一个整数(有溢出风险)---> 2038年问题
Y2K ---> 千年虫问题
5.其他
* boolean ---> tinyint ---> 0 / 非0
* enum ---> MySQL方言
* longtext ---> 4G
* longblob ---> 4G
注意:不要表的字段中放很大的二进制数据或文本数据(给文件路径即可)
三、SQL(结构化查询语言)—> DML(数据操作语言)
1.insert
insert into department (dno, dname, dloc) values (10, '财务部', '北京');
insert into department (dno, dname, dloc) values
(20, '研发1部', '成都'),
(30, '销售1部', '上海'),
(40, '研发2部', '深圳'),
(50, '销售2部', '长沙');
2.delete
delete from department where dno = 50;
delete from department where dno in (30, 40);
3.update
update department set dname = '销售3部', dloc = '武汉' where dno = 30;
4.select
select * from department;
作业:
1. 创建员工表 (工号、姓名、性别、出生日期、入职日期、月薪、职位)
2. 思考员工表跟部门表之间又没有关系?如果有是什么关系?如何建立两张表的关系?