MySQL是结构型数据库,存储的是表格关系型的。Database 是用来按照数据的结构组织、存储、管理数据一个仓库 。
命令面板操作:
1.show databases; 显示所有的数据库
2.使用数据库 use mysql;
3.显示表 show tables;
mysql 这个数据库里面 user表是用户的信息表
4.创建数据库
create database chat; //显示1行受影响 成功
5.删除数据库
drop database chat;
6.在创建的时候 检测该数据库是否存在 不存在创建
create database if not exists chat;
7.创建表: (表名、表的字段名、定义每个表的字段)
注意:字段的数据类型 (int float double decimal date datetime varchar)
//直接创建
//创建字段的时候 字段可以为null 也可以not null
//auto_increment 自增列 默认每次自增+1 设置自增列得添加主外键
create table user(
id int not null auto_increment,
name varchar(50),
sex varchar(10),
brithday datetime
) default charset=utf8; //设置表的编码格式可写可不写 编码格式和数据库引擎默认设置
//检测创建的表是否存在 在创建
create table if not exists user(
id int not null auto_increment,
name varchar(50),
sex varchar(10),
brithday datetime
)
8.查看表创建时的信息 show create table user;
9.删除表 drop table user;
可以判断 drop table if exists user;
10,操作数据库里面的表
增删改查
增加数据:
varchar 双引数据
如果是按照下面这种方式添加数据 (必须写部位空的字段,为空的字段可写)
insert into user(id,name,age,sex,brithday)
values
(1,"毛豆",20,"男","2020-04-13 12-30-05");//写的数据按照上面列的顺序去写保证数据类型一致
增加之后查看数据 显示乱码 set names gbk; 就能正常显示
//增加数据的时候不写列 ---指的是表里面所有的列都得添加数据
insert into user
values
(1,"毛豆",20,"女","2020-12-30 01-20-22");
还可以一次性插入多条数据:
insert into user
values
(),(),(),(); //这种写法是一次增加多条数据
11。查询数据 select * from user; * 指表里面所有的列
查找表里面的固定几个列
select id,name,sex,age from user;
查找表时候列起别名 使用 as 起别名
select id as userid,name,sex from user;
12.表中数据修改 update 修改数据语法 添加条件语句 不加则修改整张表的
update user set name=‘李四’
13.where 条件语句
update user set name="毛豆" where id=3;
//多条件 使用and关键字
update user set name="小红" where id=3 and sex='男';
//条件语句查询使用
select * from user where sex="男";//也可以多条件过滤
14.删除数据操作 delete from user 不加条件整张表数据全部删除 需要添加条件
delete from user where id=1;
15.like子句 模糊查找
select * from user where name like "张三";//like后边没有使用%和等号效果一样
select * from user where name like "%张";
select * from user where name like "张%";
select * from user where name like "%张%";
16.排序 order by 子句 可以和条件之类连用
select * from user order by age asc; 正序
select * from user order by age desc; 倒序
17.group by 语句分组 对一个或者多个列进行分组 在分组的列上可以使用 count sum avg函数
select sex,count(*) as count from user group by sex;
select name,sum(count) as sum from userlogin group by name;
// with rollup关键字 是在分组的情况下,做最终的统计
//统计完成之后存在null空值 使用coalesce方法处理列上的空值
select coalesce(name,'总数') as name,sum(count) as sum from userlogin group by name with rollup;
18.多表链接查询
//多表查询+分组以及虚拟表起别名
select user.id,user.name,age,sex,count from user,(select name,sum(count) as count from userlogin group by name) as login where user.name=login.name;
//多表查询+条件
select user.id,user.name,age,sex,job from user,job where user.name=job.name;
//子查询 使用关键字 in
select * from user where id in (select id from score where score>90);
19.mysql 数据库里面添加 主键 primarykey和外键 foreignkey 唯一键 unique
主键是值不能为null 不能重复
外键是引用的主键
唯一键是值可以为null 不能重复
添加主外唯一键 在创建表的时候可以直接添加
主键分为单主键 和 联合主键(一张表存在多个主键)
//自增列必须是主键
create table user(
id int auto_increment primary key,
name varchar(100));
//添加多个主键
create table user(
id int auto_increment,
name varchar(100),
age int,
primary key(id,name));
//添加外键 外键引用的是主键 外键值必须和主键保持一致
create table score(
id int auto_increment primary key,
userid int,
sc int,
foreign key(userid) references user(id));
//主外键可以让数据统一,表之间的关系。
//表外添加主键
alter table user add primary key (id);
//表外添加外键
alter table score add foreign key (userid) references user (id);
//添加唯一键 主要约束数据的
//表内添加
create table user(
id int auto_increment primary key,
name varchar(100) unique key,
age int,);
//联合唯一键
create table user(
id int auto_increment primary key,
name varchar(100),
age int,
unique key(name,age));
//外部添加唯一键
alter table user add unique key(name);
//删除主键
alter table user drop primary key;
//删除外键
alter table user drop foreign key 外键名称;
//表创建好之后 添加列
alter table user add column newcolumn varchar(100) not null;
20.存储过程 为了安全
关键语法 修改;为别的符号 in 向存储过程传入值 out 传出值
delimiter &&
create procedure myinfo(in number int)
begin
select * from user where age>=number;
end&&
//存储过程创建完成之后把;修改回来
delimiter ;
//执行存储过程
call myinfo(20);