为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
与MySQL的零距离接触_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

与MySQL的零距离接触

平然 学生
难度入门
时长 8小时29分
  • https://img1.sycdn.imooc.com//5aed22330001e8a105530661.jpg

    https://img1.sycdn.imooc.com//5aed22340001506f06040662.jpg


    查看全部
  • 对数据库的操作分为:

    写操作:增删改

    读操作:查

    查看准备数据 

    (1)SELECT * FROM tdb_goods\G; // 网格形式输出查询结果

    (2)由于存储时使用的编码方式为utf-8格式;客户端默认的为GBK格式,所以

    需要使用 SET NAMES GBK; 设置读取信息的编码格式。(存储数据的属性没有不变化)

    解决乱码的问题:

    1.show variables like "%char%";

    类似set character_set_results=utf8;,能改的都改为uft8

    2.在要创建的表后加ENGINE=InnoDB DEFAULT CHARSET=utf8;

    解决乱码的问题:


    ----------------------------------------------------------------------------------------------------------------------------------------


    1.MySQL中默认字符集的设置有四级:服务器级,数据库级,表级。最终是字段级的字符集设置。注意前三种均为默认设置,并不代表你的字段最终会使用这个字符集设置。可以通过how create table table;或show full fields from tableName;来检查当前表中字段的字符集设置。

    2.表创建后,再修改字段的字符集设置不影响已经插入的数据.

    所以才会出在查看字段时出现中文乱码.此时就只能用:set NAMES‘utf8/gbk(用字段插入是所用的相应代码,且这个命令行并不影响服务器端数据)来查看中文内容 

    当数据库和数据表的编码不一样时,可能插入中文会出现乱码!排插步骤如下:(以utf8为例)

    第一步:SHOW CREATE DATABASE XXXX;(我的是SHOW CREATE DATABASE test;)

    查看你创建的数据库是否是:DEFAULT CHARACTER SET utf8

    第二步:show create table xxxx

    查看你创建的数据表是否是DEFAULT CHARSET=UTF8

    第三步:

    打开my.ini

    在[client]节点下添加

           default-character-set=utf8

        在[mysqld]节点下添加

           character-set-server=utf8

          collation-server=utf8_general_ci保存,重启mysql!

    再 mysql>show variables like 'char%';查看是否是下面一样:

    |character_set_client|utf8 

    |character_set_connection|utf8 

    |character_set_database|utf8 

    |character_set_filesystem|binary

    |character_set_results|utf8 

    |character_set_server|utf8 

    |character_set_system|utf8 

    |character_sets_dir|/opt/mysql-cluster/share/mysql/charsets/

    按以上步骤执行后,重新创建数据库imooc和表tdb_goods,就可以插入中文了!


    查看全部
    1 采集 收起 来源:数据准备

    2018-05-04

  • 本章小结

    查看全部
    0 采集 收起 来源:小结

    2018-05-04

  • 限制查询结果返回的数量      LIMIT


    [LIMIT{[offset,]row_count|row_count OFFSET offset}]


    查询效果一:select * from 表名 limit n条数(这里的条数指的是从第一条开始返回n条记录)


    查询效果二:select * from 表名 limit index   n条数(这里的index指的是从下脚标的记录数开始返回,返回n条。下脚标的0对应记录的第一条,这种情况只用于升序


    如:index=3  ;n=4,则返回第4条记录到第6条记录  就是index+1到index+n之间的记录 


    公式:要3-7的记录就是index-1的数到n-(index-1)的数   就是3-1=2;;7-(3-1)=4----2、5)


    查询效果三(查询表并插入新表):


    注:如果插入时要注意你查询的表要插入几个字段,如只有一个字段,那么你查询出来的结果集也必须为一个字段。)


    中文注解:要插入什么表的那个字段  {insert 表名(字段名) }  数据来源要查询什么字段  {select 字段} 字段来自哪个表{ from 表名}     查找符合的条件数据     {where 字段>某数} ;


    insert users2(name) select users  from name where=xxx; 


           分页:php+mysql分页显示数据就利用了这个原理,offest为结果集起始下标,注意,下标从0开始,每页显示的数据的起始下标为(当前页数-1)*每页显示的数据数。


    查看全部
  • 对记录的排序   ORDER BY 


    [order by{col_name(列名)|position(列位置)} [ASC(默认升序)|DESC降序],...]


    记录排列:select *from 表   这个的排序是使用插入记录的顺序排的


    单字段降序排列: select * from 表名  order by  字段名  desc;


    (降序:是经典的从大到小的排序)


    多字段排序:select * from 表名  order by  字段名,字段名 desc;


    (当单字段无法满足于排序选择时才使用,当单个字段后面没设置排序时,是默认排序的使用。规则是先按前面的字段排,在基础上再按后面字段排。)


    查看全部
  • 对分组结果进行过滤    HAVING


    1)HAVING可以单独使用而不和GROUP BY配合,如果只有HAVING子句而没有GROUP BY,表中所有的行分为一组


    2)HAVING子句中可以使用组函数


    3)HAVING子句中的列,要么出现在一个组函数中,要么出现在GROUP BY子句中(否则出错){就是在having字句之前必须出现过这个字段}





    AVG([distinct] expr)


    求平均值


    COUNT({*|[distinct] } expr)


    统计行的数量


    MAX([distinct] expr)


    求最大值


    MIN([distinct] expr)


    求最小值


    SUM([distinct] expr)


    求累加和


    ①每个组函数接收一个参数


      ②默认情况下,组函数忽略列值为null的行,不参与计算


      ③有时,会使用关键字distinct剔除字段值重复的条数


    注意:


      1)当使用组函数的select语句中没有group by子句时,中间结果集中的所有行自动形成一组,然后计算组函数;


      2)组函数不允许嵌套,例如:count(max(…));


      3)组函数的参数可以是列或是函数表达式;


      4)一个SELECT子句中可出现多个聚集函数


    查看全部
  • 查询结果分组: group by


    1.除了查询结果加where条件外 还可以对其分组:

    查询结果分组:

    [group by{col_name(列名)|position(列位置)} [ASC(默认)|DESC],...]


    2.语法:select 字段 from 表名 group by 对应的字段(这里可以写字段也可以写数字,但是数字时表示的是字段的位数,但一般不建议使用数字进行表示)


    查看全部
  • where 条件表达式:

    where 后各种根据条件(>、<、=、>=、<=、!=、<>、IS NOT NULL),根据逻辑(and,or),根据结合方式left join、right join等,

    根据模式匹配(IN、NOT IN、like、not like、regexp),使用各种MySQL函数和表达式,从表集合中筛选记录。


    查看全部
  • 查询表达式     select_expr

    (1)单表查询:select (【一、这里可以选择全部的字段如  show  columns 】,【二、也可以选择多个字段来显示如id,name;当然显示数据表的先后和字段的位置一样】) from 表名;

    (2)多表查询一:select  表1.表1的字段,表2表2的字段  from 主表

    (3)影响字符集:一个是查询的字段的先后,一个是使用AS取的别名。

    注:一般情况下建议使用别名,因为当别名和数据表中的真实字段重复时,系统将把真实字段判断为别名并且使用

    https://img1.sycdn.imooc.com//5aec6cde0001ce6a12800720.jpg

    https://img1.sycdn.imooc.com//5aec6ce00001065412800720.jpg


    查看全部
  • 删除记录、(单表删除)DELETE


    (1)、DELETE FROM table_name [WHERE where_condition] 不指定条件,则该表全部记录被删除


    当删除某一条记录再添加一条新记录的时候,序号为原有最大序号+1<br>

    例:DELETE FROM users ;<br>

    DELETE FROM users WHERE id=1;

    查看全部
  • 更新记录(单表更新) UPDATE      用于更改错误的记录值


    (1)、UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={exp1|DEFAULT}[,col_name2={exp1|DEFAULT}]........[WHERE where_condition]


    【一般来说要用WHERE指定位置,不然所有数据都会被更新】


    例1:UPDATE users SET age=age+5;(就是在age的字段里所有记录加上5)------------------------就是说省略了所有条件会更新所有的数据,而这是更新一列的例子


    例2:UPDATE users SET age=age-id ,sex=0;(就是对应的age那行记录会减去对应的id记录,而sex所有记录变成0)        这是更新多列的例子。


    例3:UPDATE users SET age=age+10 where id %2=0 ;(当id为偶数时所有的age加上10,这时就用了where条件表达式)    这是条件选择的例子;


    查看全部
  • 插入记录的二种方法:  insert  ....set.....

    (1)、INSERT [INTO] table_name [(column_name,...)] VALUES ({exprDEFAULT},...),(...),...;

    注:与第一种方法的区别在于可以用子查询(SubQuery).

        另外一个区别在于,此方式一次性只能插入一条记录

    insert users set username = "daneil",password = "123343"; 用法

    插入记录的三种方法:  insert  ....select.....

    (1)、INSERT[INTO] table_name [(column_name,....)]SELECT......

    注:这种方法是将查找的结果插入指定的数据表中。

    查看全部
  • 第一种插入记录方法   insert.....values..... 

    INSERT [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT}, ...), (...), ...

    (1)当省略字段进行赋值时(中括号里面的都可以省略),遇到auto_increment字段赋值,可以用null,或者default.

    如:instre 当前的表  values (null(自动编号的字段),xx,xx,xx);

    (2)单个数值也可以用函数进行赋值,如xx*xx-xx,系统会自动赋予运算的结果  如:select 8*9;

    (3)default 除了对自动编号使用也可以对有默认约束的使用

     ( 4 )当不指定字段进行赋值时可以在第一段赋值后用,隔开进行第二次赋值。(一次性插入多条记录)

    (5)md5(”xxx”)是hmtl里函数,用法是把一个字符串转换成哈希码

    查看全部
  • 数据库小结

    查看全部
    0 采集 收起 来源:小结

    2018-05-04

  • SHOW COLUMUS FROM tb1;

    查看全部

举报

0/150
提交
取消
课程须知
要想学习本课程,你只需要知道数据库是个什么东东就足够了,是不是很easy?!
老师告诉你能学到什么?
1、MySQL安装与配置 2、数据类型 3、流程控制与运算符 4、DDL、DCL、DQL、DML 5、常用函数 6、表类型(存储引擎) 7、图形化工具
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!