MySQL

SQL的基础学习

SQL

1. 概念:

结构化查询语言(Structured Query Language)简称SQL,意思就是说这个是mysql的执行语句,就相当是java语言一样有规范。只要是关系型数据库,都可以用sql语句,但是不同的数据库,sql语法稍微有些不同

2.语法(规范):

  1. 在cmd里面

    Sql可以执行多行语句,也可以执行单行语句,多行语句就要用分号结尾

    -> show dateBases --> 执行(按一下回车,就代表你要执行多行,现在cmd就等你的;直到识别出;之后直接将所有执行过的结果在显示出    来)
    -> .....   --(执行,但是还不显示)
    -> ;
    
    
  2. 使用空格和缩进增强代码的可读性

  3. sql语句是不区分大小写的,虽然在sqyog里面关键字直接就给你自动变成大写了

  4. 注释:

    多行注释:/* 注释内容 */

    单行注释: --注释内容 或 #注释内容(Mysql特有的)

3.SQL语言的分类:

  1. DDL(数据库定义语言):用来定义数据库,,表里面的属性 ----> 关键字: create drop alter show use就是这写关键字开头的

  2. DML(数据库操作语言):用来对数据库中进行增删改操作的—> **关键字:**insert delete update等 就是这写关键字开头的

  3. DQL(数据库查询语言):用来查询表中的数据-----> 关键字: select where

  4. DCL(数据库控制语言):用来控制用户的权限(就相当是写了一些权限修饰符)有些用户被修饰符修饰之后查询数据库的能力就被限制了

    还有就是创建用户 ----> **关键字:**grant revoke等

  5. 如图解释五种类型语言所应用的场景:

在这里插入图片描述

4.数据库定义语言(DDL)—数据库

  1. 操作数据库 CRUD

    • C – create 创建数据库
    • R – retrieve 查询数据库
    • U – update 修改数据库(更新就像当时修改)
    • D – drop 删除数据库

    小知识点:latin1 是 ISO-8859-1这种编码集的别名

    C:

    -- DDL语句创建一个数据库
    CREATE DATABASE IF NOT EXISTS `test`
    -- DDL语句查看创建`test`表的语句
    SHOW CREATE DATABASE `test`
    -- 创建数据库如果已经存在数据库则创建失败
    -- DDL创建一个数据库并且编码集是utf-8
    CREATE DATABASE IF NOT EXISTS `test2` CHARSET utf8
    

    R:

    -- DDL查看所有的数据库
    SHOW DATABASES
    -- DDL操作查看一个创建数据库的操作语句和创建数据库的编码集
    SHOW CREATE DATABASE `test` 
    

    U:

    -- DDL操作修改test的编码集为gbk
    ALTER DATABASE `test` CHAR SET gbk
    

    D:

    -- DDL删除一个数据库
    DROP DATABASE IF EXISTS `test2`
    

    额外还有一个:

    -- DDL操作使用数据库
    USE `test`
    

5.数据库定义语言(DDL)—表

​ 1. Create 创建表(DDL创建表)

学生表

学号 姓名 年龄
CREATE FROM IF NOT EXISTS`student`(
 每一列的名字(列名) 数据类型,
 列名2 数据类型,
 ....... ,
 列名last 数据类型  -- 不加逗号
);

注意事项:

1.DDL语句中在创建表的时候,每一行的语句后面都要加逗号但是最后一个语句不用加逗号

2.数据类型

  1. 数据类型

    • 整型: INT
    • 小数类型: float,double 例如: FLOAT(5,2) —> 意思就是说这个数是五位,但是包括小数点后必须有两位(总共加起来就是五位)
    • 日期类型: date 只包含年月日 —> 赋值的时候格式 (yyyy-MM-dd)
    • 日期类型: datetime: 包含年月日和时分秒 —> 赋值的时候格式 (yyyy-MM-dd HH-mm-ss)
    • 时间戳类型: timestamp: 包含年月日时分秒 —> 不用赋值或者直接赋null 就会返回当前系统的时间(和我们java中的时间戳是不一样的)
    • 字符类型: char,varchar
      • char(n): 长度不改变字符类型 n就代表了固定的长度,如果n是5的话,现在只输入了3个字符那么就会用空格补齐,然后检查长度的时候就会把空格删除掉
      • varchar(n): 长度改变类型 就是说如果n是5的话但是你只输入了3个字符,那么系统不会用空格将后面的补充,它的长度还是3
  2. 实例:

    • C: 创建表

      CREATE TABLE IF NOT EXISTS `student`(
      `id` INT COMMENT '学号',
      `name` VARCHAR(2) COMMENT '姓名',
      `score` DOUBLE(5,2) COMMENT '成绩',
      `birthday` DATE COMMENT '日期',
      `currenttime` TIMESTAMP DEFAULT NULL COMMENT '当前时间'
      );
      
    • **R:**查询表

      -- DDL展示表
      SHOW TABLES
      
      -- DDL查询表的创造语言的语句
      SHOW CREATE TABLE `school`
      
    • **U:**修改表(修改表内的东西)

      -- DDL修改表名
      ALTER TABLE `stu` RENAME TO `student`
      
      -- DDL 修改表的字符集
      ALTER TABLE `stu` CHARACTER SET utf8
      
      -- DDL 添加表中的某一个字段
      ALTER TABLE `stu` ADD `index` INT COMMENT '索引'
      
      -- DDL 修改表中的某一字段
      ALTER TABLE `stu` MODIFY `index` VARCHAR(10) -- modify只能改字段的类型
      
      ALTER TABLE `stu` CHANGE `index`  `sex` VARCHAR(10) -- change不仅可以改变字段的名称,也可以更改字段的名字
      
      -- DDL 删除表中的某一个字段
      ALTER TABLE `stu` DROP `sex`
      
    • **D:**删除表(直接将表删除)

      -- DDL 删除表
      DROP TABLE IF EXISTS `stu`
      

6.数据库操作语言(DML)

  1. 增加表中的数据—insert into
 -- DML 操做表中添加字段的属性
 INSERT INTO `student` (id,`name`,score,birthday,currenttime) VALUES (1,'Fan',150.00,'2000-8-12',NULL)
 -- 插入全部的字段的属性的话就可以剩去字段的名字
 INSERT INTO `student` VALUES (1,'Fa',150.00,'2000-8-12',NULL)
 
 -- DML 操作数据中添加字段属性的不同语法
 1.一次插入多个
 INSERT INTO `student` (id,`name`,score,birthday,currenttime) VALUES (1,'Fan',150.00,'2000-8-12',NULL)
 ,(2,'Fan',150.00,'2000-8-12',NULL)
 2.一次插入不同个字段的属性
 INSERT INTO `student` (id,score,birthday,currenttime) VALUES (1,150.00,'2000-8-12',NULL)
 3.一次插入多个不同字段的属性
 INSERT INTO `student` (id,score,birthday,currenttime) VALUES (1,150.00,'2000-8-12',NULL),(2,150.00,'2000-8-12',NULL)

注意事项:

1.字段名和属性要一 一对应

2.如果不加字段名则默认为全部字段名,并且按照顺序的字段名

3.除了数字数据类型之外,其他类型都要加引号

  1. 删除表中的数据—delete from…where

     -- DML 删除表中的所有数据
     DELETE FROM `student`
     TRUNCATE `student`
     -- DML 删除表中指定位置的数据
     DELETE FROM `student` WHERE id = 1
     TRUNCATE `student`
    

    delete 和 truncate的区别

    • delete删除:是将表中的数据一个一个的删除,但是 不会删除自增量(有的属性会设置自增量,这些设置子增量的属性会被删除,但是子增量是不会删除的)
    • truncate删除:直接将一张表就删除了,然后再给你原封不动的创建一张表,这样自增量就会全部被删除
  2. 修改表中的数据 —> update … set

     -- DML 改变表中的数据
     UPDATE `student` SET id = 2;
     -- DML 改变表中指定位置的一个数据
     UPDATE `student` SET id = 1 WHERE `id` = 3
     -- DML 该表表中指定位置的多个数据
     UPDATE `student` SET id = 3, score = 100.0 WHERE `id` = 2
    

7.数据库查询语言(DQL)

几个重要的关键字

select 字段名 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 limit 分页限定

1. 基本查询

①: 添加一张表

 INSERT INTO `student1` VALUES 
 (1,'马云',18,'男','杭州',80,80),
 (2,'马化腾',19,'男','深圳',75,60),
 (3,'埃隆马斯克',31,'男','美国',76,93),
 (4,'扎克伯格',27,'男','美国',65,NULL),
 (5,'郎平',16,'女','上海',90,98),
 (6,'姚明',32,'男','上海',80,81);

②:要求查询 student1表中所有的学生的年龄信息和姓名

SELECT `name`, `age` FROM `student1`

③:要求查询 student1表中的不重复的性别和地址(去重查询)

distinct—>去重

SELECT 
      DISTINCT `address` ,`sex`   -- 意思就是将重复的address和sex合并在一起输出了(去重)
FROM
   `student1
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值