zoukankan      html  css  js  c++  java
  • Mysql数据库操作语句

    Mysql规范:

    关键字与操作语句大写,字段名小写

    1.数据库操作

    CREATE DATABASE database_name   //创建数据库
    DROP DATABASE database_name     //删除数据库
    USE DATABASE database_name //使用数据
    SHOW DATABASE //查看数据

    2.数据表操作

    (1)内表操作

    创建,删除,显示,修改数据表,重命名表名

    CREATE TABLE table_name(               //创建数据表
    col_name  data type,
    ...
    )
    DROP TABLE table_name       //删除数据表
    SHOW col_name FROM table_name   //显示数据表的数据结构
    or
    DESC table_name
    //重命名表名
    ALTER TABLE old_table_name RENAME new_table_name 
    or
    RENAME old_table_name to new_table_name     
    
    //添加表字段
    ALTER TABLE table_name ADD(col_name datatype)
    //删除表字段 ALTER TABLE table_name DROP col_name //修改字段名 ALTER TABLE table_name CHANGE old_col_name new_col_name //修改字段类型 ALTER TABLE table_name MODIFY col_name datatype //修改字段默认值 ALTER TABLE table_name ALTER col_name SET DEFAULT value //删除默认值 ALTER TABLE table_name ALTER col_name DROP DEFAULT

    (2)表数据操作

    插入,更新,查找,删除记录

    INSERT INTO table_name VALUES()                  //插入记录
    or
    INSERT INTO table_name(col_name1,....) VALUES(value1,....)
    UPADATE table_name set col_name = value WHERE condition     //更新记录
    SELECT col_name,col_name
    FROM table_name                               //查询记录
    WHERE condition
    DELETE FROM table_name WHERE condition      //删除记录

    (3)表数据详细操作

    分组,升降序,限制...

    SELECT age FROM user GROUP BY age                            //分组
    SELECT id,name,age FROM user GROUP BY age HAVING age<10         // HAVING后面的字段age必须存在select后面的字段中
    //having与where类似,可以筛选数据,where后的表达式怎么写,having后就怎么写,
    where针对表中的列发挥作用,查询数据,having对查询结果中的列发挥作用,筛选数据 SELECT id,name FROM user ORDER BY id desc //降序,升序asc SELECT id,name FROM user LIMIT 2 //(限制查询出来的数据仅显示两条)

    3.约束操作

    功能分类:主键约束,外键约束,唯一约束,默认约束

    列表级分类:列级约束与表级约束

    列级约束:在列定义或者列定义后,表级对多个列定义约束,可在列定义后

    问题:物理约束与逻辑约束

    CASCADE:父表删除字段后,子表即有外键约束的表的数据也自动更新删除

    一般情况下,都不会使用物理约束,删除父表的字段或数据后联动删除子表的数据,将所有的联动删除都在数据库表中设置,容易增加性能问题,现在大都将其作为业务上的一部分在代码中实现逻辑约束,有助于提高性能及效率。

    //主键约束
    CREATE
    TABLE table_name( column_name data type PRIMARY KEY, //主键约束 ...)

    注:自动编号AUTO_INCREMENT与主键相结合使用,默认值为1,默认增长长度为1

    CREATE TABLE table_name(
    column_name data type PRIMARY KEY AUTO_INCREMENT,            //自动编号
    ...)
    //外键约束
    CREATE
    TABLE tabale_name( column_name data type FOREIGN KEY REFERENCE parent_table_name(column_name), ...)
    //唯一约束
    CREATE
    TABLE table_name( column_name data type UNION KEY, ...)

    唯一约束与主键约束的区别:主键是每一个表有且仅有一个,而唯一约束则是每一个表可以有多个

    //默认约束
    CREATE
    TABLE table_name( column_name data type DEFAULT 默认值, ...)

    4.子查询与连接

    (1)子查询

    a.比较运算符引发的子查询

    注意:当对比的数据等于两条或多余两条的时候,即当子查询返回多个结果时,在用普通的比较运算符子查询来查询数据,会报错,所以这时关键字any,some,all就派上用场

    b.NOT IN/IN/EXISTS引发的子查询

    IN/NOT IN:指定的一个值是否在这个集合

    EXISTS:where型子查询(把内层查询结果当作外层查询的比较条件),而exists型子查询(把外层查询结果拿到内层,看内层的查询是否成立

    SELECT col_name FROM table_name WHERE col_name IN/NOT IN () 
    SELECT col_name FROM table_name WHERE EXISTS () 

    (2)连接

    合并:

    //UNION:去除重复的记录
    SELECT
    * FROM table_name1 UNION SELECT * FROM table_name2
    //UNION ALL:不去除重复的记录
    SELECT * FROM table_name1 UNION ALL SELECT * FROM table_name2

    a.内连接 INNER JOIN/CROSS JOIN/JOIN

    SELECT col_name FROM table_name1 INEER JOIN/CROSS JOIN/JOIN table_name2 ON table_name1.col_name = table_name2.col_name
    //以上的句子等价于平常的查询语句如下:
    SELECT col_name FROM table_name1,table_name2 WHERE table_name1.col_name = table_name2.col_name

    b.左右外连接LEFT JOIN/RIGHT JOIN

    左连接:以左表(student)为主,左表中的数据行都会显示,右表没有的都会显示NULL。

    右连接:以右表(student)为主,右表中的数据行都会显示,左表没有的都会显示NULL。

    //左连接
    SELECT col_name FROM table_name1 LEFT JOIN table_name2 ON table_name1.col_name = table_name2.col_name
    
    //右连接
    SELECT col_name FROM table_name1 RIGHT JOIN table_name2 ON table_name1.col_name = table_name2.col_name

    (3)多表操作

    //多表更新
    UPDATE
    table_name1 INNER JOIN table_name2 ON table_name1.col_name = table_name2.col_name SET col_name = value(需要更新的语句) WHERE condition
    //多表删除
    DELETE col_name FROM table_name1 INNER JOIN table_name2 ON table_name1.col_name = table_name2.col_name WHERE condition
  • 相关阅读:
    PHP
    linux文件分割(将大的日志文件分割成小的)
    centos安装ssdb
    SSDB 数据库如何换用 rocksdb 引擎?
    A PHP extension for Facebook's RocksDB
    看电影有感
    视频格式(转的豆瓣)
    7月7号项目讲解总结
    java注解Annotation
    xml的解析
  • 原文地址:https://www.cnblogs.com/evablogs/p/8419722.html
Copyright © 2011-2022 走看看