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 重命名表
原文地址:https://www.cnblogs.com/jxc321/p/7518947.html