zoukankan      html  css  js  c++  java
  • MySQL基础(一)SQL基础

    DDL(Data Definition Languages)数据定义语言,常用关键字包括create、drop、alter等

    0.连接数据库
    $mysql -u root -p
    connection id 表示的是连接次数


    1.创建数据库

    CREATE DATABASE dnname

    2.默认的数据库
    information_schema:主要存储了系统中的一些数据库对象信息,如用户表信息、列信息、权限信息、字符集信息、分区信息等
    cluster:存储系统的集群信息
    mysql:存储了系统的用户权限信息
    test:系统自动创建的测试数据库,任何用户都可以使用

    3.选择数据库
    USE dbname

    4.删除数据库
    drop database dbname

    5.创建表
    CREATE TABLE tablename(
    column_name column_type constrains,
    column_name column_type constrains
    )

    6.查看表定义
    DESC tablename

    7.删除表
    DROP TABLE tablename

    8.修改表
    1)修改表字段类型
    ALTER TABLE tablename MODIFY[COLUMN] column_definition[FIRST|AFTER col_name]
    alter table student modify name varchar(20);
    2)增加表字段
    ALTER TABLE tablename ADD[COLUMN] column_definition[FIRST|AFTER col_name]
    alter table student add column age int(3);
    3)删除表字段
    AlTER TABLE tablename DROP[COLUMN] col_name
    alter table student drop column age;
    4)字段改名
    ALTER TABLE tablename CHANGE[COLUMN] old_col_name column_definition[FIRST|AFTER col_name]
    alter table student change age age1 int(4)
    注意:change 和modify都可以修改表的定义,不同的是change后面需要写两次列名,不方便。但是change的优点是可以修改列名称,modify则不能。
    5)修改字段排列顺序
    前面介绍的字段增加和修改语法(ADD/CHANGE/MODIFY)中,都有一个可选项first|after column_name,
    这个选项可以用来修改字段在表中的位置,ADD增加的新字段默认是加在表的最后位置,而CHANGE/MODIFY默认都不会改变字段的位置

    #将新增字段birth date 加在name 后
    alter table student add birth date after name;
    #修改字段age,将它放在最前
    alter table student modify age int(30 first;

    9.更改表名
    ALTER TABLE tablename RENAME [TO]
    new_tablename
    alter table student rename stu

    DML(Data Manipulation Languages)数据操纵语句,常用的关键字包括insert、delete、update等

    
    

     1.插入记录

    INSETR INTO tablename (field1,field2,...fieldn) VALUES (value1,value2,...value3);
    字段与value一 一对应,可空字段,非空但是含有默认值的字段,自增字段,可以不用再insert后面字段列表和values中填写;可以一次插入多条记录,每条记录之间用逗号隔开
    2.更新记录
    UPDATE tablename SET field1=value1,field2=value2,...fieldn=valuen WHERE [CONDITION]
    3.删除记录
    DELETE FROM tablename [WHERE
    CONDITION]
    4.查询记录
    SELECT * FROM tablename[WHERE CONDITION]
    1)查询不重复的记录
    select distionct name from student;
    2)条件查询
    select * from student where sid=1;
    3)排序和限制
    SELECT * FROM tablename[WHERE CONDITION] [ORDER BY field1 [DESC|ASC],field2 [DESC|ASC],..fieldn [DESC|ASC]]
    select * from student order by name; #默认ASC 升序

    LIMIT关键字显示部分记录
    SELECT * FROM tablename [LIMIT offset_start,row_count];
    offset_start 表示记录的起始偏移量,默认为0,所以可以直接写行数
    row_count 表示显示的行数

    4)聚合
    SELECT [field1,field2,...fieldn] fun_name
    FROM tablename
    [WHERE where_condition]
    [GROUP BY field1,field2,...fieldn]
    [WITH ROLLUP]
    [HAVING where_condition]
    func_name表示要做的聚合操作,聚合函数,如SUM,COUNT(*),MAX(),MIN()
    group by关键字表示要进行分类聚合的字段
    WITH ROLLUP 是可选语法,表明是否对分类聚合后的结果进行再汇总
    HAVING 关键字表示对分类后的结果再进行条件过滤

    5)表连接
    内连接:
    仅选出两张表中的互相匹配的记录

    外连接(左连接,右连接)
      左连接:
    包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录


      右连接:
    包含所有右边表中的记录甚至是左边表中没有和它匹配的记录


    6)子查询
    当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候就要用到子查询,用于子查询的关键字主要包括
    in、not in、=、!=、exists、not exists


    将两张表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来,这个时候可以使用 union,union all 关键字来实现
    UNION和UNION ALL的区别:

    union all直接把记录合并在一起
    union 合并后的结果去除重复记录DISTINCT

    DCL(Data Control Language)数据控制语句,常用关键字包括grant、revoke等

    DCL语句主要是DBA用来管理系统中的对象权限使用
    允许用户user1对本地test数据库的所有表进行SELECT/INSERT权限
    grant select,insert on test.* to 'user1'@'localhost' identified by '123';

    禁止insert,收回用户的insert权限
    revoke insert on test.* from 'user1'@'localhost' ;
  • 相关阅读:
    git工具命令整理
    使用nodeJs操作redis
    electron 7.x 设置开发环境与生产模式 隐藏菜单栏和开发者工具 devtools
    electron 打包问题 解决
    sso单点登录之跨域cookie共享 (跨域缓存共享)
    浏览器线程执行顺序
    JS如何将变量作为一个对象的Key
    DevOps流程的简单总结
    通过key 寻找数组内对象的某一项
    根据key查找对象数组中符合的一项 返回对象(递归)
  • 原文地址:https://www.cnblogs.com/Thomas-blog/p/9840621.html
Copyright © 2011-2022 走看看