MySql数据库学习笔记整理

DDL       

1.mysql -uroot -p密码 【-h主机地址】            登录mysql系统
2.show databases;                           查看所有的数据库
3.exit;                                     退出mysql系统
4.mysqladmin -uroot -proot password 新密码        修改root用户的密码

DDL:只能操作数据库和表:库、表、列等;CREATE、ALTER、DROP
    1.create database 数据库名;             创建数据库(支持中文,不推荐)
    2.create database 数据库名 character set 编码;    创建指定编码的数据库
    3.show databases;                查询所有的数据库
    4.show create database 数据库名;         查询数据库创建细节
    5.alter database 数据名 character set 编码;      修改数据库编码
    6.drop database 数据库名;            删除某数据库
    7.select database();                显示当前使用的数据库
    8.use 数据库名;                    切换使用的数据库

创建表
    create table 表名(
        属性1 数据类型,
        属性2 数据类型,
        属性3 数据类型,
        ...
        属性n 数据类型
    );


 DML

    modify  是修改表中字段的长度或者数据类型   change 是修改表中的字段


      9.show tables;                                                                     显示当前数据库下的所有表
    10.desc 表名;                                                                        显示当前表的字段(结构)
    11.alter table 表名 add 字段名 数据类型;                          添加字段
    12.alter table 表名 modify 字段名 数据类型;                     修改字段长度或者数据类型
    13.alter table 表名 drop 字段名;                                          删除表中的某字段
    14.rename table 旧表名 to 新表名;                                     修改表名
    15.show create table 表名;                                                   查看表的创建细节
    16.alter table 表名 character set 编码;                                修改表的编码 
    17.alter table 表名 change 旧列名 新列名 数据类型;       修改表中的字段名
    18.drop table 表名;                                                                 删除某表

DML是对表中的数据进行增、删、改的操作。INSERT(添加) 、UPDATE(更新,修改)、 DELETE(删除)
    
添加数据语法: insert into 表名(字段1,字段2 ...)values (字段值1,字段值2...);

1.select * from 表名 查询当前表下的所有信息

修改数据语法:update 表名 set 字段1=字段值1,字段2=字段值2 ...WHERE 列名=值

删除数据语法格式1:delete from 表名 【where 字段=字段值】
删除数据语法格式2:truncate table stu;【不需要添加条件,它就是格式化】

delete:删除表中的数据,表结构还在;删除后的数据可以找回
truncate:删除是把表直接drop掉,然后再创建一个同样的新表。删除的数据不能找回。执行速度比delete快。


DQL

#有两个以上直接下属的员工信息
#1给mgr进行分组,统计出现mgr出现的次数             分组
select mgr '领导编号',count(*)'出现的次数' from emp group by(mgr);
#找到领导编号对应的领导姓名
select * from emp where empno in(select mgr '领导编号' from emp group by(mgr));
    
常用的数据类型
    数值类型
        bit(m)位类型  m指定位数 默认值1 范围1-64位

        tinyint[unsigned][zerofill] 带符号的范围是-128到127无符号0到255

        bool,boolean 使用0或1表示真或假

        float[m,d][unsigned][zerofill]m指定显示长度 d 指定小数位数

        bouble [m,d][unsigned][zerofill][decimal](m,d) 表示比float精度更大的小数

        char[size] char[20] 固定长度的字符串

        varchar(size) varchar(20)可变长度字符串

        blob  longblob 二进制数据

        text(clob)   longtext (longclob) 大文本

    
    删除表                     drop table 表名;
    dml 是对表中的数据进行增,删,改 的操作. 不要与DDL混淆了
    insert (添加)  update (更改,修改) delete (删除)
    插入 insert 
    语法 insert into 表名(列名1,列名2) values (列值1,列值2......)3   注意列名和列值要一一对应

    修改操作                     update 
    update 表名  set  列名1 = 列值1, 列名2 = 列值2 ...where 列名=值(where后跟条件)

    删除操作                     delete 
    语法  delete  from 表名 where 列名 值

    删除表中所有记录。
    Delete from stu;

    删除表中名字为陆超的记录。
    DELETE FROM stu WHERE name=’陆超’;

    使用truncate删除表中记录。
    TRUNCATE TABLE stu;

    DQL操作 数据查询语言数据库执行的SQL语句不会对数据进行改变,而是让数据库发送结果集给客户端 查询返回结果集是一张虚拟表
    条件查询    
        添加查询时就是在查询时给出where子句 在where子句中可以使用如下运算符及关键字
    · = ,!= ,<>(也是不等于的意思) < ,<=,> ,>=
    · between ...and :(在什么和什么之间)
    · is null  (等于空) is not null (不为空)
    · and  (和)
    · or (或者)    
    · not (不是)
    
    模糊查询    关键字like 
    _ 任意一个字符
    % 任意 0~n个字符
    字段控制查询
        distinct (去除重复)
        ifnull(1, 0) [如果是空的   就不相加]
    排序 
    older by 列名  (给哪一列排序)
    asc   (升序)
    desc(降序)
    select  * from 表名  olter by 列名  asc (升序)
    
    聚合函数
    聚合函数是用来做纵向运算的函数\    
    count()  统计指定列不为null的记录行数(纵向统计使用)
    max 计算指定列的最大值  如果指定列是字符串类型那么使用字符串排序运算
    min计算指定列的最小值  如果指定列是字符串类型那么使用字符串排序运算
    sum() 计算指定列的和 如果指定列不是数值类型,那么计算结果为    
    avg () 计算指定列的平均值 如果指定列类型不是数值类型那么结果为零
    分组查询 
    当需要分组查询需要使用group by 字句例如查询每个部门和 这说明要使用部门来分组
    凡和聚合函数同时出现的列名,一定要写在group by之后
        


    查询关键子 select 语法
        ①  select  setection_list   要查询列的名称
        ②  from table _list 要查询表的名称
        where  conditio  行条件
        group by grouping_columns 对结果进行分组
        having by sorting_columns 对结果排序
        limit offset_start,row_count 对结果限定

        update 表名 set 列名 1 = 列值1 ,列名2=列值2,.. where  列名=值 (条件  操作那个列)
    删除操作 delete
        delete from 表名 where 列名 =值
    使用truncate删除表中记录。
        truncate table stu;  
        delete  是删除表中的数据  但是表还在 数据能找回
        truncate 是直接把表给drop掉      然后在创建一个新表   数据不能找回   但是执行速度比delete快


    主键约束 : primary key
    
    唯一约束 : unique
    
    自动增长列 : auto_increment;
    
    非空约束 : not null
      
    默认值约束 defaule
    
    外键约束: foreign key
    
    多表查询有以下几种                
    合并结果集; union (去除重复). union all(不去除重复)  select * from ti union select * from 2;   (去除重复)
    连接查询             select * from ti union  all select * from 2;   (不去除重复)

        内连接 inner join  on (代替逗号  更加标准化  on 代替where)
        外连接接 outer join on (包括左外连接   left {outer} join   右外链接 right {outer} join )

    全外连接 (MySQL 不支持)
    自然连接 natural join(没有笛卡尔积的效果    )

    数据库备份

    在控制台使用mysqldump命令可以用来生成指定数据库的脚本文本 但是要注意脚本文本中指包含数据库的内容,而不会存在创建数据库的语句!所以在恢复数据是,还需要自己手动创建一个数据库之后再去恢复数据库    
    Windows10 不能直接把数据备份到C盘根目录,如果想放在    根目录下,cmd使用管理来运行,方便点,就直接把数据备份到桌面
    格式   mysqldump -u 数据库名 -p 数据库密码  数据库名  生成脚本的文件路径
    
        执行SQL脚本 恢复数据
    前提:必须先创建数据库名

    执行SQL脚本需要登录mysql,然后进入指定数据库,才可以执行SQL脚本!!!
    执行SQL脚本不只是用来恢复数据库,也可以在平时编写SQL脚本,然后使用执行SQL 脚本来操作数据库!大家都知道,在黑屏下编写SQL语句时,就算发现了错误,可能也不能修改了。所以我建议大家使用脚本文件来编写SQL代码,然后执行之!
                SOURCE C:\mydb1.sql

  注意,在执行脚本时需要先行核查当前数据库中的表是否与脚本文件中的语句有冲突!例如在脚本文件中存在create table a的语句,而当前数据库中已经存在了a表,那么就会出错!

        还可以通过下面的方式来执行脚本文件:
        mysql -uroot -p123 数据库名         mysql –u用户名 –p密码 数据库<要执行脚本文件路径
 
        这种方式无需登录mysql!

        注意:在CMD下 命令不能加;

    

你可能感兴趣的:(数据库学习笔记)