• MYSQL基础总结


    在公司一只在使用MYSQL数据库,简单的使用一些命令,但是很少有总结,用的时候采取查,现在刚还好有时间总结下:

    一、SQL分类

    主要可以分为三个类别:

    DDL(Data Definition Language):数据定义语句,操作不同的数据段,数据库,表,列,索引等数据库对象

    DML(Data Manipulation Language):数据操作语句,增删改查数据库记录

    DCL(Data Comntrol Language):数据控制语句,控制访问权限

    二、DDL语句

    1.创建数据库

    CREATE DATABASE dbname;

    查看数据库

    SHOW DATABASES;

    切换数据库

    USE DATABASES;

    2.删除数据库

    DROP DATABASE dbname;

    3.创建表

    CREATE TABLE tablename(
    column_name_1 column_type_1 constraints,
    column_name_2 column_type_2 constraints,
    ...
    column_name_n column_type_n constraints,
    )

    mysql的表名是以目录的形式存在于磁盘上的,所以表名的字符可以是以任何目录名允许的字符,column_name:列名,column_type:列的数据类型,constraints列的约束条件。

    查看表的定义

    DESC tablename

    查看创建表的SQL语句

    SHOW CREATE table tablename G
    可以看到除了表的定义外,可以看到engine(存储引擎)和charset(字符集)
    G使记录能够按照字段竖向排列

    4.删除表

    DROP TABLE tablename;

    5.修改表

    对于已经创建好的表,而且表中已经有大量的数据,不建议删除表,再重新创建表,第一涉及到数据的重新加载,第二如果有服务访问表,也会影响服务,建议使用alter table语句
    1.修改表类型
    ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST|AFTER col_name]
    eg:修改表emp的name字段,将varchar(10)改为varchar(20)
    alter table emp modify name varchar(20)
    2.增加表字段
    ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST|AFTER col_name]
    eg:alter table emp add column age int(3)
    3.删除表字段
    ALTER TABLE tablename DROP [COLUMN] col_name
    eg:alter table emp drop column age;
    4.字段改名
    ALTER TABLE tablename CHANGE [column] old_name column_definition  [FIRST|AFTER col_name]
    eg:alter table emp change age age_new int(4)
    注意:change和modify都可以修改表的定义,不同的是change后面需要写两次列名,不方便,但是change的优点是可以修改列名,modify则不能
    5.修改字段的排列顺序
    ADD增加的字段默认是加在表的最后位置,而CHANGE/MODIFY默认都不会改变列的位置,可以使用first|after col_name改变列的位置
    eg:alter table emp add birtch date after name;    alter table emp  modify age int(3) first;
    6.更改表名
    ALTER TABLE tablename RENAME [TO] new_tablename; 

     三、DML语句

    对表记录的操作(增insert删delete改update查select)

    1.插入记录

    INSERT INTO tablename(field1,field2,field3,...fieldn) VALUES (value1,value2,value3,...valuen)
    1.也可以不用指定字段名称,但是values的值要和字段顺序一致
    2.含可空字段,非空字段但是含有默认值的字段,自增字段,可以不用insert后的字段列表里面出现,values后面只写对应字段名称的value,这些没写的字段可以设置为NULL,默认值,自增的下一个数字,可以缩短SQL语句的复杂性
    eg:insert into emp (name,sal) values ('chenxi',100000),其他都是默认值
    3.可以一次性插入多条记录
    insert into emp values(xx,xx,xx),
    (xx,xx,xx),
    ...
    (xx,xx,xx);

    2.更新记录

    UPDATE tablename SET field1=value1,field2=value2,...,fieldn=valuen[WHERE CONDITION]
    eg;update emp set sal=4000 where name='chenxi'
    可以同时更新多个表的字段

    3.删除记录

    DELETE FROM tablename [WHERE CONDITION]

    注意:不管是单表,还是多表,不加where条件将会把表的所有记录删除

     4.查询记录

    1.查询不重复记录
    SELECT DISTINCT deptno from emp;
    2.条件查询
    SELECT * from emp where deptno=1;
    3.排序和限制
    SELCT * FROM tablename [WHERE CONTINON] [ORDER BY field [DESC|ASC],field2[DESC|ASC],...fieldn[DESC|ASC]
    4.限制条数
    SELCT ... [LIMIT offset_start,row_count],其中offset_start表示记录的起始偏移量,row_count表示显示的行数
    默认情况下,起始偏移量为0,只要记录行数就可以,这是,实际显示的就是前n条记录。
    如果要显示emp表emp表按照sal排序后从第二条记录开始的3条记录,可以使用使用一下命令:
    SELECT * FROM emp ORDER BY sal limit 1,3;
    5.聚合
    SELECT [fieldq,field2,field3,..,fieldn] fun_name
    FROM tablename
    [WHERE where_condition]
    [GREOUP BY field1,field2,...,fieldn]
    [WITH ROLLUP]
    [HAVING where_conditions]
    fun_name:聚合函数
    GROUP BY:分类聚合的字段
    WITH ROLLUP:表明是否对分类聚合后的再汇总
    HAVING:表示对分类后的结果再进行条件过滤
    6.表连接
    内连接,左连接,右连接
    内连接:inner join 选出两张表中相互匹配的记录
    左连接:left outer join 选出所有左表中的记录和和左表匹配的右表的记录
    右连接:left outer join 选出所有右表中的记录和右表匹配的左表的记录
    7.子查询
    某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候就用到子查询。关键字in,not in,=,!=,exists,not exists
    8.记录联合
    UNION ALL,UNION,区别UNION去重 

     四、DCL语句

    待补充

  • 相关阅读:
    00 学习资源整理
    07 MySQL的应用层调整,查询缓存设置,内存管理设置,并发参数的设置常识
    06 SQL语句编写优化
    05 Java的ReentrantLock与线程的顺序控制
    05 索引的使用常识(如何编写SQL语句避免索引失效)
    04 MYSQ的SQL优化需要了解的工具explain,profile,trace
    04 JAVA中park/unpark的原理以及JAVA在API层面线程状态总结
    03 MYSQL的体系结构以及存储引擎的基本知识
    02 链表编程题
    01 栈与队列
  • 原文地址:https://www.cnblogs.com/lijingang/p/10538081.html
Copyright © 2020-2023  润新知