MySQL知识计算

作者: 数据库信息  发布:2019-07-18

1.MySQL数据库
    MySQL是一种关周全据库管理连串,关周详据库将数据保存在区别的表中,进而扩张了快慢并加强了灵活性。
    MySQL所选择的 SQL 语言是用来访谈数据库的最常用典型语言,由于其容积小、速度快、总体拥有花费低,特别是开放源码这一特色,一般中
  Mini网址的支出都选用 MySQL 作为网站数据库,搭配 PHP 和 Apache 可构成特出的开荒条件。
2.MySQL存款和储蓄格局
    一台数据库服务器中会成立很好些个据库,在数据库中会创制比非常多张表,在表中会有过多笔录。
3.SQL结构化查询语言
     SQL是高级的非进程化编制程序语言,是一种数据库查询和顺序设计语言,用于存取数据以及查询、更新和保管关周密据库系统;同一时间也是数据库脚
  本文件的恢宏名,能够嵌套,具备一点都不小的灵活性和有力的效果。
4.SQL语言的分类
    (1)DDL(数据定义语言)
    (2)DML(数据操作语言)
    (3)DCL(数据调节语言)
    (4)DQL(数据查询语言)
5.MySQL数据库的始建、修改和删除
    (1)创造数据库
        语法: create database 数据库名称 [character set 字符集 collate 字符集查对法规](一般忽略);
    (2)查看数据库
      查看全部数据库:
        语法: show databases;
      查看某些数据库:
        语法: show create database 数据库名称;
    (3)修改数据库:
        语法:alter database 数据库名称 [character set 字符集 collate 字符集核查准绳](一般忽略);
    (4)删除数据库:
        语法:drop database 数据库名称;
    (5)使用依然切换数据库:
        语法:use 数据库名称;
6.MySQL表的始建、修改和删除
    (1)创建表
        语法:create table 表名(
            数据名称 数据类型(长度) 约束,
            .......
        );
        注:括号内的语句用逗号实行频仍开立,最后的语句不加任何标点符号
        数据类型:(MySQL所对应的Java类型)
         Java中的类型                        MySQL中的类型
            byte/short/int/long             tinyint/smallint/int/bigint
            float                            float
            double                            ouble
            boolean                            bit
            char/String                        char和varchar类型
                                             char和varchar的区别:
                                              char代表是一向长度的字符或字符串。
                                               定义类型char(8),向这么些字段存入字符串hello,那么数据库使用八个空格将其补全。
                                              varchar代表的是可变长度的字符串。
                                               定义类型varchar(8), 向那一个字段存入字符串hello,那么存入到数据库的便是hello。
            Date                            date/time/datetime/timestamp
                                             datetime和timestamp区别
                                              datetime便是既有日期又有的时候间的日子类型,若无向那几个字段中存值,数据库使用null存入
                                              到数据库中
                                              timestamp也是既有日期又不常光的日子类型,若无向那一个字段中存值,数据库使用当前的
                                              系统时间存入到数据库中。
            File                            BLOB/TEXT
        约束:
          约束效劳:保险数据的完整性
          单表约束:
            主键约束:primary key (主键约束暗中认可正是独一 非空的)
            独一约束:unique
            非空约束:not null
    (2)查看表
        查看一个数据库下的具备的表:
          语法:show tables;
        查看单独二个表:
          语法:desc 表名;
    (3)删除表
          语法:drop table 表名;
    (4)修改表
        增添列:
          语法: alter table 表名 add 列名 数据类型(长度) 约束;
        修改列类型,长度和封锁:
          语法: alter table 表名 modify 列名 数据类型(长度) 约束;
        删除列:
          语法: alter table 表名 drop 列名;
        修改列名称:
          语法: alter table 表名 change 旧列名 新列名 数据类型(长度) 约束;
        修改表名:
          语法: rename table 表名 to 新的表名;
        修改表的字符集:
          语法: alter table 表名 character set 字符集;
7.MySQL数目标增加和删除改查
    (1)增多表记录
        向表中插入某个列:
          语法: insert into 表名 (列名1,列名2,列名3…) values (值1,值2,值3…);
        向表中插入全数列:
          语法: insert into 表名 values (值1,值2,值3…);
      注意:
        1.值的门类与数据库中表列的门类一致;
        2.值的逐个与数据库中表列的逐个一致;
        3.值的最大尺寸不可能当先列设置最大尺寸;
        4.值的项目是字符串或然是日期类型,使用单引号引起来。
    (2)修改表记录
          语法: update 表名 set 列名=值,列名=值 [where 条件];
      注意:
        1.值的体系与列的品类一致;
        2.值的最大尺寸无法当先列设置的最大尺寸;
        3.字符串类型和日期类型加多单引号。
    (3)删除表记录
          语法: delete from 表名 [where 条件];(或许truncat from 表名;)<注:truncat删除表数据不可能恢复>
      注意:
        1.删除表的笔录,指的是去除表中的一行记录;
        2.刨除若无原则,私下认可是删除表中的具备记录。
    (4)查看表记录
          语法: select  *(可能列名) from 表 [条件];
8.MySQL化解向数据库中插入粤语记录会现身错误
    化解方法:
        供给将MySQL数据库服务器中的客户端部分的字符集改为gbk,找到MySQL的装置路线:my.ini文件,修改文件中[client]下的字符集,将
      [default-charaacter-set=ISO-8895-1]改成[default-charaacter-set=gbk],然后再重新起动MySQL的服务器。
9.按差别方法查看表记录
    (1)按标准查询:
        使用where 字句
         > ,< ,<= , >= , <> *不等 , =
        like:模糊查询 , in:范围 查询 ,  条件关联:and or not
        查询李四新闻: select * from 表名 where 列名[name = 李四] = '李四';
        查询李四信息何况意大利共和国语大于90: select * from 表名 where 列名[name = 李四] ='李四' and 列名[Englist]>90;
        在lik能够应用: _ , %  _唯其如此带表二个字符 %带表五个字符  * %王% 带表中间含有着个字就行
        查询姓李的学生音讯: select * from 表名 where name like '%李%'
        查询克罗地亚语成绩是69,75,89的学生: select * form 表名 where 列名[english] in (69 , 75 , 89);
    (2)查询排序:
        使用order by 字段名称 asc/desc; *暗许是用asc , 倒序desc;
        查询学生新闻按成绩排: selech * from order by 列名[english];
        查询学生成绩按倒序: selech * from order by 列名[english] desc;
        查询学生按语文成绩倒序再按克罗地亚语升序排列: select * from order by  列名[chinese] desc, 列名[english] asc;
        查询姓李的上学的儿童,意大利语按倒序排列: select * from 表名 where 列名[name] like '李%' order by 列名[english] desc;
    (3)分组总计查询:
        聚合函数:
          sum(); 获得总额: count();*个数;  最大值:max() 最小值:min() 平均值:avg;
            获得全数战绩的和: select sum(exam)from 表名;
          count();
            获得全体的计数: select count(*) from 表名;
          max()/min();
            获得某门考试的最大和纤维战绩: select max(math) from 表名;/select min(math) from 表名;
          avg()
            获得平平均数量:select avg(chinese) from 表名;
        分组查询
          语法:使用group by 字段名称;
           按商品名称总结,每类商品所开支的总金额:select product,sum(price) from orderitem group by product;
         注意:
            where的子句后边不能够随着聚合函数。倘使今天应用含有聚合函数的尺度过滤(分组后条件过滤)必要使用四个第一字HAVING;
            例:select product,sum(price) from orderitem  group by product having sum(price) > 5000 order by sum(price) asc;
10.单表查询的实践顺序流程
    select ... from ... where ...  group by ... having ...order by ...;
11.多表查询
      表与表之间的关联-外键
        功能:保险多张表之间的数据若是有关联,则关乎的数量的完整性。
      设计与建表原则
        一对多:将外键设置在多的一方,指向一的主键
        多对多:必须有第三张表,这张表中最少会有七个字段作为外键,指向多对多的两张表的主键
        一对一:独一外键约束
                主键对应:
                  实质便是成立外键况兼让这几个外键独一。
      查询:
        希图条件:多表深入分析成立
        连接查询:关联条件正是外键
            内连接:交集, select * from 表1, 表2 where 条件
            左外连接:左表的数量和混合数据
                select * from 表1 left join 表2 on 条件
            右外接连:右表的数额和交集数据
                select * from 表1 right join 表2 on 条件
        子查询
12.分页询问
    select * from 表名 limit begin, length  :begin 从0开始,表示索引;length:表示查询多少条记下
    select * from 表名 limit number; 从第一条数据起初,总共查询number条数据。
13.MySQL常见bug
     select * from 表名 where score = '80abc' 实质就是:SELECT * FROM stu where score = 80, 会将无法转化为数值的字符扬弃
     select * from 表名 where NAME = 'abC' :MySQL查询的时候不区分轻重缓急写      
        消除办法:
            select * from stu where BINARY NAME = 'Abc'

1.2 使用SQL

1.3.3 SQL查看表的记录(敲黑板啦)

  • 着力查询
    • 语法:select [distinct] *|列名 from 表 [条件];
    • 条件的准备:
create table exam(
    id int primary key auto_increment,
    name varchar(20),
    english int,
    chinese int,
    math    int
);

insert into exam values (null,'张三',85,74,91);
insert into exam values (null,'李四',95,90,83);
insert into exam values (null,'王五',85,84,59);
insert into exam values (null,'赵六',75,79,76);
insert into exam values (null,'田七',69,63,98);
insert into exam values (null,'李老八',89,90,83);
  • 询问全体学员考试成绩新闻

    • select * from exam;

    • 图片 1

      询问全数学生考试成绩新闻.png

  • 查询全部学生的真名和英文成绩

    • select name,english from exam;

    • 图片 2

      询问全数学员的全名和塞尔维亚语成绩.png

  • 询问罗马尼亚(România)语成绩音讯(不显得重复的值)

    • select distinct english from exam;

    -

    图片 3

    询问保加利亚语成绩音信(不显得重复的值).png

  • 翻开学生姓名和学员的总成绩

    • select name,english chinese math from exam;

    • 图片 4

      查阅学生姓名和学员的总成绩.png

  • 外号询问

    • select name,english chinese math as sum from exam;

    • 图片 5

      别称查询.png

  • 基准查询

    • 使用where子句
      • , < , >= , <= , <> ,=
        • like:模糊查询
        • in:范围查询
        • 规格关联:and , or ,not
  • 询问李四学生的大成:

    • select * from exam where name = '李四';

    • 图片 6

      询问李四学生的战表.png

  • 询问名称为李四学生何况匈牙利语大于90分

    • select * from exam where name = '李四' and english > 90;

    • 图片 7

      查询名叫李四学生何况捷克语大于90分.png

  • 查询姓李的学习者的消息

  like能够开展模糊查询,在like子句中能够动用只怕%作为占位符。只可以表示一个字符,而%能够表示私自个字符。

  • like ‘李_’ :名字中务必是三个字,况且是姓李的。
  • like ‘李%’ :名字中姓李的学员,李子后得以是1个或专擅个字符。
  • like ‘%四’ :名字中以四结尾的。
  • like ‘%王%’ :只要名称中涵盖这几个字就能够。
  • select * from exam where name like '李%';

  • 图片 8

    查询姓李的上学的小孩子的新闻.png

  • 查询西班牙语战绩是69,75,89学员的新闻

    • select * from exam where english in (69,75,89);

    • 图片 9

      询问菲律宾语成绩是69,75,89学员的新闻.png

  • 排序查询

    • 选择order by 字段名称 asc/desc;
  • 查询学生新闻,并且根据语文成绩举办排序:

    • select * from exam order by chinese;

    • 图片 10

      询问学生消息.png

  • 询问学生消息,况兼依据语文成绩倒序排序:

    • select * from exam order by chinese desc;

    • 图片 11

      语文战表倒序排序.png

  • 查询姓李的学员的新闻,遵照西班牙语战表降序排序

    • select * from exam where name like '李%' order by english desc;

    • 图片 12

      服从意国语成绩降序排序.png

  • 分组计算查询
  • 聚合函数使用
  • sum();
  • 收获具备学员的英文战表的总量:

    • select sum(english) from exam;

    • 图片 13

      得到具有学生的阿尔巴尼亚语战绩的总和.png

  • 收获具备学员的匈牙利(Hungary)语成绩和数学战表总和:

    • select sum(english),sum(math) from exam;

    • 图片 14

      获得具备学生的英文成绩和数学成绩总和.png

  • 询问姓李的学员的德语成绩的总和

    • select sum(english) from exam where name like '李%';

    • 图片 15

      询问姓李的学生的保加多哥洛美语战绩的总和.png

  • 查询全部学生各科的总战表:

    • select sum(english) sum(chinese) sum(math) from exam;

    • 图片 16

      询问全数学员各科的总成绩.png

  • select sum(english chinese math) from exam;
  • 与地点的语句有何差异?

    • 地点的口舌是依据列的不二秘诀总计,日文成绩总和 语文战绩总和 数学战表总和。

    • 下边包车型大巴语句先总计藏语 数学 语文然后再求和。

    • 使用ifnull的函数

      • 图片 17

        使用ifnull的函数.png

  • count();
  • 获得学生的总量

    • select count(*) from exam;

    • 图片 18

      获取学生的总数.png

- 获得姓李的学生的个数
- select count(*) from exam where name like '李%';

- ![获得姓李的学生的个数.png](https://upload-images.jianshu.io/upload_images/7034348-5c912ccafba8509f.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)
  • max();

    • 取得数学成就的最高分:

      • select max(math) from exam;

      • 图片 19

        得到数学战表的万丈分.png

  • min();

    • 收获语文成绩的最小值

      • select min(chinese) from exam;

      • 图片 20

        获得语文成绩的纤维值.png

  • avg();

    • 赢得语文成绩的平均值

      • select avg(chinese) from exam;

      • 图片 21

        收获语文战表的平分值.png

  • 分组查询
    • 语法:使用group by 字段名称;
    • 条件准备
create table orderitem(
    id int primary key auto_increment,
    product varchar(20),
    price double
);
insert into orderitem values (null,'电视机',2999);
insert into orderitem values (null,'电视机',2999);
insert into orderitem values (null,'洗衣机',1000);
insert into orderitem values (null,'洗衣机',1000);
insert into orderitem values (null,'洗衣机',1000);
insert into orderitem values (null,'冰箱',3999);
insert into orderitem values (null,'冰箱',3999);
insert into orderitem values (null,'空调',1999);
  • 按商品名称总计,每类商品所购买的个数:

    • select product,count(*) from orderitem group by product;

    • 图片 22

      每类货品所购买的个数.png

  • 按商品名称总结,每类商品所开销的总金额:

    • select product,sum(price) from orderitem group by product;

    • 图片 23

      每类商品所花费的总金额.png

  • 按商品名称总括,总结每类物品消费的总金额在5000元之上的商品

  where的子句前面不能够随着聚合函数。假若明天应用含有聚合函数的条件过滤(分组后条件过滤)须求使用三个重大字having

  • select product,sum(price) from orderitem group by product having sum(price) > 5000;

    • 统计每类商品花费的总金额在5000元以上的商品.png
  • 按商品名称总括,总结每类物品花费的总金额在四千元之上的物品,并且依照总金额升序排序

    • select product,sum(price) from orderitem group by product having sum(price) > 5000 order by sum(price) asc;

    -

    图片 24

    同一时候依据总金额升序排序.png

  • 总结
    • S(select)… F(from)…W(where)…G(group by)…H(having)…O(order by);

1.1.2 SQL的分类

  • DDL:数据定义语言
    • create,drop,alter..
  • DCL:数据调整语言
    • grant,if…
  • DML:数据操纵语言
    • insert,update,delete…
  • DQL:数据查询语言
    • select

1.1 SQL的概念

1.1.1 什么是SQL

  SQL(聆听i/ˈɛs kjuː ˈɛl/,[4] or 聆听i/ˈsiːkwəl/;[5]结构化查询语言[6][7][8][9])是一种特定指标程序语言,用于管理关周到据库管理连串(本田CR-VDBMS),或在事关流多少管理系列(LANDDSMS)中张开流管理。

  SQL基于关系代数和元组关系演算,包含一个数据定义语言和数目垄断语言。SQL的限定包蕴数据插入、查询、更新和删除,数据库方式创立和改变,以及数额访谈调节。固然SQL平日被描述为,并且比比较大程度上是一种注明式编制程序(4GL),不过其也包含进程式编制程序的要素。

  SQL是对Edgar·科德的关系模型的率先个商业化语言达成,这一模子在其一九六八年的一篇具备影响力的诗歌《贰个对于大型分享型数据库的关联模型》[10]中被描述。就算SQL并不是全盘依据科德的关系模型设计,但其依旧成为最佳普遍应用的数据库语言。 [11][12]

  SQL在一九八三年成为United States国标学会(ANSI)的一项正式,在一九八七年形成国际典型化组织(ISO)标准。[13]在此之后,这一正规通过了一名目多数的增订,参预了大批量新特性。尽管有这一正经的留存,但超越八分之四的SQL代码在差别的数据库系统中并不具备完全的跨平台性。

  • 摘自 wiki

本文由金沙澳门官网发布于数据库信息,转载请注明出处:MySQL知识计算

关键词: 金沙澳门官网