DW集训营数据库Mysql梳理(三)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29027865/article/details/88064829

(先行打卡,在2号中午前补上)

  1. MySQL表数据类型
    数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型
    整型:
    无符号用UNSIGNED表示;
    浮点型:

    1. FLOAT是单精度浮点型

    2. DOUBLE是双精度浮点型

    3. [(M,D)],M一定大于等于D

    4. 比如FLOAT(7,2)代表小数点前面的数值有5位,小数点后面的数字有2位,一共加起来有7位,最大能表示99999.99

    日期时间类型:

    1. YEAR范围:1970 到2069

    2. TIME范围:-838:59:59 到 838:59:59

    3. DATE范围:1000-01-01 到 9999-12-31

    4. DATETIME范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59

    5. TIMESTAMP范围:1970-01-01 00:00:00 到 2037-12-31 23:59:59

    字符型:

    1. CHAR(M):这是定长类型,比如CHAR(5),值为ABC,但是存储的时候,会在ABC后面补齐两个空格补齐5位

    2. VARCHAR(M):这是变长类型,比如比如VARCHAR(5),值为ABC,存储的时候就只存ABC

    3. L+ x 个字节:是指最佳的存储范围

    4. ENUM:枚举值,给出选项供选择

    5. SET:集合,比如SET(‘A’,‘B’,‘C’),可以只选择A,也可以只选择B,也可以只选择BC,等于可以在这个集合中选择任意的排列组合

  2. 用SQL语句创建表
    语句解释
    数据表又称表,是数据库最重要的组成部分之一,是其他对象的基础,行称之为记录,列称之为字段。
    如果是在命令行界面:
    首先通过USE命令打开数据库,USE 数据库名;
    接着检查打开的数据库是否正确,SELECT DATABASE();
    最后创建数据库的表结构:CREATE TABLE [IF NOT EXISTS] table_name ( column_name data_type,……)

    设定列类型 、大小、约束
    约束的情况主要有:非空约束,主键约束,唯一约束,默认约束。

     **非空约束:**
     NULL,字段值可以为空;NOT NULL,字段值禁止为空
     
     CREATE TABLE tb2(
     username VARCHAR(20) NOT NULL,
     age TINYINT UNSIGNED NULL
     );
     
     **主键约束:**
     1. 每张数据表只能存在一个主键
     2. 联合主键和复合主键
     	当表中只有一个主键时,它是唯一的索引;当表中有多个主键时,称为复合主键,复合主键联合保证唯一索引。
      	联合主键是指:主键A跟主键B的数据可以完全相同,联合就在于主键A跟主键B形成的联合主键是唯一的。
      	其中的区别是:复合主键就是含有一个以上的字段组成,如ID+name,ID+phone等,而联合主键要同时是两个表的主题组合起来的。
     3. 主键保证记录的唯一性
     4. 主键自动为NOT NULL
     5. AUTO_INCREMENT必须和主键一起使用,但是主键不一定必须和AUTO_INCREMENT使用;
     	自动编号,且必须与主键组合使用,默认情况下,起始值为1,每次的增量为1,依次递增。所以该字段数据类型一定是数值型:整数,浮点数都可以,浮点数小数位数必须为0。
     
     CREATE TABLE tb3(
     id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
     username VARCHAR(30) NOT NULL
     );
     
     **唯一约束:**
     
     因为主键一张表只有一个,如果想保证唯一性,可以使用UNIQUE KEY(唯一约束);
    
     1. 唯一约束可以保证记录的唯一性
     2. 唯一约束的字段可以为空值(NULL)(这里比较难以理解:因为既然可以为空值,那么2条或者2条以上的记录如果都为空值,都为空值就是相同的,岂不是违背了唯一性?其实这里存储的时候,多个空值只会保存一个空值,所以并不违背唯一性)
     3. 每张数据表可以存在多个唯一约束
     
     CREATE TABLE tb5(
     id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
     username VARCHAR(30) NOT NULL UNIQUE KEY,
     age TINYINT UNSIGNED
     );
     
     **默认约束:**
     当插入记录时,如果没有明确为字段赋值,则自动赋予默认值 ,关键词为 DEFAULE;
     
     CREATE TABLE tb61(
     id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
     username VARCHAR(20) NOT NULL UNIQUE KEY,
     sex ENUM('1','2','3') DEFAULT '3'
     );
    
  3. 用SQL语句向表中添加数据
    三种种插入记录的方法:(insert,insert set,insert select)
    INSERT:
    INSERT 表名 VALUES(NULL,‘Tom’,‘123’,25,1);
    此方法可以插入多条数据;
    INSERT SET:
    INSERT 表名 SET username=‘BEn’, password=‘456’;
    与指定列名插入方法区别在于:此方法可以使用子查询,且一次只允许插入一个记录,我们用此方法插入一条记录:
    INSERT SELECT:
    INSERT SELECT可以将查询的结果写入数据表

     INSERT tdb_goods_cates(cate_name) 
     SELECT goods_cate FROM tdb_goods 
     GROUP BY goods_cate;
    
  4. 用SQL语句删除表
    语句解释
    DELETE
    DROP
    TRUNCATE
    不同方式的区别

  5. 用SQL语句修改表
    修改列名
    修改表中数据
    删除行
    删除列
    新建列
    新建行
    项目三:超过5名学生的课(难度:简单)
    创建如下所示的courses 表 ,有: student (学生) 和 class (课程)。
    例如,表:
    ±--------±-----------+
    | student | class |
    ±--------±-----------+
    | A | Math |
    | B | English |
    | C | Math |
    | D | Biology |
    | E | Math |
    | F | Computer |
    | G | Math |
    | H | Math |
    | I | Math |
    | A | Math |
    ±--------±-----------+

编写一个 SQL 查询,列出所有超过或等于5名学生的课。
应该输出:
±--------+
| class |
±--------+
| Math |
±--------+
Note:
学生在每个课中不应被重复计算。

项目四:交换工资(难度:简单)
创建一个 salary表,如下所示,有m=男性 和 f=女性的值 。
例如:

id name sex salary
1 A m 2500
2 B f 1500
3 C m 5500
4 D f 500

交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求使用一个更新查询,并且没有中间临时表。
运行你所编写的查询语句之后,将会得到以下表:

id name sex salary
1 A f 2500
2 B m 1500
3 C f 5500
4 D m 500

猜你喜欢

转载自blog.csdn.net/qq_29027865/article/details/88064829