zoukankan      html  css  js  c++  java
  • MYSQL基础知识和操作

    一 MySQL数据库安装和使用;
    1.地址栏中输入cmd进入命令窗口,输入net start mysql80,查看mysql服务是否开启。net stop mysql80
    2.环境变量中,选择path,将安装目录复制(C:Program FilesMySQLMySQL Server 8.0in)到path,点击确定
    3.在cmd中进入安装目录,输入cd C:Program FilesMySQLMySQL Server 8.0in,回车
    4.输入mysql -uroot -p 提示需要输入密码。登录成功,
    5.可使用show databases;命令来查看数据表
    6.Mysql的连接认证基本语法:
    Mysql.exe/mysql -h主机地址 -P端口号 -u用户名 -p密码 例:mysql -h127.0.0.1 -uroot -p密码 -P3306
    quit命令可以退出MySQL

    二 mysql数据类型;
    1.数值类型 int:4个字节; integer:与int同义词; float:4个字节; double:8个字节
    2.字符串类型 char:固定长度字符串; varchar:可变长度字符串;
    3.日期型 Date:YYYY-MM-DD; Datetime:YYYY-MM-DD HH:MM:SS Time: HH:MM:SS
    MySQL支持选择在该类型关键字后面的括号内指定整数值显示宽度(例如,int(4))显示宽度并不限制可以在列内保存的值范围,也不限制超过列的指定宽度的值的
    显示。

    三 数据库定义语言;
    1.创建数据库: create database 数据库名;使用数据库; use 数据库名
    2.创建学生表
    create table student(
    id int(10为显示宽度并不影响数据的真实长度)整数型 primary key (主键是不允许重复)auto_increment(自动生成的数),
    name varchar(8)可变型字符串。名字长度不固定显示8个字符,
    sex char(1)性别固定 只有男 女 所以说固定1个字符的变量
    score float(6,2)
    );
    show tables 显示表
    3.删除表
    drop table 表名
    4.删除数据库
    drop database 数据库名
    5.修改表
    查看表数据 select * from 表名 ;insert into 表名(变量1,变量2)values("值1","值2);

    修改表的结构:
    增加列
    alter table 表名 add 列名 数据类型(长度)
    修改列的数据类型
    alter table 表名 modify 列名 数据类型(长度)
    修改列的名称
    alter table 表名 change 愿列名 新列名 数据类型(长度)
    删除列
    alter table 表名 drop 列名

    四 数据操作语言
    1.向表中插入数据 insert into 表名(变量1,变量2)values("值1","值2);
    inert to student(表名)(name,age)values("张三",20);
    2.修改表中数据 update 表名 set 字段2=值1,字段2=值2,。。[where]
    update student(表名)set age=20(字段=值) where id=1(某个字段=值所在的那一行)
    3.删除表中的数据 delete from 表名 [where]
    4.删除表的所有内容 delete from 表名

    五 数据查询语言
    1.单表查询
    select ... from 表名 [where] ....[group by]...[having]..[order by asc/desc]
    A 查询整张表的内容 例;select * from 表名;
    B 查询表的部分数据:
    1.查询部分列 如查询部门表里 编号 姓名 薪水 字段:
    select 编号,姓名,薪水 from 部门表;
    2.查询部分行 如查询部门表里薪水>2500的部门员工;
    select * from 部门表 where 薪水>2500;
    3.查询部分行和列 如查询部门表里薪水>2500 员工的编号,姓名,薪水;
    select 编号,姓名,薪水 where 薪水>2500;
    C 查询结果进行排序:
    1.升序 如对部门表里的薪水进行升序排列
    select * from 部门表 order by 薪水 asc;
    2.降序 如对部门表里的薪水进行升序排列
    select * from 部门表 order by 薪水 desc;

    2.模糊查询
    只能与字符一起使用的like关键字;
    like 加 通配符进行排序
    a. 从部门表里查询姓名以M开头的员工信息
    select * from 部门表 where 姓名 like "%M%" ;%表示任意字符任意多个
    b. 从部门表里查询姓名以M开头员工信息
    select * from 部门表 where 姓名 like “M%”;
    c. 从部门表里查询姓名的第二个字母是M的员工信息
    select * from 部门表 where 姓名 like "_M%" ;_代表一个字符
    区间范围的 between...and....;在给定的值中进行选择的;
    a. 从部门表里查询薪水在2000-3000之间的员工信息
    select * from 部门表 where 薪水 between 2000 and 3000;
    也可以加上排序看起来更整齐
    select * from 部门表 where 薪水 between 2000 and 3000 order by 薪水 asc;
    in 在指定的值中进行选择
    a. 从部门表里职位字段的值中选择出是经理,职员的信息
    select * from 部门表 where 职位 in(“职员”,“经理”);
    也可以加上排序
    select * from 部门表 where 职位 in("职员",“经理”)order by 职位;如果没有指定asc 或者是 desc 会默认的是升序;

    3.分组函数 也叫做聚合函数
    count()行总数统计 sum()求和 avg()平均数 max()最大 min()最小
    a. 从部门表统计符合某些条件的信息如:
    统计部门表里总共员工的数量;
    select count(*) from 部门表;
    统计部门表里客服的员工总数;
    select count(*) from 部门表 where 部门="客服";
    统计部门表里职位为经理的员工总数;
    select count(*) from 部门表 where 职位=”经理“;
    b. 从部门表里查询员工的总薪水
    部门所有员工总薪水数
    select sum(薪水) from 部门表
    查询部门表里客服员工总薪水
    select sum(薪水) from 部门表 where 部门=”客服“;
    查询部门表里经理总薪水
    select sum(薪水) from 部门表 where 职位=”经理“;
    c. 从部门表里查询员工的平均水平
    部门所有人平均薪水
    select avg(薪水) from 部门表
    查询部门表里客服员工平均薪水
    select avg(薪水) from 部门表 where 部门=”客服“;
    d 从部门表里查询员工的 薪水max()最多 薪水min()最少
    查询部门表里客服员工最多薪水
    select max(薪水) from 部门表
    查询部门表里客服员工最多薪水
    select max(薪水) from 部门表 where 部门=”客服“;

    查询部门表里客服员工最少薪水
    select min(薪水) from 部门表
    查询部门表里客服员工最多薪水
    select min(薪水) from 部门表 where 部门=”客服“;
    4.分组 group by....[having] 与我们上面的分组函数一起使用;having只能配合group by 一起使用
    统计各部门总人数
    select 部门(这里是为了配合显示更直观) count(*) from 部门表 group by 部门;
    统计各部门总人数,但是人数少于4人不显示
    select 部门(这里是为了配合显示更直观) count(*) from 部门表 group by 部门 having count(*)>3;
    5.表连接查询 遵循99标准连接查询
    A. inner join 内连接查询 select ... from 表1 inner join 表2 on 连接条件 [where];
    表的主从关系和约束,例如一个员工信息表里员工所在的部门都是编号,而另一张部门信息表里存有部门编号、名称等信息。员工信息表里部门编号必须和部门信息表里部
    门编号是一致的。否则的话连接报错。这里的部门信息表是主键 员工信息表是外键
    如从员工信息表里查找员工的编号 名称 薪水 部门的名称而不是显示员工的编号。查询方式如下
    select 编号,名称,薪水,部门名称(部门信息表里的字段) from 员工信息表 inner join 部门信息表 on 员工信息表.部门编号=部门信息表.部门编号;
    从员工信息表里查找员工的编号 名称 薪水大于3000 部门的名称而不是显示员工的编号
    select 编号,名称,薪水,部门名称(部门信息表里的字段) from 员工信息表 inner join 部门信息表 on 员工信息表.部门编号=部门信息表.部门编号 where 薪水>3000;
    从员工信息表里查找员工的编号 名称 薪水大于3000 部门的名称而不是显示员工的编号,在排序;
    select 编号,名称,薪水,部门名称(部门信息表里的字段) from 员工信息表 inner join 部门信息表 on 员工信息表.部门编号=部门信息表.部门编号
    where 薪水>3000 order by 薪水;
    B. left/right join 外连接查询 select ... from 表1 left/righ 表2 on 连接条件 [where];
    例如一个员工信息表里员工所在的部门都是编号,而另一张部门信息表里存有部门编号、名称等信息。员工信息表里部门编号必须和部门信息表里部门编号是一致的
    但是部门表里有一部分编号的信息员工信息表是没有用到的。
    如要从员工信息表里查找员工的编号 名称 薪水 部门的名称而不是显示员工的编号,并且没有员工的部门名称也要显示出来查询方式如下;
    select 编号,名称,薪水,部门名称(部门信息表里的字段) from 员工信息表 rigth join 部门信息表 on 员工信息表.部门编号=部门信息表.部门编号;
    ”“”上面的rigth join 后面的是主表。因为我们要显示所有部门名称,而员工信息里没有使用全部部门,所以部门信息表示作为主表来连接的。left join所不
    同的是在left 前面是做为主表的。区别只是主表的位置不同,其它的都是一样的
  • 相关阅读:
    IP查询网和traceroute找到的网络出口不一致的原因
    [转载] 深入理解VMware虚拟机网络通信原理
    https工作流程
    HTTP1.1协议-RFC2616-中文版
    条件变量调用Signal的时候是否需要持有mutex
    HTTP Get一定是幂等的吗,统计访问量的时候呢?
    unix网络编程
    MySQL-SQL基础-DCL
    MySQL-SQL基础-查询1
    MySQL-SQL基础-子查询
  • 原文地址:https://www.cnblogs.com/Centwei/p/15484031.html
Copyright © 2011-2022 走看看