zoukankan      html  css  js  c++  java
  • MySQL基础

    一、创建并导入数据库

    create database if not exists yiibaidb default charset utf8 collate utf8_general_ci;
    use yiibaidb;
    source /home/jxc/Downloads/yiibaidb.sql;  

    这里我们使用的是yiibaidb下载这个汽车零售商数据库模型,yiibaidb数据库由以下表组成

    • customers: 存储客户的数据。
    • products: 存储汽车的数据
    • productLines: 存储产品类别数据。
    • orders: 存储客户订购的销售订单。
    • orderDetails: 存储每个销售订单的订单产品数据项。
    • payments: 存储客户订单的付款数据信息。
    • employees: 存储所有员工信息以及组织结构,例如,直接上级
    • offices: 存储销售处数据,类似于各个分公司。

    表与表之间的关系见下图:

    在Linux下导出数据库,可以使用mysqldump的shell命令,格式如下:

    mysqldump -u 数据库拥有者 -p 数据库名 [ 表名 ] > 输出文件名(最好用全路径)

    mysqldump -u root -p test Data > /home/jxc/Documents/Data.sql

    二、select语句简介

    select语句可以从视图或表中获取数据,select语句的语法如下

    SELECT 
        column_1, column_2, ...
    FROM
        table_1
    [INNER | LEFT |RIGHT] JOIN table_2 ON conditions
    WHERE
        conditions
    GROUP BY column_1
    HAVING group_conditions
    ORDER BY column_1
    LIMIT offset, length;

     select语句由以下列表中所述的几个子句组成:

    • SELECT 之后是逗号分隔列或者星号,表示要返回的列
    • FROM 指定要查询的表或视图
    • JOIN 根据某些链接条件从其他表中获取数据
    • WHERE 过滤结果集中的行
    • GROUP BY 把查询结果按指定的列分成集合组,当一个聚合函数和一个GROUP BY子句一起使用时,聚合函数的范围变成每组的所有记录。
    • HAVING 对GROUP BY产生的分组进行进一步的控制,用这个子句定义这些分组所必须满足的条件
    • ORDER BY 用于对查询结果进行排序
    • LIMIT 限制返回的行数

    说明:当where、group by和having子句同时出现在一个查询中时,SQL的执行顺序如下:

    1. 执行where子句,从表中选择行
    2. 由group by 对选取的行进行分组
    3. 执行聚合函数
    4. 执行having子句选取满足条件的分组

    例子:从employees表中获取办公室代码为1的销售代表员工,可以使用以下查询:

    select lastName,firstName,jobtitle 
    from employees
    where jobtitle = 'Sales Rep' AND officeCode = '1';

     还有一些有用的运算符可以子啊where子句中使用来形成复杂的条件,如:

    • BETWEEN A NAD B: 选择在给定范围值内的值。
    • LIKE: 匹配基于模式匹配的值,SQL提供了两个通配符与LIKE一起使用:百分比符号(%)匹配任何字符的零个或多个字符,下划线(_)匹配任何单个字符一次。
    • IN: 指定值是否匹配列表中的任何值。
    • IS NULL: 检查该值是否为NULL

    三、INSERT语句简介

    SELECT语句允许将一行或多行插入到表中,其基本语法如下:

    insert into table(column1,column2...)
    values ( vslue1,value2,...);

    创建一个新的名为tasks的表来练习insert语句:

    create database test;
    use test;
    
    create table if not exists tasks(
        task_id int(11) auto_incerment,
        subject varchar(45) default null,
        start_date date null,
        end_date date default null,
        description varchar(200) default null,
        primary key (task_id)
    )engine=InnoDB default carset=utf8;

     如果要将数据插入到tasks表中,可以使用如下语句:

    insert into tasks(task_id,subject,start_date,end_date,description)
    values(1,'Learn MySQL INSERT','2017-09-15','2017-10-01','Start learning...');

    四、UPDATE 和 DELETE 语句简介

    update 可以用来跟新表中现有的数据,其基本语法如下:

    update table_name
    set
        column_name1 = expr1,
        column_name2 = expr2,
        ...
    where
        condition

    例如,我们要把tasks表中的第一条数据的description改为‘Description’:

    use testdb
    update tasks
    set
        secription = 'Description'
    where
        task_id = 1

    delete 语句可以从表中删除数据,其基本语法如下:

    delete from table_name
    where condition

    五、数据库的创建与删除

    1.创建数据库使用 create database语句,语法如下:

    create database [ if not exists ] database_name;

    2.删除数据库使用 drop database 语句,语法如下:

    drop database [ if exists ] database_name

    3.显示和使用数据库:

    show databases;
    use database_name;

    六、表的创建与修改

    1.使用 create table 语句来创建表,其基本语法如下:

    create table [ if not exists ] table_name(
        column_list
    ) engine=table_type;

    说明:

    • 表名在一个数据库中必须时唯一,不能有同名的表存在
    • column_list 指定表的列,为表定义列,至少要包含列名和数据类型。其语法为:
      column_name data_type[ size ] [ not null | null ] [default value ] [ auto_increment ]
      各部分参数说明:
      • coloumn_name 指定列的名称,列具有特定的数据类型和大小,这些都必须指定
      • not null 或 null 指定该列是否接受null值
      • default 用于指定列的默认值
      • auto_increment 指定每当新行插入表中时,列值自动增加
    • engine 指定表的存储引擎,默认为InnoDB,也可以使用其他存储引擎,如:InnoDB,MyISAM,HEAP,EXAMPLE,CSV,ARCHIVE,MERGE, FEDERATED或NDBCLUSTER
    • 使用primary key ( col1,col2 ) 可以将某些列设置为主键

    2.使用alter table 语句可以更改表的结构,该语句可以用来添加列、删除列、更改列的数据结构、添加主键、重命名表等。基本语法格式如下:

    altre table table_name action

    action表示要对标进行的操作,可以是命令:

    语句作用
    change column 列名 数据类型或其他属性修改 修改指定列名的相关属性
    add column 列名 相关属性 添加新的列
    rename to new_name 重命名表
  • 相关阅读:
    20145231第九周学习笔记
    20145231第八周学习笔记
    20145231《Java程序设计》第三次实验报告
    20145231第七周学习笔记
    20145231《Java程序设计》第二次实验报告
    测试「20200912测试总结」
    题解「Luogu4774 [NOI2018]屠龙勇士」
    总结「斯坦纳树」
    题解「AT1226 電圧」
    题解「AT1983 [AGC001E] BBQ Hard」
  • 原文地址:https://www.cnblogs.com/jxc321/p/7518947.html
Copyright © 2011-2022 走看看