mysql基础知识,数据库增删改查基本操作

一、增加(create add insert )
1,create操作库
create database 库名 新建库
create database 库名 character set 编码表

mysql数据库,是眼下选拔分外广泛的一款关系型数据库

一、数据库的查询用法

壹, 数据表记录的询问: 运算符、虑重、列运算、别名、排序、聚合函数、分组

Mysql数据库基础知识,mysql基础知识

E-昂科拉模型(实体关系模型)

  • 脚下物理的数据库都以比照E-RAV4模型进行规划的
  • E表示entry,实体
  • R表示relationship,关系
  • 3个实体转换为数据库中的2个表
  • 提到描述四个实体之间的相应规则,蕴涵
    • 一对一
    • 一对多
    • 多对多
  • 论及转移为数据库表中的五个列 *在关系型数据库中一行就是2个对象

   

数量引擎

MyISAM和InnoDB的区别

三范式

  • 透过商讨和对运用中难题的下结论,对于规划数据库提议了部分正式,那些规范被称作范式
  • 第贰范式(1NF):列不可拆分
  • 第一范式(2NF):唯一标识
  • 其三范式(3NF):引用主键
  • 注明:后一个范式,都以在前2个范式的基本功上确立的

   

字段类型

  • 在mysql中富含的数据类型很多,那里最首要列出来常用的二种
  • 数字:int,decimal
  • 字符串:
    • char(8):不可变,不够九个在左边补空格,
    • varchar(8):可变,不够八个的话,该是多少个就多少个,
    • text
  • 日期:datetime
  • 布尔:
    • bit(1): 0,1
    • bit(2): 00, 01, 10, 11
    • bit(3): 001, 010, 100,……   

约束

  • 主键primary key
  • 非空not null
  • 惟一unique
  • 默认default
  • 外键foreign key

   

长途连接

  • 貌似在铺子支出中,大概会将数据库统一搭建在一台服务器上,全数开发人士共用3个数据库,而不是在友好的处理器中安顿3个数据库
  • 运维命令
  • mysql -hip地址 -uroot -p

   

数据库

  • 创设数据库
    • create database test character utf8 collate utf8_general_ci;
  • 除去数据库
    • drop database 数据库名;
  • 切换数据库

    • use 数据库名;

       

数据表

  • 制造数据表
    • create table create_test(
    • id int(11) auto_increment primary key not null,
    • name varchar(20) not null,
    • birthday datetime,
    • gender bit default 0,
    • isDelete bit default 0
    • ) engine=InnoDB default charset=utf8;

   

  • 修改表

    alter table 表名 add|change|drop 列名 类型;
    如:
    alter table students add birthday datetime;

  • 删除表

    drop table 表名;

  • 查看表结构

    desc 表名;

  • 更改表名称

    rename table 原表名 to 新表名;

  • 查看表的创导语句

    show create table ‘表名’;

       

数据操作

  • 查询

    select * from 表名

  • 增加

    全列插入:insert into 表名 values(…)
    缺省插入:insert into 表名(列1,…) values(值1,…)
    而且插入多条数据:insert into 表名 values(…),(…)…;
    或insert into 表名(列1,…) values(值1,…),(值1,…)…;

  • 主键列是活动拉长,但是在全列插入时须要占位,平时使用0,插入成功后以实际数据为准

  • 修改

    update 表名 set 列1=值1,… where 条件

  • 删除

    delete from 表名 where 条件

  • 逻辑删除,本质就是修改操作update

    alter table students add isdelete bit default 0;
    倘使必要删除则
    update students isdelete=1 where …;

       

清空表

— 清空全部数码,不写日记,不可復苏,速度极快

truncate table 表名;

— 清空全体数据,写日记,数据可还原,速度慢

delete from 表名

   

翻看字符集

show variables like ‘%char%’;

   

数据备份

  • 进去特级管理员

    sudo -s

  • 进入mysql库目录

    cd /var/lib/mysql

  • 运行mysqldump命令

    mysqldump –uroot –p 数据库名 > ~/Desktop/备份文件.sql;
    按指示输入mysql的密码

数据苏醒

  • 再三再四mysqk,创立数据库
  • 退出连接,执行如下命令

    mysql -uroot –p 数据库名 < mysql基础知识,数据库增删改查基本操作。~/Desktop/备份文件.sql
    根据指示输入mysql密码

       

多少查询(where中的优先级)

  • 小括号,not,相比运算符,逻辑运算符
  • and比or先运算,即使还要出现并愿意先算or,需求整合()使用   

多少查询(where和having 的分别)

  • where是对from前面指定的表展开多少筛选,属于对原有数据的筛选
  • having是对group by的结果举办筛选,属于对分组数据的筛选

   

多少聚合操作

  • select count(*) from students;
  • select max(id) from students where gender=0;
  • select min(id) from students where isdelete=0;
  • select sum(id) from students where gender=1;
  • select avg(id) from students where isdelete=0 and gender=0;

   

数量分组

  • select gender as 性别,count(*) from students group by gender having
    gender=1;   

排序

  • select * from 表名 order by 列1 asc|desc,列2 asc|desc,…   

去除重复行

  • select distinct * from …   

外键的安装

  • 在创建表时可以直接创建约束

    create table scores(
    id int primary key auto_increment,
    stuid int,
    subid int,
    score decimal(5,2),
    foreign key(stuid) references students(id) on delete cascade,
    foreign key(subid) references subjects(id) on delete cascade
    );

       

  • 也得以在创制好数据表后单独创立外键约束

    alter table scores add constraint stu_sco foreign key(stuid)
    references students(id) on delete cascade;

       

  • 级联操作的种类包涵:

    • restrict(限制):默认值,抛异常
    • cascade(级联):即使主表的笔录删掉,则从表中相关联的记录都将被去除
    • set null:将外键设置为空
    • no action:什么都不做   
  • 商店中貌似会在主表中开创逻辑删除字段(isDelete).

       

连表查询

select students.sname,subjects.stitle,scores.score
from scores inner join students on scores.stuid=students.id;

注:inner join …on…左右的标志无所谓顺序,读取三个表的整整字段

left join…on… 和 right join…on…
查询其中1个的一体数量字段,另1个未曾也无全数,null填充

E-奇骏模型(实体关系模型) 当前物理的数据库都以鲁人持竿 E-奥迪Q5 模型进行设计的 E
表示 entry ,实体 PAJERO 表示 re…

2,create 操作表结构
新建表:
create table 表名(
id int primary key auto_increment,
name varchar(20),
………….
);
primary key 主键约束(该列唯一值)
auto_increment 主键表自动增进
add 添加字段 alter table 表名 add 列名 数据类型 约束

时下采纳的数据库,主要分为两类

1.1数据准备

style=”font-size: 1.167rem;”>create table exam(

  id
int primary key auto_increment,

 
name varchar(20) not null,

 
chinese double,

 
math double,

 
english double

style=”font-size: 1.167rem;”>);

style=”font-size: 1.167rem;”>insert into exam
values(null,’关羽’,85,76,60);

style=”font-size: 1.167rem;”>insert into exam
values(null,’张飞’,70,75,70);

style=”font-size: 1.167rem;”>insert into exam
values(null,’赵云’,90,65,95);

style=”font-size: 1.167rem;”>insert into exam
values(null,’刘备’,97,50,50);

style=”font-size: 1.167rem;”>insert into exam
values(null,’曹操’,90,89,80);

style=”font-size: 1.167rem;”>insert into exam
values(null,’司马懿’,90,67,65);

style=”font-size: 1.167rem;”>insert into exam
values(null,’刘阿斗’);

3,insert 操作表数据内容
insert into 表名(列名1,列名2,列名3)values(值1,值2,值3)
insert into 表名 (列名) values (值)
insert into 表名 values (全列值)
insert into 表名 (列名1,列名,列名) values (值1,值2,值3),(值1,值2,值3)

1.文档型,如sqlite,就是贰个文书,通过对文件的复制成功数据库的复制

1.2 数据查询

style=”font-size: 1.167rem;”>文件结构:

style=”font-size: 1.167rem;”>名字:    

style=”font-size: 1.167rem;”>语法:

█▓     查询全数音讯

     
 select * from 表名

█▓    查询指定列的音信

       
select 列名,列名… from 表名;

█▓     条件查询

       
select * from表名 where 条件

 

█▓    运算符

        

 

 

相比运算符

>  <<=  >=  =<>

胜出、小于、大于/小于等于、不对等

between 1 and 10

突显某一区间的值:1—10里边

in(1,2,3)

体以往in列表中的值:一,二,3无限制两个

Like ‘张_’

997755.com澳门葡京,Like ‘张%’

张冠李戴查询:%表示零或随意多个字符,_意味着壹个字符.

例子1:张三丰      like ‘张%’

例子2:张三        like ‘张_’

is null、is not null

是否为空

 

逻辑运算符

and&&

三个原则还要创造

or||

两个标准化任意五个创造

not!

不成立,例如:where
not(age>18)

█▓     
 虑重

        查询排重:select distinct 列名 from 表名 where 条件;

 

█▓     
 别名以及列运算

        select 列名 as 别名, 列名 as 别名 … from 表名 where
条件;

 

█▓     order by 排序 

        select * from 表名 order by 列名 asc desc;

█▓     关于null 问题 

        通过 ifnull(values,default)解决 

 

█▓    SQL中聚合 / 聚集函数

     
  聚集函数:四个数据开展演算,运算出七个结实。例如,求和,平均值,最大值,最小值。

997755.com澳门葡京 1

        语法:select avg(列名) from 表名;都以坐落 select 后

 

█▓  █▓  █▓      group by 分组查询

            select  … from … group by 列名;

 

 

█▓  █▓  █▓ █▓  █▓  █▓ █▓  █▓  █▓ █▓  █▓ 重在总括 select
语句执行种种
  █▓  █▓ █▓  █▓  █▓ █▓  █▓  █▓ █▓  █▓  █▓ 

 

select
…要呈现的内容.. from …表名.. where 条件…. group by …分组的列 …having
…分组后的标准… order by …排序

 

select …4… from
…1.. where …2.. group by ..3…having ..5… order by …6.

 

 

二、删除(drop delete truncate)
1,操作库
drop database 数据库名

2.服务型,如mysql、postgre,数据存储在多个大体文件中,不过急需运用极限以tcp/ip协议连接,举办数据库的读写操作

二、数据备份和还原

█▓  █▓  █▓    
 1.备份

    

语法:mysqldump -u 用户名 -p 数据库名 > 磁盘SQL文件路径

 █▓  █▓ █▓      
 2.恢复

        復苏措施1:

                1.开立数据库

                           
备份的时候,没有备份创设数据库的语句,当必要恢复生机有个别具体数据的时候需求手动创造

                  2. 导入数据

                    source D://mydb.sql

          复苏措施2:

                1.创建数据库

                 2.语法:mysql -u 用户名 -p 导入库名 <
硬盘SQL文件相对路径

                

2,操作表结构
drop table 表名 (删除的是成套表)
alter table 表名 drop 列名 删除列
3,操作表数据
delete from 表名 where 条件
delete from 表名 (没有where条件,删的是表中装有记录,逐行删除)
truncate table 表名 (先删除表,再次创下设表,等于删除全部表)

E-R模型

三、外键约束

 

添加外键须求留意的标题


倘使从表要去添加多少个外键约束。须要主表被引述的字段是主键或然唯一的。寻常使用主键。


若是要删减主表中的数据。须要在从表中那几个数目,要没有被引用,才足以去删除。


倘若要向从表中去丰硕多少。须要在主表中,要有对应的数额。才方可去丰盛。


要是要删除表。要先删除从表。然后去删除主表。


新建表的时候。要求先去创制主表,然后去创立从表。

 

功用:保持数据的完整性,和卓有功效。

 

 

1.添加外键约束的语法

       
   
创造表之后添加外键

█▓  █▓        alter table 从表名称    add foreign key
(外键列的名目)references 主表名称(主键)

 

               
创设表的时候拉长外键

/*成立单位表*/

create table dept(

       id int primary key auto_increment,

       name varchar(20)

);

/*创造员工表*/

create table employee(

       id int primary key auto_increment,

       name varchar(20),

       age int ,

       salary double,

       dept_id int,

       foreign key (dept_id) references
dept(id)

);

 

总结:

库的操作

创建库:create database 库名 character
set 编码表;

删除库:drop database 库名;

查询库:show databases;

查看库的编码表:show create database 库名;

更改库:use 库名;

翻开当前正在使用的库:select database();

修改库的编码表:alter database 库名 character
set 编码表;

 

表本身的操作

创设表:create table 表名(
列名 列的花色(长度) 
类的羁绊
,列名 列的档次(长度) 
类的约束…… );

删除表:drop table 表名;

查询表:show tables;

查看表的构造:desc 表名;

查看表的编码表:show create table 表名;

修改表:alter table 表名 增/删/改 列名 列的品种(长度)
约束;

add/drop/change/modify

修改表名:rename table 旧表名 to
新表名;

 

 

表中多少的操作

增:insert into 表名(列名)
values(值);

删:delete from 表名 where
条件;  truncate

改:update 表名 set
列名=值 ,列名=值
where 条件;

查:select 列名 as
别名 ,列名 as 别名… from
表名  where 条件 group by 列名 having 条件 order by 排序.

询问排重:select distinct 列名 from
表名 where 条件;

 

 

聚合函数:

count 总结个数、sum求和、avg 平均值、max、min

在利用那多少个函数举办多少的总括分析时,有时要求对数据表中的列举行数量的分组处理。group by

 

分组
group by :

 

 

排序:order  by 列名  asc | desc;

 

 

 

 

 

 

 

 

 

<wiz_tmp_tag id=”wiz-table-range-border” contenteditable=”false”
style=”display: none;”>

 

 

 

 

出自为知笔记(Wiz)

start transaction 开启事务 执行delete删除,rollback 事务回滚可找回
start transaction 开启事务 执行truncate删除,rollback 事务回滚不可找回

当下物理的数据库都以按部就班E-奥德赛模型举行设计的

三、修改 (alter modify change rename
update)
1,操作库
use 库名:更改库

E表示entry,实体

2,alter 修改表的构造
modify 修改约束类型 alter table 表名 modify tel varchar(50)
change 修改列名 alter table 表名 change 旧列名 新列名 数据类型 约束
rename 修改表名 alter table 旧表名 to 新表名
alter database 数据库名称 character set 编码表

R表示relationship,关系

3,update 操作表格数据
update 表名 set 列1 = 值1, 列2 = 值2 where 条件
where 条件:
id=6
id<>6 id 不等于6
id<=6
&& || ! and、or、not
id in(1,3,4,5)
is null为空,is not null 不为空
ifnull(值1,0);若为空,设置值为0;

2个实体转换为数据库中的一个表

四、查询(select show )
1,操作库
show databases
show create database 库名: 查看库编码表
select database(); 查看正在选拔的库

事关描述七个实体之间的附和规则,包涵

2,操作表结构
show tables; 查询表
desc 表名; 查看表结构
show create table 表名; 查看表的编码

1.一对一

3,操作表数据
select 列名1,列名2 from 表名 查询指定列的数据
select * from 表名 查询全部列的数目

2.一对多

关键字:
as:重命名
like: 模糊查询 like%、%like%、like__

3.多对多

格式:
select 列名 as 别名 ,列名 as 别名… from 表名 where 条件1 group by 列名
having 条件2 order by 排序
表明: 条件1 会先实施过滤 -> 进行分组 -> 条件2 进行过滤

波及转移为数据库表中的3个列在关系型数据库中一行就是壹个对象

逐条表达:select …要出示的内容.. from …表名.. where 条件…. group by
…分组的列 …having …分组后的尺度… order by …排序?
select …5… from …1.. where …2.. group by ..3…having ..4… order by
…6.

三范式

查询排重:
select distinct 列名 from 表名 where 条件

通过切磋和对使用中难点的下结论,对于规划数据库提议了有些正规,那一个规范被称之为范式

 

1.首先范式(1NF):列不可拆分

五、聚合函数:
count 总计个数、sum 求和、 avg 平均值、max、 min

2.次之范式(2NF):唯一标识

分组处理:group by

3.第2、范式(3NF):引用主键

排序: order by 列名 asc|desc

表达:后二个范式,都以在前一个范式的根基上树立的

六、多表设计
1、一对多
比如 2个机构有四个人,一个人只有多个单位
外键约束格式:
alter table 从表名称 add foreign key (外键列的名称) references
主表名称(主键)
创制表时候,直接开立主键约束
dept_id int,
foreign key (dept_id) references dept(id)
2、多对多
譬如说:1个类型被多个程序员写,七个程序员写多少个门类
3、一对一
譬如 1个人惟有一份个人档案,一个档案对应壹位

约束:

七、数据备份及回复:
1,备份
mysqldump -u 用户名 -p 数据库名 > 磁盘SQL文件路径
mysqldump uroot -p zhangwu> G:\mybases2.sql
Enter password:123

1.主键primary key

2,恢复
措施一:创立数据库,导入数据
create database db1:
use db1;
source G://mybases2.sql

2.非空not null

情势二:创设数据库,命令行中输入
create database db2:
退出数据库,在dos下输入
mysql -uroot -p db2 < G://mybases2.sql
Enter password:123

3.惟一unique

八、范式:
首先范式:1NF:数据库表的每一列都以不可分割的原子数据项
先是范式每一列不可再拆分,称为原子性。

4.默认default

其次范式:2NF:第1、范式就是在率先范式的底子上存有列完全器重于主键列
其次范式的性状:
1) 一张表只描述一件工作。
2) 表中的每一列都完全依靠于主键

5.外键foreign key

其三范式:3NF:全数列不依赖于其余非主键列,约等于在满意2NF的根基上,任何非主键列不得传递正视于主键。
所谓传递正视,指的是只要存在”A → B →
C”的决定涉及,则C传递依赖于A。由此,餍足第1范式的数码库表应该不存在如下正视关系:主键列
→ 非主键列x → 非主键列y。

数据库操作

以身作则:学生音讯表
学号 姓名 年龄 所在高校 高校地点

·创造数据库

满意第三,范式,不满意第二范式
存在传递的支配涉及:
学号?所在大学 ? 高校地方

create database数据库名charset=utf8;

拆分成两张表
学号 姓名 年龄 所在高校的数码(外键)
大学编号 所在大学 高校地方

·删除数据库

三大范式小结:
范式 特点
1NF 原子性:表中每列不可再拆分。
2NF
不爆发部分倚重,一张表只描述一件业务。白哦中的每一列是一心依赖于主键的。
3NF
不发出传递依赖,表中每一列都一直器重于主键。而不是透过别的列直接器重于主键。

drop database数据库名;

·切换数据库

use数据库名;

·查看当前甄选的数据库

select database();

表操作

·查看当前数据库中全部表

show tables;

·创建表

auto_increment表示自动增加

create table表名(列及类型);

如:

create table students(

id int auto_incrementprimary
key,

sname varchar(10) not null

);

·修改表

alter table表名add|change|drop列名类型;

如:

alter table students add
birthdaydatetime;

·删除表

drop table表名;

·查看表结构

desc表名;

·更改表名称

rename table原表名to新表名;

·查看表的制造语句

show create table ‘表名’;

数码操作

·查询

select * from表名

·增加

全列插入:insert into表名values(…)

缺省插入:insert into表名(列1,…) values(值1,…)

与此同时插入多条数据:insert into表名values(…),(…)…;

或insert into表名(列1,…) values(值1,…),(值1,…)…;

·主键列是自动拉长,可是在全列插入时索要占位,平时使用0,插入成功后以实际数据为准

·修改

update表名set列1=值1,… where条件

·删除

delete from表名where条件

·逻辑删除,本质就是修改操作update

alter table students add isdelete bit default 0;

假定要求删除则

update students isdelete=1 where …;

备份与还原

Ø数据备份

·进入特级管理员

sudo -s

·进入mysql库目录

cd /var/lib/mysql

·运行mysqldump命令

mysqldump –uroot –p数据库名> ~/Desktop/备份文件.sql;

按提醒输入mysql的密码

Ø数据复苏

·连接mysqk,成立数据库

·退出连接,执行如下命令

mysql -uroot –p数据库名< ~/Desktop/备份文件.sql

根据提醒输入mysql密码

1.1.1总结

·数据库解决的题材,E-PAJERO模型,三范式

·图形界面操作数据库、表、数据

·命令行操作数据库、表、数据

1.1.2作业

·完善学员表、科目表及数量

·设计两张表,须求是一对多的涉及

1.2查询

简介

·查询的主干语法

select * from表名;

·from关键字背后写表名,表示数据来源是这张表

·select后面写表中的列名,尽管是*意味着在结果中显示表中保有列

·在select前边的列名部分,可以使用as为列起别名,这几个别名出现在结果集中

假若要询问多个列,之间利用逗号分隔

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website