当前位置:   article > 正文

数据库设计_数据库插入数据如何同时插入两个

数据库插入数据如何同时插入两个

数据库

  • 什么是sql
    • 一般结构化查询语言
  • 常见数据库
    • SQL Server
    • MySQL
    • Oracle
    • Sybase
    • DB2
    • H2
  • 为什么要用数据库
    • 存放数据方便,提高数据存放的效率及安全性,进行数据共享
  • 什么是数据库
    • 存放数据的仓库,将数据按照表的形式组织起来进行存放
  • 数据库的基础概念
    • 实体
      • 数据库中存放的每一条记录可以理解为一个实体,如学生表中的每一个学生,商品表中的每一个商品。
    • 属性
      • 每一个实体的特征,我们用属性来描述实体。(列、字段)
    • 数据
      • 如属性的属性值 001、张三就是数据。数据的形式保含文本信息、图片、视频、音频、日期时间等等
    • 常用的客户端
      • navicat sqlyog

数据库结构:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WENN08Sk-1645522464477)(image/202109181204910.gif)]

如果要使用CMD窗口作为客户端,需要配置环境变量,在path中添加如下变量值:Program Files\MySQL\MySQL Server 5.5\bin;

  • my.ini
  • 是mysql数据库核心配置文件

注意:使用数据库之前一定启动服务

  1. 数据库服务器
  2. mysql默认数据库
  • information_schema
    • 提供了访问数据库元数据的方式,数据库字典。 保存着关于MySQL服务器所维护的所有其他数据库的信息。(如数据库名,数据库的表,表栏的数据类型与访问权 限
  • mysql
    • mysql的核心数据库,类似于sql server中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息
  • performance_schema
    • 数据库服务器的性能参数

Sql语句

MySQL的语法规范

  1. 不区分大小写,但建议关键字大写,表名、列名小写
  2. 每条命令最好用分号结尾
  3. 每条命令根据需要,可以进行缩进或换行
  4. 注释
  • 单行注释:#注释文字
  • 单行注释:-- 注释文字
  • 多行注释:/* 注释文字 */

SQl语句分类

DDL data definition language 数据定义语句 (create alter drop)

DML data manipulation language 数据操作语句 (insert update delete)

DQL data query language 数据查询语句(select)

DCL data control lanugage 数据控制语句(grant revoke commit rollback)

MySQL常用命令

MySQL服务的登录和退出

登录:mysql 【-h 主机名 -P 端口号】 -u 用户名 -p密码

退出:exit或ctrl+C

MySQL服务的启动和停止

方式一:通过dos窗口

net start 服务名

net stop 服务名

查看服务器的版本

方式一:登录到mysql服务端

select version();

方式二:没有登录到mysql服务端

mysql --version 或 mysql --V

查看SQL执行情况

explain

数据类型

整数类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IsgWayg2-1645522464478)(image/202109181205723.jpg)]

int(4):配合zerofill进行使用,显示占4位宽度,不够会补零,需要是无符号

小数类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rnrKQvBr-1645522464479)(image/202109181205465.jpg)]

DECIMAL(max(65),max(30)):最大数字位数和最大小数位数

如果精确运算,使用DECIMAL,没有精确运算的需求,建议使用float double

字符串类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iWQHAEWJ-1645522464479)(image/202109181205912.jpg)]

char和varchar的区别

  • 场景区别:char适合存放定长字符串,varchar存放长度可变的字符串
  • 后面的数字:字符个数,char后面最多可以写到255,varchar:一行数据最多占65535个字节(除去Bolb类的数据类型)
  • 除去其他列所占的空间,剩余的空间和varchar后面写的字符个数有关系,编码不同,一个字符所占用的存储空间也不一样,所以也会影响varchar后字符个数
  • char是固定长度,char(5),如果存放了3个字符,也会按照5个字符占用存储空间
  • varchar(5):可变长度,如果存储了3个字符,会按照3个字符占用存储空间。
  • 速度区别:char优于varchar
  • 空格的处理:char会消灭掉字符后自己插入的空格,varchar不会

二进制数据类型

日期和时间数据类型

date和datetime的区别

  • date类型可用于需要一个日期而不需要时间的部分
    • 格式为YYYY-MM-DD 范围是’1000-01-01’ 到’9999-12-31’
  • datetime类型可用于需要同时包含日期和时间的信息的值
    • 格式为YYYY-MM-DD HH:mm:ss 范围是’1000-01-0100:00:00’ 到 ‘9999-12-3123:59:59’

enum和set的区别:

enum只能从列出来的值中选择一个作为数据,set可以从列出来的值中选择多个值作为数据。

三大范式:

第一范式

  • 每列保证原子性,且唯一

第二范式

  • 首先满足第一范式
  • 必须要有一个主键
  • 如果主键是复合主键,除了主键以外的其他列必须完全依赖于主键列,不能只依赖于主键的一部分

第三范式

  • 满足第二范式
  • 除了主键以外的其他列必须直接依赖于主键,不能间接依赖于主键

MySQL安装

1、下载mysql5.5

http://dev.mysql.com/downloads/mysql/5.5.html#downloads

2、开始安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ehvau1mX-1645522464482)(image/202109181205560.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ADbl435m-1645522464482)(image/202109181205633.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nUEYS99e-1645522464482)(image/202109181205104.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c6D76rDw-1645522464483)(image/202109181205937.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oqLDeK2o-1645522464483)(image/202109181205992.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aZii0oXI-1645522464483)(image/202109181206506.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eQoJ74JE-1645522464484)(image/202109181206196.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cvu7dV3s-1645522464484)(image/202109181206608.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qyY9guTW-1645522464484)(image/202109181206449.png)]

3、进行配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IOJmuVwl-1645522464485)(image/202109181206025.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zKtTLKdH-1645522464485)(image/202109181206480.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZNT4tRp-1645522464486)(image/202109181206347.png)]

此处选择详细配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qPjUMPNZ-1645522464486)(image/202109181206050.png)]

此处选择开发机

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4rVSyjOh-1645522464486)(image/202109181206516.png)]

此处选择多功能数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pHcvUP8S-1645522464487)(image/202109181206992.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZffQgZ4Q-1645522464487)(image/202109181206306.png)]

直接下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XirkidhX-1645522464488)(image/202109181206984.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xGw69hIv-1645522464488)(image/202109181206961.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RpXGGsN6-1645522464489)(image/202109181207594.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BI7OkJ37-1645522464489)(image/202109181207714.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q8YCdZJ9-1645522464490)(image/202109181207751.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ug1GhCw5-1645522464490)(image/202109181207654.png)]

库管理

建库操作

#创建数据库(默认字符集编码) 
create database test20210420 
#创建数据库的时候指定字符集编码以及字符校验规则 
create database test20210420 CHARACTER set = utf8 COLLATE utf8_general_ci 
#切换可用数据库(建表之前一定要切换) 
use test20210420 
#查看服务器的所有数据库 
show databases 
#删除数据库
drop database test20210420
#修改数据库字符集编码以及字符校验规则 
alter database test20210420 CHARACTER set = utf8 COLLATE utf8_general_ci 
#查看数据库信息 
show create database test20210420
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

表管理

建表操作

#创建表:创建表的格式 
create table student( student_id int, student_name varchar(20), student_birth int ) 
#插入数据的命令 
insert into student values(1,'姚明',20) 
#查询 
select * from student 
#删除表 
drop table student
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

复制表操作

#结构和数据一起复制(有创建表) 
create table testchar1 as select * from testchar 
#结构复制(有创建表) 
create table testchar2 like testchar
  • 1
  • 2
  • 3
  • 4

修改表操作

#1.给表中增加列 
alter table testchar add t_age int 
#2.给修改列名及列定义 
alter table testchar change t_name1 t_name2 varchar(50) 
#3.修改列定义
alter table testchar modify t_name2 varchar(100)
#4.删除列 
alter table testchar drop t_age
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

辅助命令

#查看当前数据库中所有的表 
SHOW TABLES; 
#查看表的定义信息 
SHOW CREATE TABLE testchar 
#删除表 
drop table testchar 
#表重新命名 
Rename table testchar to testchar3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

约束

NOT NULL非空,该字段的值必填

UNIQUE唯一,该字段的值不可重复

DEFAULT默认,该字段的值不用手动插入有默认值

CHECK检查,mysql不支持

PRIMARY KEY主键,该字段的值不可重复并且非空 unique+not null

FOREIGN KEY外键,该字段的值引用了另外的表的字段

主键和唯一的异同:

区别:

①一个表至多有一个主键,但可以有多个唯一

②主键不允许为空,唯一可以为空

相同点

①都具有唯一性

②都支持组合键,但不推荐

主表和从表:

主表(父表)被引用字段所在的表

在数据库中建立的表格即Table,其中存在主键(primary key)用于与其它表相关联,并且作为在主表中的唯一性标识。

从表(子表)

以主表的主键(primary key)值为外键(Foreign Key)的表,可以通过外键与主表进行关联查询。从表与主表通过外键进行关联查询。

修改表时添加或删除约

#1、非空     
    #添加非空     
    alter table 表名 modify column 字段名 字段类型 not null;     
    #删除非空     
    alter table 表名 modify column 字段名 字段类型 ; 
#2、默认     
    #添加默认   
    alter table 表名 modify column 字段名 字段类型 default;     
    #删除默认     
    alter table 表名 modify column 字段名 字段类型 ; 
#3、主键     
    #添加主键     
    alter table 表名 addconstraint 约束名】 primary key(字段名);   
    #删除主键     
    alter table 表名 drop primary key; 
#4、唯一   
    #添加唯一   
    alter table 表名 addconstraint 约束名】 unique(字段名);     
    #删除唯一     
    alter table 表名 drop index 索引名; 
#5、外键   
    #添加外键   
    alter table 表名 addconstraint 约束名】 foreign key(字段名) references 主表(被引用列);   
    #删除外键   
    alter table 表名 drop foreign key 约束名;
#自增长列
    #添加自增长列
    alter tablemodify column 字段名 字段类型 约束 auto_increment
    #删除自增长列
    alter tablemodify column 字段名 字段类型 约束 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

# 插入

方式一

语法:

insert into 表名 (字段名,...) values (,...);
  • 1

特点:

1、要求值的类型和字段的类型要一致或兼容

2、字段的个数和顺序不一定与原始表中的字段个数和顺序一致

但必须保证值和字段一一对应

3、假如表中有可以为null的字段,注意可以通过以下两种方式插入null值

①字段和值都省略

②字段写上,值使用null

4、字段和值的个数必须一致

5、字段名可以省略,默认所有列

方式二

语法:

insert into 表名 set 字段=,字段=,...;
  • 1

两种方式的区别:

1.方式一支持一次插入多行,语法如下:

insert into 表名(字段名,..) values(值,..),(值,...),...;
  • 1

2.方式二支持子查询,语法如下:

insert into 表名
查询语句;
  • 1
  • 2

修改

一、修改单表的记录

语法:

update 表名 set 字段=,字段=where 筛选条件;`
  • 1

二、修改多表的记录【补充】

语法:

update1 别名 
left|right|inner join2 别名 
on 连接条件  
set 字段=,字段=where 筛选条件;
  • 1
  • 2
  • 3
  • 4
  • 5

删除

方式一:使用delete

一、删除单表的记录
语法:
delete from 表名 where 筛选条件 limit 条目数
二、级联删除[补充]
语法:

delete 别名1,别名2 from1 别名 
inner|left|right join2 别名 
on 连接条件
where 筛选条件
  • 1
  • 2
  • 3
  • 4

方式二:使用truncate

语法:

truncate table 表名

两种方式的区别【面试题】

  1. truncate删除后,如果再插入,标识列从1开始;delete删除后,如果再插入,标识列从断点开始
  2. delete可以添加筛选条件;truncate不可以添加筛选条件
  3. truncate效率较高
  4. truncate没有返回值;delete可以返回受影响的行数
  5. truncate不可以回滚;delete可以回滚

基础查询

语法:

select 列名1, ... ,列名n from 表名
where 条件        -- 1、条件
group by 列名     -- 2、分组
having 条件       -- 3、条件
order by 列名     -- 4、排序
limit 开始,条数   -- 5、分页
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

关于列的操作

1、查询所有列所有行

select * from 表名
  • 1

2、查询指定列

#多列列名使用,隔开 
select 列名 from 表名
  • 1
  • 2

3、给列起别名

select 列名 [as] 别名,列名n [as] 别名n
  • 1

4、列查询并进行算术运算

    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/663837
    推荐阅读
    相关标签
      

    闽ICP备14008679号