• MySQL语法基础


    一、通用语法

    1、MySQL数据库的SQL语句不区分大小写

    2、可以用/**/完成注释

    3、常用数据类型

    类型 描述
    int 整型
    double 浮点型
    varchar 字符串型
    date 日期类型,格式为yyyy-mm-dd,只有年月日没有时分秒

     

     

     

     

     

     

     

    二、数据库操作

    1、创建数据库

    CREATE DATABASE 数据库名;
    e.g 
    CREATE DATABASE hospital;

    2、查看数据库

    ①查看数据库MySQL服务器中所有数据库

    SHOW DATABASES/*查看数据库MySQL服务器中所有数据库*/

    ②查看某个数据库定义的信息

    SHOW CREATE DATABASE 数据库名;
    
    e.g
    SHOW CREATE DATABASE hospital;

    3、删除数据库

    DROP DATABASE 数据库名;
    e.g
    DROP DATABASE hospital;

    4、切换数据库

    USE 数据库名;
    e.g
    USE hospital;

    三、表操作

    1、创建表

    CREATE TABLE 表名(
        字段名 类型(长度) 约束,
        字段名 类型(长度) 约束,
    );
    
    e.g
    CREATE TABLE doctor(
        id INT PRIMARY KEY,
        name VARCHAR(20) NOT NULL,
    );
         

    2、查看表

    ①查看数据库中的所有表

    SHOW TABELS;

    ②查看表结构

    DESC 表名;
    e.g
    DESC doctor;

    3、删除表

    DROP TABLE 表名;
    e.g
    DROP TABLE doctor;

    4、修改表

    ①添加列

    ALTER TABLE 表名 ADD 列名 类型(长度) 约束;
    e.g
    ALTER TABLE doctor ADD title VARCHAR(20);
    /*给医生表添加职称字段*/

    ②修改列类型长度及约束

    ALTER TABLE 表名 MODIFY 列名 类型(长度) 约束
    e.g
    ALTER TABLE doctor MODIFY title VARCHAR(50) NOT NULL;

    ③修改列名

    ALTER TABLE 表名 CHANGE 旧列名 新列名 类型(长度) 约束;
    e.g
    ALTER TABLE doctor CHANGE title doctitle VARCHAR(30);

    ④删除列

    ALTER TABLE 表名 DROP 列名;
    e.g
    ALTER TABLE doctor DROP title;

    ⑤修改表名

    RENAME TABLE 表名 to 新表名;
    e.g
    RENAME TABLE doctor to nurse;

    四、数据操作

    1、增加数据

    INSERT INTO 表名 [(字段列表)] VALUES (值列表);
    e.g
    INSERT INTO doctor VALUES('001', '张三', '主治医师');

    如果遇到主键冲突(即插入数据时,主键对应的值已经存在),可以选择更新或替换。

    ①更新

    INSERT INTO 表名[(字段列表:包含主键)] VALUES(值列表) DUPLICATE KEY UPDATE  字段 = 新值;
    e.g
    /*假如说表中001已经是张三医生了,我现在要改成李四*/
    INSERT INTO doctor VALUES('001', '李四', '实习医生') DUPLICATE KEY UPDATE  name = '李四';

    ②替换

    REPLACE INTO 表名 [(字段列表:包含主键)] VALUES(值列表);
    e.g
    REPLACE INTO doctor VALUES('001', '李四', '实习医生');

    2、更新数据

    UPDATE 表名 SET 字段 =[WHERE条件][LIMIT更新数量];
    e.g
    /*把职称是实习医生的前三个人改成主治医师*/
    UPDATE doctor SET tilte = '主治医师' WHERE title = '实习医生' LIMIT 3; 

    3、删除数据

    DELETE FROM 表名 [WHERE条件][LIMIT数量];
    e.g
    /**/
    DELETE FROM 表名 WHERE title = '实习医生' LIMIT 10;

    4、查询数据

    SELECT 字段列表/(*所有字段) FROM 表名 [WHERE条件]

    ①去重

    DISTINCT

    ②WHERE子句

    比较运算符: >, <, >=, <= ,!= ,<>, =, like, between and, in/not in
    
    逻辑运算符: &&(and), ||(or), !(not)

    ③分组

    GROUP BY 字段名

    分组即根据某个字段进行分组(相同的放一组,不同的分到别的组,主要是为了统计数据),以下是数据统计函数:

    COUNT():统计分组后的记录数,每一组有多少记录
    MAX():统计每组的最大值
    MIN():统计最小值
    AVG():统计平均值
    SUM():统计和

    分组条件判断需要用:

    HAVING

    ④排序

    ORDER BY 字段名 [ADC|DESC]/*ADC升序(默认),DESC降序*/

    ⑤限制数量

    LIMIT 数据量;
    /*只用来限制长度*/
    
    LIMIT 起始位置, 长度;
    /*限制起始位置和数量*/

    五、连接查询

    1、内连接:组合两个表中的记录,返回关联字段相符的记录。

    左表 [INNER]JOIN 右表 ON 左表.字段 = 右表.字段;
    e.g
    dector AS dc INNER JOIN department dp ON dc.id = dp.id;

    如果没有ON的话系统会保留所有结果,即两个表的笛卡尔积。

    2、左外连接:左表的记录会全部显示出来,右表只会显示符合搜索条件的记录,右表记录不足的地方均为NULL。

    左表 LEFT JOIN 右表 ON 左表.字段 = 右表.字段;
    e.g
    dector AS dc LEFT JOIN department dp ON dc.id = dp.id;

    3、右外连接:左表只会显示符合搜索条件的记录,右表的记录将全部显示,左表记录不足的地方均为NULL。

    左表 RIGHT JOIN 右表 ON 左表.字段 = 右表.字段;
    e.g
    dector AS dc RIGHT JOIN department dp ON dc.id = dp.id;

    六、视图

    视图是一种有结构(有行有列)但没有结果(结构中不真实存放数据)的虚拟表,虚拟表的结构来源不是自己定义,而是从对应的基表中产生(视图的数据来源)。使用视图主要为了查询,所以把视图当做表一样查询即可。

    CREATE VIEW 视图名字 AS SELECT语句

    1、查看视图

    DESC 视图名字;

    2、使用视图

    直接把视图当做表一样查询即可

    3、修改视图

    视图本身不可修改,但视图的来源可以修改。

    ALTER VIEW 视图名 AS 新的SELECT语句

    4、删除视图

    DROP VIEW 视图名
  • 相关阅读:
    Nginx无缝升级
    ajax form提交的问题
    Ubuntu下pecl_http的安装
    提高PHP的运行效率的方法
    php.ini中文对照
    类似 TP中 eq 标签
    PHP身份证验证程序
    mysql在php中的应用
    如何添加JavaScript到Joomla模板中去
    USACO / Controlling Companies (类似BFS)
  • 原文地址:https://www.cnblogs.com/z1014601153/p/11356346.html
Copyright © 2020-2023  润新知