mysql数据库
数据库的创建,修改,删除
表的创建,修改,删除
数据:insert,delete,update,select
数据库
- 数据库
存储和管理数据的仓库 - 商用数据库
Oracle 甲骨文公司 java
SQL server 微软 .net
DB2 IBM - 开源数据库
mysql ------- Oracle - 安装数据库
端口: 3306 - 启动停止数据库服务
计算机管理 -> 服务
终端 -> net stop mysql 、 net start mysql - 启动客户端
终端 -> mysql -uroot -proot (-u后边表示用户名,-p后边表示密码)
mysql命令行客户端 -> 直接输入密码 - 创建数据库
在客户端里
create database db_test1;
create database db_test2 character set utf8;(数据库编码格式) - 查看数据库
在客户端里
show databases; - 查看数据库的创建语句
在客户端里
show create database db_test1; - 修改数据库和删除数据库
在客户端里
alter database db_test1 character set gbk;
drop database db_test1;
表
- 创建表
选择数据库
use db_test1;
create table tb_emp(
filed type,
filed type,
…
)character set utf8;
create table tb_emp(
filed type,
filed type,
…
)default charset=utf8; - 字段的数据类型
字符串:
char------定长 0-255(不够长度用空格补齐)
varchar------不定长度 0-65535
整型:
tinyint------1个字节
smallint------2个字节
int-------4个字节
bigint------8个字节
浮点型:
float------4
double------8
大文本:
blob------二进制 图片 4gb
text------4gb
日期:
date------yyyy-MM-dd
time------HH:mm:ss
datetime------yyyy-MM-dd HH:mm:ss
timestamp------yyyy-MM-dd HH:mm:ss 时间戳不能为空
bit类型:
boolean 0 1 - 约束
唯一性约束:unique 可以为null
主键约束:primary key 唯一并且不能为空、一般不表示逻辑、auto_increment自动增长
不为空约束:not null
外键约束:foreign key 数据量大时不建议使用 - 显示表结构,显示数据库中的表
desc tb_emp;
show tables;
select database();显示当前所在的库名 - 删除表
drop table tb_emp; - 修改表
添加列(字段)
alter table tb_emp add image varchar(100);
alter table tb_emp add image varchar(100) after name;
修改列的数据类型
alter table tb_emp modify image varchar(50);
修改列名
alter table tb_emp change image image1 varchar(50);
删除列
alter table tb_emp drop image;
修改表名
alter table tb_emp rename to emp;
rename table tb_emp to emp;
修改表的字符集
alter table tb_emp character set utf8;
数据
- 插入数据
insert into tb_emp values(1,‘1001’,‘admin’,18);//1是id,id自增长,此处写1是因为少写字段会报错
insert into tb_emp (empid,name) values(‘1001’,‘admin’); - 修改数据
update tb_emp set name=‘李四’,age=19 where id=2; - 删除数据
delete from tb_emp where id=1;//一条一条删除
truncate table tb_emp;//清空表,把表摧毁,重新建立表的结构 - 查询数据
select * from tb_emp;
select empid,name from tb_emp;
select distinct deptid from tb_emp;//去重
select name as 姓名 from tb_emp;//别名 - where子句
运算符:>、<、>=、<=、=、!=、<>
select name from tb_emp where salary > 5000;
in()
select * from tb_emp where deptid in(10,20);
between…and
where salary between 3000 and 5000;
like % _ (_表示一个字符,%表示零个或多个)
where name like ‘_小%’;
and、or、not
is null、is not null(判断空值)
where email is not null;
如果该字段是空就将其变为0或者其它
ifnull(salary,0); - order by子句
排序:升序、降序
order by 排序的字段 asc / desc,默认是升序
order by salary asc
order by salary asc,name desc
where后不能使用列别名,order by后可以使用列别名 - 聚合函数
sum()、avg()平均、min()、max()、count()
select sum(salary) from tb_emp; - group by子句,having子句
select deptid,avg(salary) from tb_emp group by deptid;
group by后出现的字段名,必须出现在select后边,并且不会被分组函数包含
需求:按部门分组后,显示部门的平均工资>5000
select deptid,avg(salary)
from tb_emp
group by deptid
having avg(salary)>5000;
where子句中不能有分组函数,有分组函数参与的子句过滤用having