MySQL基础

数据库概述

数据库(DB)

数据库是一个按数据结构来存储和管理数据的计算机软件系统。

数据库管理系统(Database Management System):是专门用于管理数据库的计算机系统软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行控制的功能。

关系表(Table)

关系数据库最重要的概念就是表。

表具有固定的列数和任意的行数,在数学上称为“关系”。

二维表是同类实体的各种属性的集合,每个实体对应于表中的一行,在关系中称为元组,相当于通常的一条记录。

安装和配置注意

  • 选择存储引擎
    里面有两种存储引擎:InnoDB和MyISAM:

       InnoDB是支持事务,支持外键
       MyISAM不支持事物,不支持外键
  • 选择字符集:最后选择UTF-8,避免中文乱码
  • 设置密码(不要忘记):设置的密码是用户名为root的密码,选择remote access运行超级管理员远程连接数据库(在服务器上不用使用)
  • 设置端口号:默认的端口是3306
  • 将MySQL添加到path下,可以直接使用mysql命令
  • 重新配置MySQL信息:进入MySQL的安装目录:C:Program FilesMySQLMySQL Server 5.7 ,找到 my-default.ini

数据库操作

SQL书写规则

  • 在MySQL数据库中,SQL语句大小写不敏感;
  • SQL语句可单行或多行书写
  • 在SQL语句中,关键字不能阔行或缩写
  • 为了提高可读性,一般关键字大写,其他小写;
  • 空格和缩进是程序一读

MySQL客户端

连接MySQL:

方式1:直接使用MySQL提供的命令行窗口,--> 直接输入密码即可
方式2:运行窗口中(win + R)

格式:mysql -u账号 -p密码 -h数据库服务器安装的主机 -p数据库端口

若连接的数据库服务器在本机上,并且端口是3306,则可以简写:mysql -u账号 -p密码

MySQL简单命令

create database databasename;    //创建一个数据库
drop database databasename;      //删除指定数据库
show databases;                  //查看当前数据库服务器上有哪些数据库
use databasename;                //使用一个数据库
show tables;                     //查看指定的数据库中有哪些数据表(先选择数据库)
desc tablename;                  //查看表的结构

列的常见类型

  • char(size):定长的字符串。size是指字符的个数,同时也是最大字符数,如果大于size的话不让保存,如果小于或等于size的个数还是按照size个字符存放。
  • varchar(size):变长的字符串。size是指字符的个数,同时也是最大字符数,如果大于size的话不让保存,如果小于或等于size的个数则按照实际的字符数存放。默认最大size为255.
  • date:日期数据,MySQL用"YYYY-MM-DD"格式检索和显示DATE值。
  • datetime:日期数据,要比date数据更确切,包含时分秒。MySQL以“YYYY-MM-DD HH:MM:SS”格式检索和显示DATETIME值。
  • int:整型数据,bigint类型,大整型
  • double[(s,p)]/decimal(s,p),数字型,可存放实型和整型,精度(p,即逗号之后的数)和范围(s,即总的数据长度)
  • bit:boolean类型
  • blob:存放图形、声音和影响,二进制对象,0-4GB
  • text:存放大文本文件,0-4GB

创建表

建表语法:

create table table_name(
    columm_name1 column_properties constraint_definition,
    columm_name2 column_properties constraint_definition,
    #列名 类型 约束(最后一行没有逗号)
)

创建一张员工表:

CREATE table emplyee(
    id int primary key auto_increment,
    name varchar(10)
)

其中:primary key 表示主键,auto_increment表示主键会自动增长,不需要插入数据

导出数据和导入数据

建议使用navicate工具操作

DQL和DML操作

简单的SELECT语句

SELECT id '编 号',productName 货品名称 FROM prodect;

如果给查询的结构设置一个别名的话,as 可以省略,如果别名中有特殊符号的话,需要使用'' 或 ""括起来

使用WHERE限定所选择的记录

SELECT id '编 号',productName 货品名称 FROM prodect WHERE cutoff*salePrice > 350;

注意:不能在WHERE子句中使用SELECT中定义的别名,因为WHERE子句先于SELECT子句执行的

使用BETWEEN运算符

使用BETWEEN运算符显示某一值域范围的记录,这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数同样可以用。

SELECT id '编 号',productName 货品名称 FROM prodect WHERE cutoff*salePrice BETWEEN 300 AND 400;

使用IN运算符

使用IN运算符获得匹配列表值的记录,在IN操作符后跟着一个值的列表,可以应用日期,字符串数据类型

SELECT id '编 号',productName 货品名称 FROM prodect WHERE dir_id IN(2,3,6);//dir_id为2,3,6的所有货品

使用LIKE运算符

使用LIKE运算符执行通配查询,查询条件可包含文字字符或数字

  • ( % ):表示0或多个字符;
  • ( _ ):表示一个字符

SELECT id '编 号',productName 货品名称 FROM prodect WHERE productName LIKE '%罗技M1_';//xxx罗技M1x

运算符优先级

运算符优先级:

  1. 所有比较运算符
  2. NOT
  3. AND
  4. OR
    (括号跨域所有优先级规则)

使用ORDER BY对查询出来的数据进行排序

ASC:升序,缺省(默认)
DESC:降序
ORDER BY 出现在SELECT语句的最后面

注意:ORDER BY 子句中可以使用SELECT子句中的别名,因为SECLECT语句优先于ORDER BY子句执行。

简单SELECT的执行顺序

  1. 首先执行FROM
  2. 接着执行WHERE
  3. SELECT
  4. ORDER BY
  5. LIMIT (currentPage - 1)*pageSize,pageSize;//最后

笛卡儿积和等值连接

SELECT * FROM emplyee,department WHERE employee.dept = department.deptno

使用表连接从多个表中查询数据

为一个表创建一个外键,指的是当前表中的一列的值参考另外一个表(其他的表,也可以是自己)中的一列数据。

创建外键的前提是:当前表和参考表的存储引擎为InnoDB

INSERT语句

INSERT INTO tablename [(column [,(column)])] VALUES (value [, value...]);

一次插入操作只能插入一行数据。INSERT语句将VALUES中给定的值插入到表中的各个字段中,每次使用INSERT语句只能插入一行数据,

在INSERT语句中,table后面的方括号内是要插入数据的字段列表,字段列表包含了所有需要插入值的字段名称,在插入时不需要值的字段可以不出现在低端列表中。

VALUES后面是值的列表,也就是要插入到表中的各个字段的值。如果前面列出了字段列表,那么VALUES中值必须和字段列表一一对应,包括个数,类型,位置对应,如果忽略了字段列表,那么值必须与表中的字段一一对应(创建表时字段的顺序)。

如果有些字段在插入的时候不能确定初始值,则需要插入空值表示。在字段中插入空值有两种方式,一种是在需要空值的地方使用null关键字代替;另一种是通过列出不完全的字段列表实现,在字段列表中没有出现的字段,在插入记录后自动被赋予空值。

字符串类型的字段值必须使用单引号括起来,如:' Good DAY'

如果一个表中的一列被设置为主键,那么该列上面的值不能够重复

如果一个表中的一列被设置为自动递增,那么当我们给该列插入null或是不指定值,那么它会自动递增

UPDATE语句

UPDATE tablename SET column = value [,column = value]...[WHERE conditions];

在UPDATE语句中,where子句是可选部分,如果使用了WHERE子句,则更新的数据是符号WHERE条件的所有记录;如果忽略了WHERE子句,则全表的数据都会被修改。

SET子句后面是对列表中一个或多个字段的修改,如果修改多个字段的值,使用逗号将多个字段隔开。

DELETE语句

DELETE FROM table [WHERE condition];

在delete语句中,where子句是可选的,如果使用了where则删除的记录是符合where条件的记录,如果没有使用,则全表的数据都会被删除。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注