MySQL

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)
   values1,"毛豆",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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值