首页 > 代码库 > Mysql(个人学习笔记20170321-20170328)

Mysql(个人学习笔记20170321-20170328)

Mysql(个人学习笔记20170321-20170328

 

 

数据库定义:按数据结构组织,存储,管理数据的仓库

 

常见数据库:Mysql,Oracle,Sql server

 

数据库由二维表组成,表格由若干记录,每条记录由若干字段组成

 

理解为Excel的话 列为字段,行为记录

 

设计数据库步骤

1,确定功能列表

2,确定可见数据参数类型

常用类型有

Int 整数型

Float 小数

Varchar(长度) char(长度) 字符串 (赋值需要单引号)

区别:varchar 长度可变,不足位数自动取消,节约空间,但查询效率低

     Vhar 长度固定,占空间,但查询效率高

 

3,确定实体->数据集合->一类数据对应一类实体

4,确定每个实体的属性

5,确定实体间的关系

主表:主键 从表:外键

主键用来唯一标记一条记录

主外键类型,长度必须一致

每张表应有主键约束

可以多个字段组合成一个主键,或新增一个自增字段做主键

 

6数据库的约束

Primary key 主键约束

Foreign key 外键约束

Not null 非空约束

Enum 枚举

Unique 唯一约束

Default 默认值

 

Mysql安装(见安装手册)

 

 

命令提示符CMD下执行

(可添加环境变量)

如已添加环境变量,CMD:mysql_-uroot_-p密码 可直接进入

远程进入mysql_-hIP地址_-P端口号_-uroot_-p密码

 

数据库命令

显示 show database

创建库 create database 库名

进入库 use 库名

删除库 drop database 库名

显示表show tables

创建表 create table表名(字段 类型,字段 类型.....)

删除表 drop table 表名

查看表结构 desc 表名

增加表字段 alter table 表名 add 字段名 类型

删除表字段 alter table 表名 drop column(可不写) 字段名

修改字段属性 alter table 表名 modify 字段名 要修改为的字段名 要修改为的类型

 

Navicat工具

Connection 连接

创建库,创建表()

 

示例

学生信息系统

表名

字段名

字段类型

说明

约束(中文)

约束(英文)

学生表

XH

varchar(10)

学号

主键

primary key

XM

varchar(20)

姓名

非空

not null

NL

int

性别

/

/

XB

/

籍贯

枚举

enum

JG

varchar(20)

年龄

/

/

BJ

varchar(10)

班级

非空

not null

SFZH

varchar(18)

身份证号

唯一

unique

ZCRQ

timestamp

注册日期

默认值

default current_timestamp

 

 

 

 

 

 

表名

字段名

字段类型

说明

约束(中文)

约束(英文)

课程表

kcm

varchar

课程名

非空

not null

kch

varchar

课程号

主键

primary key

 

 

 

 

 

 

表名

字段名

字段类型

说明

约束(中文)

约束(英文)

成绩表

xh

varchar

学号

外键

foreign key

kch

varchar

课程号

外键

foreign key

cj

int

成绩

非空约束

not null

 

     

 

任意建立库,在建好的库下queries下编写

create table xsb(

xh varchar(10) primary key,

xm varchar(20) not null,

xb enum(‘‘,‘‘),

jg varchar(50) not null,

nl int not null,

bj varchar(10) not null,

sfzh char(18) unique,

zcrq timestamp default current_timestamp)

 

create table kcb(kch int primary key,

kcm varchar(50) not null)

 

create table cjb(kch int,foreign key(kch) references kcb(kch),

xh varchar(10),foreign key(xh) references xsb(xh),

cj int not null)

 

分段,分表选中,右键,run selected

 

:自增字段做主键示例

Id int primary key auto increment

Auto increment(自动增长)

 

注释 -- 或者 /*多行注释*/

 

建表时需先建主表,再建从表

删表时候先从表,再主表

 

Select语句

基本格式

Select *

From

Where 条件

 

模糊查找 示例

姓张

Xm like ‘%’

李某某

Xm like ‘__’(2个下划线)

 

比较运算符 <, > ,>= ,<=, != (<>也是不等于)

 

两者之间 between A and B (包括边界)

 

和条件 and

 

或条件 or

 

....范围内 in 不在 not in

 

存在 exists 不存在 not exists

 

排序 order by 条件 asc升序/desc降序

 

为空 is null

 

不为空 is not null

 

统计 count(*)统计全纪录 count(字段名) 统计该字段不为空的纪录

 

最高 最低 平均 总和 max min avg sum

 

分组 group by 条件

 

去重 select distinct 字段

 

分组后条件统计 having count(*)

 

分组后条件筛选 having 条件

 

示例 统计男女人数

Select count(*)

From xsb

Group by xb

以上查询并不显示男女字段,如需显示

Select count(*),xb

From xsb

Group by xb

select后面查询的结果均显示

 

 

 

多表查询

 

嵌套查询:将一个select的查询结果作为另一个select的查询条件

 

示例

查张三的数学成绩

张三在xsb

数学在kcb

成绩在cjb

 

则嵌套查询为

Select cj

From cjb

Where xm=(select xm from xsb where xm=’张三’) and kch=(select kch from kcb where kcm=’数学’)

 

当有可能存在多个结果时 ‘=’ 可以换成in

 

优点:查询效率高,记录不会增加

缺点:复杂,逻辑性强

适用:查询结果来源于同一张表

 

等值连接:

多张表记录按个数连乘,组成的结果称之为:笛卡尔积

示例一样

Select cj

From xsb,kcb,cjb

Where xsb.xh=cjb.xh and kcb.kch=cjb.kch and xm=’张三’ and kcm=’数学’

写清主键外键对应关系即可

 

优点:简单

缺点:效率不高,记录快速增长

适用:不适用于海量数据

 

 

内连接

直接用示例

Select cj

From xsb inner join cjb on xsb.xh=cjb.xh inner join kcb on kcb.kch=cjb.kch

Where xm=’张三’ and kcm=’数学’

 

 

 

 

外连接(,)

显示左/右表的全部数据

 

示例

Select cj

From xsb left join cjb on xsb.xh=cjb.xh

显示xsb全部信息和cjb的信息

 

Select cj

From cjb right join xsb on xsb.xh=cjb.xh

显示xsb全部信息和cjb的信息

 

左右可效果一样

 

新增表数据

 

Insert into 表名(字段1,字段2,字段3)

Values(‘1’,’2’,’3’)

添加所有字段记录时,insert into() values后面值的顺序必须一致

也可(字段1,字段3,字段5)如此加入,但是需要注意,创建表时有约束为非空字段的地方必须要写上值才能执行

 

修改功能

Update 表名 set 字段=修改后的值

Where 条件

修改多个值

Update 表名 set 字段=修改后的值,字段2=修改后的值

 

级联更新

Navicat下选从表,design编辑,foreign key外键下 on updata/on delete

四种

RESTRICT / NO ACTION 从表记录不存在时才能更新/删除从表,主表不变

CASCADE 更新/删除主表时,自动更新/删除从表,更新/删除从表时,主表不变

SET NULL 更新/删除主表时,自动更新从表值为NULL,删除从表时,主表不变

 

 

补充:

 

修改表名 alter table 表名 rename 新表名

修改字段名 alter table 表名 change 字段名 新字段名 新类型

Limit m,n 数据从m+1行显示,共显示nm0开始记

删除

删除表的所有记录 Delete from 表名

删除某记录 delete from 表名

 Where 条件

统计sql语句执行时间

Set profiling =1(0为关闭)

查看是否开启 select @@profling

查看执行时间 show profiles

 

Mysql(个人学习笔记20170321-20170328)