MySQL基础

MySQL的安装,SQL和数据库的 DDL,DML,DQL语句的操作及语法。

一. 数据库的基本概念

1.  数据库的英文单词:DataBase  简称 :DB
          2.  什么是数据库

  * 用于存储和管理数据的仓库
3.  数据库的特点
 1. 持久化存储数据的。其实数据库就是一个文件系统

 2. 方便存储和管理数据

 3. 使用了统一的方式操作数据        ---SQL
  1. 常见的数据库软件
    • 参见《MySQL基础.PDF》

1. MySQL数据库软件

  1. 安装

  2. 卸载

    1. 找到安装目录的my.ini文件

      *复制datadir="C:/ProgramData/MySQL/MySQL Server5.5/Data/"

    2. 控制面板卸载MySQL

    3. 删除C:/ProgramData/MySQL/文件夹

  1. 配置

    • MySQL服务启动

      1. 手动

      2. cmd –> services.msc 打开服务的窗口

      3. 使用管理员打开cmd,

        net start mysql:启动mysql服务

        net stop mysql:关闭mysql服务

    • MySQL登录

      1. mysql -uroot -p密码
      2. mysql -h IP -uroot -p密码
      3. mysql --host=IP --user=root --password=密码
    • MySQL退出

      1. exit
      2. quit
    • MySQL目录结构

      配置文件 my.ini

    • MySQL数据目录,几个概念:

      • 数据库:文件夹

      • 表:文件

      • 数据:数据

2. SQL

  1. 什么是SQL?

​ Structured Query Language :结构化查询语言

​ 其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为”方言“

  1. SQL通用语法

    1. SQL 语句可以单行或多行书写,以分号结尾。

    2. 可使用空格和缩进来增强语句的可读性。

    3. MySQL 数据库的SQL语句不区分大小写,关键字建议使用大写。

    4. 3种注释

      单行注释:--空格# 这是 mysql 特有的注释方式
      多行注释:/* */

  2. SQL分类

    1) Data Definition Language (DDL 数据定义语言)

    ​ 用来定义数据库对象:数据库,表,列等。关键字:create,drop,alter 等

    2) Data Manipulation Language(DML 数据操纵语言)

    ​ 用来对数据库中表的记录(数据)进行增删改。关键字:insert,delete,update 等

    3) Data Query Language(DQL 数据查询语言)

    ​ 用来查询表中的记录(数据)。关键字:select,where 等

    4) Data Control Language(DCL 数据控制语言)

    ​ 用来定义数据的访问权限和安全级别,及创建用户。关键字:GRANT,REVOKE 等

二. DDL:操作数据库、表

1. 操作数据库:CRUD

  1. C(create):创建

    • 创建数据表

      create database 数据库名称;

    • 查询数据是否存在,不存在则创建:

      create database if not exists 数据库名称;

    • 创建数据库,并指定字符集

      create database数据库名称 character set 字符集;

    • 创建db4数据库,判断是否存在,并指定字符集为gbk:

      create database if not exists db4 character set gbk;

  2. R(Retrieve):查询

    • 查询所有数据库名称:

      show databases;

    • 查询某个数据库的字符集:查看某个数据库的创建语句

      show create database 数据库名称;

  3. U(Update):修改

    • 修改数据库字符集

      alter database 数据库名称 character set 字符集名称;

  4. D(Delete): 删除

    • 删除数据库:

      drop database 数据库名称;

    • 判断数据库是否存在,存在则删除

      drop database if exists 数据库名称;

  5. 使用数据库

    • 查询当前正在使用的数据库名称

      select database();

    • 使用数据库

      use 数据库名称;

2. 操作表

  1. C(create):创建

    1. 语法:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      create table 表名称(

      列名1 数据类型1,

      列名2 数据类型2,

      ...

      列名n 数据类型n

      );
注意:最后一列,不需要加逗号(,)

数据库类型:

 1. int :整数类型        

    `age int`

 2. `double`:小数类型    

    `score double(5,2); `        **一共五位数 ,小数点后两位**

3. `date`:日期,只包含年月日,`yyyy-MM--dd`
  • 创建表

    1
    2
    3
    4
    5
    6
    7
    8
    create table student(
    id int,
    name varchar(32),
    age int,
    score double(4,1),
    birthday date,
    insert_time timestamp
    );
  • 复制表

    create table 表名 like 被复制的表名;

  1. R(Retrieve):查询

    • 查询某个数据库所有的表名称

      show tables;

    • 查询表结构

      desc 表名称;

  2. U(Update):修改

    1. 修改表名

      • alter table 表名 rename to 新表名
    2. 修改表的字符集

      • 查看表的字符集:show create table 表名;
      • 修改表的字符集:alter table 表名称 character set 字符集名称;
    3. 添加一列

      • alter table 表名 add 列名 数据类型;
    4. 修改列的名称 类型

      • 修改名称和数据类型 :

        alter table 表名 change 列名 新列名 新数据类型;

      • 只修改数据类型:

        alter table 表名 modify 列名 新数据类型;

    5. 删除列

      alter table 表名 drop 列名;

  3. D(Delete): 删除

    • drop table 表名称;
    • drop table if exists 表名称;

三. DML:增删改表中数据

1. 添加数据

  • 语法:

    insert into 表名(列名1,列名2...列名n) values(值1,值2...值n);

  • 注意:

    1. 列名和值要一一对应。

    2. 如果表名后,不定义列名,则默认给所有列添加值

      insert into 表名 values(值1,值2,值3......值n);

    3. 除了数字类型,其他类型需要使用引号(单双引号皆可)引起来。

2. 删除数据

  1. 语法:delete from 表名 [where 条件];

​ 例如:DELETE FROM stu WHERE id = 1;

  1. 注意:

    • 如果不加条件,则删除表中所有记录。

    • 如果要删除所有记录

      1
      2
       delete from 表名;      -- 不推荐使用。有多少条记录,就会执行多少次删除操作
      TRUNCATE TABLE 表名; -- 推荐使用,效率更高。先删除表,然后再创建一个一模一样的空表。

3. 修改数据

UPDATE 表名 SET 列名=值 [WHERE 条件表达式] ;

​ UPDATE: 需要更新的表名

​ SET: 修改的列值

​ WHERE: 符合条件的记录才更新

​ 不带条件修改数据

UPDATE 表名 SET 字段名=值; – 修改所有的行

​ 带条件修改数据

UPDATE 表名 SET 字段名=值 WHERE 字段名=值;

1
2
3
4
5
6
-- 不带条件修改数据,将所有的性别改成女
update student set sex = '女';
-- 带条件修改数据,将 id 号为 2 的学生性别改成男
update student set sex='男' where id=2;
-- 一次修改多个列,把 id 为 3 的学生,年龄改成 26 岁,address 改成北京
update student set age=26, address='北京' where id=3;

四. DQL:查询表中的记录

1. 语法

SELECT 列名 FROM 表名 [WHERE 条件表达式]

  • SELECT 命令可以读取一行或者多行记录。
  • 你可以使用星号(*)来代替其他字段,SELECT 语句会返回表的所有字段数据
  • 你可以使用 WHERE 语句来包含任何条件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
select 
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定

2. 查询指定字段及所有字段的数据

  1. 指定字段的查询:查询指定列的数据,多个列之间以逗号分隔

    SELECT 字段名 1, 字段名 2, 字段名 3, ... FROM 表名;

    1
    2
    -- 查询学生表的name和age列:
    select name,age from student;
  2. 查询所有字段: 使用*表示所有列:SELECT * FROM 表名;

    1
    2
    -- 查询所有的学生:
    select * from student;

3. 指定列的别名进行查询

  1. 语法:

    • 对列指定别名

      SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名;

    • 对列和表同时指定别名

      SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名 AS 表别名;

    1
    2
    3
    4
    -- 使用别名
    select name as 姓名,age as 年龄 from student;
    -- 表使用别名
    select st.name as 姓名,age as 年龄 from student as st

    表使用别名的原因:用于多表查询操作

4. 清除重复值

  • 查询指定列并且结果不出现重复数据

    SELECT DISTINCT 字段名 FROM 表名;

    1
    2
    3
    4
    - 查询学生来至于哪些地方
    select address from student;
    -- 去掉重复的记录
    select distinct address from student;

5. 查询结果参与运算:计算列

  • 某列数据和固定值运算:SELECT 列名 1 + 固定值 FROM 表名;

  • 某列数据和其他列数据参与运算:SELECT 列名 1 + 列名 2 FROM 表名;

    注意: 参与运算的必须是数值类型

实现:

1
2
3
4
5
6
7
8
select * from student;
-- 给所有的数学加 5 分
select math+5 from student;
-- 查询 math + english 的和
select * from student;
select *,(math+english) as 总成绩 from student;
-- as 可以省略
select *,(math+english) 总成绩 from student;

6.条件查询

  1. 原因:如果没有查询条件,则每次查询所有的行。实际应用中,一般要指定查询的条件。对记录进行过滤。

  2. 语法:SELECT 字段名 FROM 表名 WHERE 条件;

  3. 流程:取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回

  4. 比较运算符

1
2
3
4
5
6
7
8
9
-- 查询 math 分数大于 80 分的学生
select * from student3 where math>80;
-- 查询 english 分数小于或等于 80 分的学生
select * from student3 where english <=80;
-- 查询 age 等于 20 岁的学生
select * from student3 where age = 20;
-- 查询 age 不等于 20 岁的学生,注:不等于有两种写法
select * from student3 where age <> 20;
select * from student3 where age != 20;
  1. 逻辑运算符
1
2
3
4
5
6
-- 查询 age 大于 35 且性别为男的学生(两个条件同时满足)
select * from student3 where age>35 and sex='男';
-- 查询 age 大于 35 或性别为男的学生(两个条件其中一个满足)
select * from student3 where age>35 or sex='男';
-- 查询 id 是 1 或 3 或 5 的学生
select * from student3 where id=1 or id=3 or id=5
  1. in关键字:

    语法:SELECT 字段名 FROM 表名 WHERE 字段 in (数据1, 数据2...);

    解释:in 里面的每个数据都会作为一次条件,只要满足条件的就会显示

    1
    2
    3
    4
    -- 查询 id 是 1 或 3 或 5 的学生
    select * from student3 where id in(1,3,5);
    -- 查询 id 不是 1 或 3 或 5 的学生
    select * from student3 where id not in(1,3,5);

7.范围查询模糊查询

  1. 范围查询语法:BETWEEN 值 1 AND 值 2;

  2. 解释:表示从值 1 到值 2 范围,包头又包尾

    比如:age BETWEEN 80 AND 100 相当于: age>=80 && age<=100

  3. 具体操作:

    1
    2
    -- 查询 english 成绩大于等于 75,且小于等于 90 的学生
    select * from student3 where english between 75 and 90;
  4. like关键字:表示模糊查询

    语法:SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';

    通配符:

    通配符说明
    %匹配任意多个字符串
    _匹配一个字符
    1
    2
    3
    4
    5
    6
    7
    -- 查询姓马的学生
    select * from student3 where name like '马%';
    select * from student3 where name like '马';
    -- 查询姓名中包含'德'字的学生
    select * from student3 where name like '%德%';
    -- 查询姓马,且姓名有两个字的学生
    select * from student3 where name like '马_';

    [TOC]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值