Day1-MySQL数据库

学习目标

1、掌握Navicat基本使用
2、掌握select基本语法;
3、掌握insert基本语法;
4、掌握update基本语法;
5、掌握delete基本语法;

一、数据库简介(Mysql)

  • SQL语言主要分为

    • DQL:数据查询语言,用于对数据进行查询,如select;
    • DDL:数据定义语言,进行数据库、表的管理等,如createdrop;
    • DML:数据操作语言,对数据进行增、删、改,如:insert,update,.delete;
    • TPL:事务处理语言,对事务进行处理,包括begin transaction,commit,rollback;
  • 对于测试工程师来讲,重点是数据的查询,需要熟练编写DQL,能看懂DDL,DML和其他语句了解即可;

  • SQL语言不区分大小写

首先配置安装Navicat,参考教程:B站云专栏

然后配置mysql,参考教程:CSDN

  • 配置Navicat连接mysql,并且创建数据库

image-20220313121452452

image-20220313121354452

  • 新建查询

image-20220313123158793

image-20220313123317390

看到如下结果,代表navicati连接mysql设置成功

image-20220313123442861

二、SQL语言基础

2.1 学习目标

  • 掌握CREATE TABLEDROP TABLE语句;
  • 掌握:增加INSERT、查询SELECT、删除DELETE、修改UPDATE表语句;

2.2 SQL语言中的注释

  • 单行注释

    格式: -- 注释内容

select * -- 简单的查询语句
from students;

​ 注意: -- 与注释文字之间用空格分开

  • 多行注释

    格式:/*注释内容*/

/*
	这是一个多行注释
	的句子
*/
  • Navicat中按ctrl + / 快速注释选中的SQL代码
  • Navicat中按ctrl+shift+/选中SQL代码取消注释

2.3 Mysql常用数据类型

  • 整数: int,有符号范围(-2147483648 ~2147483647),⽆符号(unsigned)范围(0 ~ 4294967295)
  • ⼩数: decimal,例如:decimal(5,2) 表示共存5位数,⼩数占2位,整数占3 位
  • 字符串: varchar,范围(0~65533),例如:varchar(3) 表示最多存3个字符,⼀个中⽂或⼀个字⺟都占⼀个字符
  • ⽇期时间: datetime,范围(1000-01-01 00:00:00 ~ 9999-12-31 23:59:59),例如:'2020-01-01 12:29:59'
  • 整数⽆符号设置

image-20220313124655857

2.4 数据库中的元素

  • 数据库(database)

  • 表(table):
    表(table),数据库中存储数据的基本单位,表是一个由行和列组成的二维表格结构

  • 字段(field)

    表中的列,在数据库中,叫做字段(filed)

  • 记录(record)

    表中的一行,在数据库中,叫做记录(record)

2.5 CREATE TABLE创建表

  • 语法

    create table 表名(
    	字段名 数据类型,
    	字段名 数据类型
    	...
    );
    
  • 举例 - 1

    -- 例 1:创建表 a,字段要求:name(姓名),数据类型:varchar(字符串),长度为 l0
    CREATE TABLE a(
    	name VARCHAR(10)
    );
    
  • 举例 - 创建两个字段的表

    /*
    	例2:创建表b,字段要求:name(姓名),数据类型为varchar(字符串),长度为10;
    			height(身高),数据类型为decimal(小数),一共5位,其中3位整数,2位小数。
    */
    
    CREATE TABLE b(
    	name VARCHAR(10),
    	height DECIMAL(5, 2) -- 5位,2位是小数
    );
    
    
  • 举例 - 创建三个字段的表

    /*
    例3:创建表c,字段要求如下:
    	id:数据类型为int(整数):
    	name姓名:数据类型为varchar(字符串)长度为20,
    	age年龄:数据类型为tinyint unsigned(无符号小整数);
    
    */
    CREATE TABLE c(
    	id int,
    	name VARCHAR(20),
    	age TINYINT UNSIGNED
    );
    
    
    -- 如果表c不存在,则创建,存在,不执行
    create TABLE if NOT EXISTS c (
    	id int,
    	name VARCHAR(20),
    	age TINYINT UNSIGNED
    );
    

2.6 INSERT添加数据

  • 语法:inset into 表名 values(值,值,值);

  • 添加一条记录

    格式一:所有字段设置值,值的顺序与表中字段的顺序对应

    -- 往表c插入一条记录
    INSERT INTO c VALUES(0, '张飞', 30);
    

    格式二:部分字段设置值,值的顺序与给出的字段顺序对应

    -- 表c插入一条记录,只设置id和姓名name
    INSERT INTO c(id, name) VALUES (1, '老夫子');
    
  • 添加多条记录

    格式一:写多条insert语句,语句之间用英文分号隔开

    -- 表c插入三条记录,写三条insert语句,语句之间用分号隔开
    INSERT INTO c(id, name, age) VALUES(2, '秦始皇', 20);
    INSERT INTO c(id, name, age) VALUES(3, '汉武帝', 30);
    INSERT INTO c VALUES(4, '唐太宗', 23);
    

    格式二:写一条insert语句,添加多条记录

    数据之间用英文逗号隔开

    -- 表c插入多条记录,用一条insert语句,数据之间用逗号隔开
    INSERT INTO c VALUES(5,'宋太祖',23),(6, '庄子', 23);
    

    格式三:写一条insert语句,设置指定字段值

    -- 表c插入多条记录,用一条insert语句,只设置姓名和年龄
    INSERT into c(name, age) VALUES('雍正', 18),('刘备', 22);
    

表C最终结果:

image-20220313133413486

2.7 SELECT简单查询

  • 查询所有字段

    • 语法: select * from 表名

      -- 查询表c所有数据
      SELECT * FROM c;
      
  • 查询指定字段

    • 语法:select 字段1,字段2,... from 表名

      -- 查询表c中id,age
      SELECT id, age FROM c;
      
      -- 查询表c的所有字段,但顺序自定义
      select name,id age from c;
      

2.8 UPDATE修改数据

  • 语法:update 表名 set 字段1=值1,字段2=值2... where 条件;

    -- 修改表c,所有人的年龄age字段改为50
    UPDATE c SET age=50;
    
    -- 修改表c,id为2的记录,姓名(name字段)改为狄仁杰',年龄(age字段)改为20
    UPDATE c SET name='狄仁杰',age=20 WHERE id=2;
    
    -- 修改name为刘备的记录为李白
    UPDATE c SET name='李白' where name='刘备';
    
    -- id大于10的记录,长一岁
    UPDATE c set age=age+1 WHERE id > 10;
    

2.9 DELETE删除表中的记录

  • 语法:delete from 表名 where 条件

    -- 删除表c中id为6的记录
    DELETE FROM c WHERE id=6;
    
    -- 删除表c中name为诸葛亮的记录
    DELETE from c where name='诸葛亮';
    

2.10 TRUNCATE 删除表中的记录

  • 语法:(删除表的所有数据,保留表结构)

    truncate table 表名;
    
    -- 删除表c的所有数据
    TRUNCATE TABLE c;
    

2.11 DELETE和TRUNCATE区别

  • 在速度上,truncate>delete;
  • 如果想删除部分数据用delate,注意带上where子句;
  • 如果想保留表而将所有数据删除,自增长字段恢复从1开始,用truncate;

2.12 小结

    • insert into
    • delete
    • update
    • select

2.13 DROP TABLE 删除表

-- 删除表a
drop TABLE a;
-- 如果表a存在删除表a,如果不存在,不执行
drop table if EXISTS a;

三、字段的约束

3.1 常用的约束介绍

  • 主键(primary key):值不能重复,auto_increment代表值自动增长;
  • 非空(not null):此字段不允许填写空值;
  • 惟一(unique):此字段的值不允许重复;
  • 默认(default):当不填写此值时会使用默认值,如果填写时以填写为准。

3.2 创建带约束字段的语法格式

create table 表名(
	字段名 数据类型 约束,
	字段名 数据类型 约束,
	...
);

3.3 主键与自增长

  • 带有Primary key(主键)的字段,值不能重复;

  • auto_increment为自增长;

  • 语法

    create table 表名(
    	字段名 数据类型 primary key auto_increment,
    	字段名 数据类型 约束,
    	...
    );
    
/*
例1:创建表d字段要求如下:
	id:数据类型为int unsigned(无符号整数)),primary key(主键),auto_increment(自增长);
	name 姓名:数据类型为varchar(字符串)长度为10,
	age年龄:数据类型为int(整数):I
*/

drop table d;

CREATE TABLE if not EXISTS d(
	id int UNSIGNED PRIMARY KEY auto_increment,
	name VARCHAR(10),
	age int
);

insert into d values(1,'张飞',20);
INSERT into d(name,age) VALUE('刘备',55);
insert into d(name,age) values('关羽',33);
-- 插入时候指定了id的值
INSERT into d  VALUES (6,'曹操',33);
-- 不指定id的值,在最后一条id自增长
INSERT into d(name,age) VALUES('不后悔', 12);

-- 如果不指定字段,主键自增长字段的值可以用占位符,0或者null
INSERT into d values(null,'里斯',12);
INSERT into d values(0,'面试',12);

3.4 非空

  • 非空 not null

    • 这个字段必须有值,如果没有值,insert会插入失败

      /*
      例1:创建表e,字段要求如下:
      id:数据类型为int unsigned(无符号整数);
      name姓名:数据类型为varchar(字符串)长度为10,not null(非空),
      age年龄:数据类型为int(整数);
      */
      
      CREATE table if not EXISTS e(
      	id int UNSIGNED,
      	name VARCHAR(10) not null,
      	age int
      );
      
      INSERT into e values(1,'张三',33);
      SELECT * from e;
      
      -- insert into e(id,age) VALUES(2,30);
      -- INSERT into e values(1,null,33);
      

3.5 唯一

  • 唯一(unique):此字段的值不允许重复

  • 语法:

    create table 表名(
    	字段名 数据类型 unique,
    	...
    );
    
    /*
    例1:创建表f,字段要求如下:
    id:数据类型为int(整数);
    name姓名:数据类型为varchar(字符串)长度为10,unique(唯一);
    age年龄:数据类型为int(整数);
    */
    
    TRUNCATE table f;
    select * from f;
    
    create table if not EXISTS f(
    	id int,
    	name VARCHAR(10) UNIQUE,
    	age int
    );
    
    insert into f values(1,'里斯',20);
    -- insert into f values(2,'里斯',33);
    

3.6 默认值

  • 默认值(default):当不填写此值时会使用默认值,如果填写时以填写为准;

  • 语法:

    create table if not exists 表名(
    	字段名 数据类型 default 值,
    	...
    );
    
    /*
    例1:创建表g,字段要求如下:
    id:数据类型为int(整数):
    name姓名:数据类型为varchar(字符串)长度为10;
    age年龄:数据类型为int(整数),default(默认值)30;
    */
    
    TRUNCATE TABLE g;
    select * from g;
    
    create table if not EXISTS g(
    	id int,
    	name VARCHAR(10),
    	age int DEFAULT(30)
    );
    
    insert into g VALUES(1,'漳卅四年',12);
    DELETE from g where id=2;
    
    -- 插入时候不指定age的值
    insert into g(id,name) VALUES(2,'发达的');
    
posted @ 2022-03-14 23:14  cloudguest  阅读(36)  评论(0编辑  收藏  举报