mysql 基本操作1

  • 一、简介
    • 数据库:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库  db:数据库  dbms 数据库管理系统
      • 在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库。mysql就是典型的关系型数据库。
      • 关系型数据库:将数据保存在不同的表中,再将这些表放入数据库中,而不是将所有数据统一放在数据库里,这样的设计增加了MySQL的读取速度,
        • 灵活性和可管理型也得到了很大提高,访问以及管理MySQL数据库的最常用标准化语言为SQL结构化查询语句。数据持久化存储在硬盘当中;
      • 非关系型数据库:
  • 二、关系型数据库的设计模式 ER模型和三范式
    • E entity  代表实体的意思  对应到数据库中的一张表
    • R relationship 代表关系的意思
    • 三范式 1,字段不能拆分 2.唯一标识 3.关系引用主键
  • 三、数据库的字段和约束
    • 1.字段类型
      • 数字:int,decimal(小数的);  例如decimal(5,2)的意思是,最大5位数,其中小数2位,1.2和2.33都行,但10000.21就不行,超出位数了
      • 字符串:char varchar test ,
        • text存储比较多的字符串,比如商品的描述信息
        • char存储的是固定的字符串数据  char(8) 最多8位  不满8个字符会在右侧自动补上空格字符
        • varchar存储的是可变的数据    varchar(30) 最多30位
      • 日期:datetime,date,time  格式 "1989-12-18"
      • bit:两个状态存储的时候建议使用存储0和1方式,比如性别,逻辑删除is_delete
    • 2.约束
      • 主键(primary key) 不能重复,唯一标识
      • 非空(not null) 比如要姓名不能为空,当保存为null的时候就会报错。
      • 唯一(unique) 这个值是唯一的。有重复的了会报错(比如身份证)
      • 默认default;如果不写就会有个默认值,比如 default 18
      • 外键foreign key:
  • 四、mysql 安装
    • 1.sudo apt-get install mysql-server
    • 2.设置密码
    • 3.Ps   -ajx|grep  mysql       查看进程方式检查mysql 安装成功没有
      • Mysql  -uroot   -p你的密码       进入mysql代表安装成功
    • 4.sudo service mysql start      开启mysql服务
      • sudo service mysql stop       停止mysql服务
      • sudo service mysql restart    重启mysql服务
    • 5.外部链接数据库
      • 1、进入数据库  mysql –uroot –p你的密码
      • 2、show databases    查看所有的数据库
      • 3、use mysql             使用mysql数据库
      • 4、show tables          查看mysql库中所有的表
      • 5、select  user,host from user; 在user 这个表里面查看用户和用户权限字段
      • 6、grant all privileges on *.* to root@"%" identified by "123456" with grant option;   创建用户并且赋予权限
      • 7、delete from user where user=’root’ and host = ‘localhost’; 删除原来初始创建的root用户
      • 8、flush privileges;  刷新数据库特权
      • 9、sudo  vi /etc/mysql/mysql.conf.d/mysqld.cnf
        • 打开配置文件,将bind_address修改为0.0.0.0
      • 10、重启mysql服务,使用windows下客户端进行连接
  • 五、数据库操作
    • 1.数据库的操作
      • show databases; 查看所有库
      • create database  数据库名 charset=utf8;  创建数据库
      • drop database 数据库名  删除数据库名
      • use 数据库  切换数据库
      • select database();   查看当前所用数据库
    • 2.表操作
      • show tables; 查看所有表
      • create table 表名 (字段1 约束1 约束2,字段2 约束1 约束2) 创建表
      • drop table 表名 删除表
      • rename 旧表名 to 新表名   重命名表
    • 3.字段操作
      • desc 表名  查询字段(表结构)
      • 增加字段 alter table 表名 add 字段 约束1 约束2
      • 删除字段 alter table 表名 drop 字段
      • 修改字段 alter table 表名 change 原字段 新字段名 约束
      • 删除主键:需要先把主键的改为普通的id 不能是自动增长,然后再删除主键
        • ① 、alter table students change id id int;
        • ②、alter table students drop primary key;
        • ③、alter table students change id id int auto_increment primary key not null;
    • 4.数据操作
      • insert into 表名 values(值,值),(值,值),(值,值)   添加三条数据  ()中字段值缺一不可,全字段插入数据
      • insert into 表名(字段1,字段2) valuse(值,值)  部分字段添加数据 有默认值和not null 可以不添加数据、
      • delete from 表名 where id=1   删除数据  按照查询语句查找到的数据
      • update 表名 set 字段=值 where id=2  修改查询语句查找到的数据
      • select * from 表名  查看表所有数据
  • 六、数据库备份与恢复
    • sudo mysqldump –u用户 –p密码  数据库名 > ~/Desktop/test1back.sql    (> 后为备份地址 文件后缀为.sql)  备份
    • sudo mysql –u用户 –p密码 数据库名 < ~/Desktop/test1back.sql    恢复
  • 七、数据查询
    • 1.select 列名 from 表名   查询单列数据
    • 2.select distinct  列名 from 表名   去重查询单列数据
    • 3.条件查询  where
      • 1.比较运算符   >  <  =  >=  <=  !=
        • select *  from  表名 where id>3;
      • 2.逻辑运算符   and   not  or
        • select * from 表名 where id>3 and id<5;
      • 3.模糊查询 like   _ 占一个字符位   % 占0或多个字符位
        • select name  from 表名 where name like "赵%"  查询姓赵的姓名
      • 4.范围内查找  between .. and ..  连续    in  不连续
        • select * from 表名 where id between 8 and 11    查询id是8到11的数据  包括8和11
        • select * from 表名 where id in(8,11)    查询id是8和11的数据
      • 5.空判断查询  is null , is not null
        • select * from 表名  where birthday is null  查询 生日为空的数据
      • 6.优先级
        • 小括号,not,比较运算符,逻辑运算符
        • and比or先运算,如果同时出现并希望先算or,需要结合()使用
    • 4.聚合查询  对某一列数据进行统计
      • count(列名) 统计数据总数   count(*)
      • sum(数字列名) 求某一列的和
      • avg(数字列名) 求某一列的平均数
      • max(列名)    求某一列的最大值
      • min(列名)    求某一列的最小值
      • select max(name),sum(num) * from 表名
    • 5.分组  group by
      • 把列相同的值归为一组方便统计
      • 根据一个字段进行分组后,无法看到别的字段信息但可以使用聚合其他字段
      • 根据id进行分组,可以看到别的字段信息
      • select count(*) from 表名 group by gender  根据性别字段gender分组,然后统计总数
      • 分组后的数据筛选要用having而不用where,having后面的条件运算符与where一样
      • where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
      • having是对group by的结果进行筛选
      • select count(*) from 表名 group by gender having id>3  根据性别字段gender分组,筛选出id>3 的,然后统计总数
    • 6.排序 order by
      • order by  [列1],[列2]
      • 先按照列1去排序,默认是按照asc排序(正序),如果要倒序,在列后面加desc。
      • 按照列1排序完成后,如果有顺序相同的,再按照列2进行排序。
      • select * from 表名 列1 asc,列2 desc;   按照列1正序排序完成后,如果有顺序相同的,再按照列2倒序。
    • 7.限制集(分页)
      • limit [start],[count]
      • start 为开始的id,count 每页数据数
      • 求第n页的数据
      • select * from 表名 where is_delete=0 limit (n-1)*m,m   每页m条数据
    • 8.完整的sql语句
      • select distinct * from 表名 where ... group by having order by limit start count
      • 执行顺序   from 表名 where ....  group by ...  having ...  select distinct *  order by ...  limit star,count

猜你喜欢

转载自blog.csdn.net/qq_41654985/article/details/80542819