美文网首页
mySQL学习笔记

mySQL学习笔记

作者: 1墨家巨子 | 来源:发表于2019-07-31 20:36 被阅读0次

    了解数据库

    数据库 (database   DB)

     表(table)  

    列(column):表中的一个字段(所有表都是一个或多个列组成的)

    字段别名: 原字段名  as   新别名

    数据类型(datatype)

    行(row):表中的一个记录

    主键:可以确定该行的唯一标识 (主键不允许NULL值)

    数据库分类:网络型数据库

                          层级型数据库

                          关系型数据库

    使用数据库(DDL数据定义语句)

    数据库登录:mysql -u root  (-h主机名loaclhost或IP地址)(-p端口号3306) -p密码

    使用数据库:use 库名;

    显示所有库:show databases;

    显示库内的所有表:show tables;

    显示特定创建的库或表:show create database 库名/table 表名

    创建库或表:create table/database[if not exists] 表名/库名

    创建表结构  create table 表名(

            字段名1 数据类型 [约束条件], …

            [其他约束条件], [其他约束条件]

            )其他选项(例如存储引擎、字符集等选项)

    显示错误:show erroys/warnings

    查看表结构:desc  表名

    新增加新的字段       alter table 表名 add 列名 类型(长度) 约束;

    修改指定列的属性   alter table 表名 modify 列名 类型(长度) 约束;

    修改指定列的名字   alter table 表名 change 原列名  新列名  类型(长度) 约束;

    删除字段    alter table 表名 drop 列名 类型(长度) 约束;

    数据操作语言(DML)

                (不影响表中的结构)

    增 insert语句: 插入所有字段内容  insert  into 表名  values  (相应的字段的内容列表)

                                 插入指定字段内容 insert into 表名(字段列表) values (相应的字段的内容列表)

    查 select语句:查询表中所有数据  select  *  from  表名

                                 查询表中某个字段的数据  select  字段列表  from  表名

    查询数据的基本语法: select  字段列表  from  表名  [where  条件]  group  by  字段  [ having  过滤分组]  orderby  asc/desc   limit  限制行数

    改 update语句:更新指定行的某个数据  update 表名 set 列名= 新值 where 列名 = 某值

    删 delete语句:delete from 表名 where 条件

    约束类型

    primary key  主键  表中某列的每一行的唯一标识   不能为空,

    foreign key  外键    外键为本表中的一个字段,不是本表的主键,但对应另一个表的主键。

    not null   非空约束  该字段数据不能为空

    unique    唯一键   该列唯一,允许为空,保证数据不重复

    check     检查

    default    设置默认值

    查看创建表语句   show   create   table

    特殊比较运算符

    between...and...查询两个值之间的范围。

    in(相应值列表)   查询要比较的值是否和集合列表中的任何一个值相等。

    like     在where子句中使用,可与%连用,用于搜素包含特定元素的行 

    is null 判断要比较的值是否为空

    通配符   

                  % 代表一个或任意更多个字符

                   _ 代表一个字符

    逻辑运算符

    与,或,非(not)

    order  by  子句

      order   by  asc/desc                      asc 升序排序(默认升序) desc 降序排序

      ORDER BY 子句必须写在SELECT语句的最后

    分组函数

    sum( ) 求和函数

    max( )求最大值

    min( )求最小值

    avg( )求平均值

    消除重复行的关键字Distinct

    在分组函数中使用IFNULL函数 IFNULL 函数可以使分组函数强制包含含有空值的记录

    SELECT   AVG ( IFNULL(comm,0) )   FROM  emp;

    group  by    指定要分组的字段    having   过滤分组

    ORDER BY子句后列名可以用数字来代替,这个数字是SELECT语句后列的顺序号

    多表链接查询

    as   列别名与表别名

    联合查询   union    union   内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

    交叉连接    表1   cross  join   表2

     原理 1、 从第一张表依次取出每一条记录

               2、 取出每一条记录之后,与另外一张表的全部记录挨个匹配

                3、 没有任何匹配条件,所有的结果都会进行保留

                4、 行数 = 表1行数 * 表2行数;字段数 = 表1字段数 + 表2字段数(产生笛卡尔积)

    等值连接:获取两个表相同的字段

    自然连接:natural   join   连接两个具有相同数据类型和字段的表

    内连接:表1    inner  join   表2   on   匹配条件,从一张表中取出所有的记录去另外一张表中匹配

     原理 :1、 从第一张表中取出一条记录,然后去另外一张表中进行匹配

                   2、 利用匹配条件进行匹配:

                                                       2.1 匹配到:保留,继续向下匹配

                                                       2.2 匹配失败:向下继续,如果全表匹配失败,结束

    可以使用  using(字段)进行等值连接

    自连接:例:

                                  -- 查询每个员工 的姓名和直接上级姓名?

                                  -- SELECT e.emp_name,m.emp_name

                                  -- from emp e,emp m

                                  --where e.mgr = m.emp_no

     左外连接:   left   join   可读取左表中的全部数据,即便左表中没有可匹配的。

     右外连接:   right  join  可读取右表中的全部数据,即便左表中没有可匹配的。

     子查询:     子查询作为主查询的条件存在        

                                  单行运算符:>、=、>=、<、<>、<=

                                  多行运算符: IN、ANY、ALL

    单行子查询:返回单行单列

    多行子查询:返回单列多行

    多列子查询:返回多行多列




























    相关文章

      网友评论

          本文标题:mySQL学习笔记

          本文链接:https://www.haomeiwen.com/subject/banalctx.html