数据库的重点学习

数据库

(Database)

学完本次课程后,你能够:

了解MySQL数据库

学会安装MySQL

学会使用SQLyog数据库管理工具

了解常用的数据库命令

熟悉创建数据库表的语句

熟悉常见的数据列属性、类型和索引

数据库(Database,简称DB)

关系型数据库(SQL)MySQL、Oracle、SQL Server、SQLite、DB2

非关系型数据库(NOSQL)Redis、MongoDB

数据库管理系统(Database Management System)

数据管理软件,科学组织和存储数据、高效地获取和维护数据

数据库默认端口3306

#显示所有数据库
show databases ;
​
#创建数据库
create database myschool;
create database if not exists myschool;
​
#选中要使用数据库
use myschool;
​
#删除数据库
drop database myschool;
create database if not exists myschool;
​
#建表语句
create table if not exists subject(
    subjectno   int(11) primary key(主键) auto_increment,(自动增长)
    subjectname varchar(50),(字符串)
    classhour   int(4),
    gradeid     int(4)
);

每次使用数据库时,要使用use 语句选中后执行

subjectnosubjectnameclasshourgradeid
1数学481

create table if not exists demo(
    id int(10) primary key auto_increment,
    name varchar(5)
);
#删除表
drop table if exists demo;

可以连接两个数据库或连接外部计算机

#连接外部计算机
#mysql -uroot -h192.168.153.149 -p;
#Enter password:

结构化查询语句SQL

结构化查询语句分类

名称解释命令
DDL(数据定义语言)定义和管理数据对象,如数据库,数据表等CREATE、DROP、ALTER
DML(数据操作语言)用于操作数据库对象中所包含的数据INSERT、UPDATE、DELETE
DQL(数据查询语言)用于查询数据库数据SELECT
DCL(数据控制语言)用来管理数据库的语言,包括管理权限及数据更改GRANT、COMMIT、ROLLBACK

#查看表的信息描述
desc demo;
desc subject;
describe demo;

反引号:系统关键字的标注,表示这个是为了建表需要,算是标准化写法,可不加,

反引号用于区别MySQL保留字与普通字符而引入的

反引号在1旁边

# CREATE TABLE `subject` ((反引号)
#   `subjectno` int NOT NULL AUTO_INCREMENT,
#   `subjectname` varchar(50) DEFAULT NULL,
#   `classhour` int DEFAULT NULL,
#   `gradeid` int DEFAULT NULL,
#   PRIMARY KEY (`subjectno`)
# ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

列类型

列类型

规定数据库中该列存放的数据类型

分为

1数值类型

2字符串类型

3日期和时间型数值类型

4NULL值

数值类型

类型说明取值范围存储需求
tinyint非常小的数据有符值: -2**7** ~ 2**7-1** 无符号值:**0 ~ 28-1**1**字节**
smallint较小的数据有符值: -2**15** ~ 2**15-1** 无符号值: 0 ~ 2**16-1**2**字节**
mediumint中等大小的数据有符值: -2**23** ~ 2**23-1** 无符号值: 0 ~ 2**24-1**3**字节**
int标准整数有符值: -2**31** ~ 2**31-1** 无符号值:**0 ~ 232-1**4**字节**
bigint较大的整数有符值: -2**63** ~2**63-1无符号值:0 ~264-1**8**字节**
float单精度浮点数±1.1754351e -384**字节**
double双精度浮点数±2.2250738585072014e -3088**字节**
decimal字符串形式的浮点数decimal**(m,** d**)**m**个字节**

字符串类型

类型说明最大长度
char**[(M)]**固定长字符串,检索快但费空间, 0 <= M <= 255M**字符**
varchar**[(M)]**可变字符串**0 <= M <= 65535**变长度
tinytext微型文本串2**8–1字节**
text文本串2**16–1字节**

日期和时间型数值类型

类型说明取值范围
DATEYYYY-MM-DD**,日期格式**1000-01-01~ 9999-12-31
TIMEHh:mm:ss ,时间格式-838:59:59~838:59:59
DATETIMEYY-MM-DD hh:mm:ss1000-01-01 00:00:00 至**9999-12-31 23:59:59**
TIMESTAMPYYYYMMDDhhmmss**格式表示的时间戳**197010101000000 ~2037**年的某个时刻**
YEARYYYY**格式的年份值**1901~2155

NULL值

理解为“没有值”或“未知值”

不要用NULL进行算术运算,结果仍为NULL

选择数据类型

整数和浮点

日期类型

char和varchar

数据字段属性2-1

UNSIGNED

无符号的声明该数据列不允许负数

ZEROFILL

0填充的

不足位数的用0来填充,如 int(3),5则为 005

AUTO_INCREMENT

自动增长的,每添加一条数据,自动在上一个记录数上加1通常用于设置主键,且为整数类型可定义起始值和步长

NULL 和 NOT NULL

默认为NULL,即没有插入该列的数值

如果设置为NOT NULL,则该列必须有值

DEFAULT

默认的

用于设置默认值

例如,性别字段,默认为“男”,否则为“女”;若无指定该列的值,则默认为“男”的值

创建数据表student

create table  student(
    StudentNo int(4) not null comment '学号',
    loginpwd varchar(20) default null,
    studentname varchar(20) default null comment '学生姓名',
    sex tinyint(1) default 1 comment '性别,取值0或1',
    gradeid int(11) default null comment '年终编号',
    phone varchar(50) not null comment '联系电话',
    address varchar(255) not null comment '地址',
    borndate datetime default null comment '出生时间',
    email varchar(50) not null comment '邮箱账号',
    identitycard varchar(18) default null comment '省份证号'
)engine=InnoDB;

设置数据表字符集

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

数据表的存储位置

MySQL数据表以文件方式存放在磁盘中

包括表文件、数据文件以及数据库的选项文件

位置:MySQL安装目录\data下存放数据表。目录名对应数据库名,该目录下文件名对应数据表

修改数据表

#修改表名
alter table demo rename as demo1;
#修改表内列的名字
alter table demo1 change name username varchar(50) not null comment '用户名';
#新增表中列
alter table demo1 add password varchar(32) not null comment '用户密码,不能为空';
#删除表中的列
alter table demo1 drop password;

MySQL数据管理

外键管理

在建表时创建索引和外键约束

第一种建表时直接创建外键约束

#建表时直接创建外键约束
create table mystu(
    id int(10) primary key auto_increment,
    name varchar(32)not null default '未录入姓名' comment '学生姓名',
    gradeid int(10),
    constraint fk_gradeid foreign key (gradeid) references grade(gradeid)
    #外键的重点代码
);
#在上述代码前添加
insert into grade(gradeid, gradename) values (null,'一年级'),(null,'二年级');
select * from grade
#一测试外键功能
insert into mystu(id,name,gradeid) value (null,'花少',1);————可以创建添加数据
#二测试外键功能
insert into mystu(id,name,gradeid) value (null,'花少',3);————不能创建由于外键的约束

第二种 建表后再创建外键约束

#建表后再创建约束
create table mystu(
    id int(10) primary key auto_increment,
    name varchar(32)not null default '未录入姓名' comment '学生姓名',
    gradeid int(10)
);
alter table myschool.mystu add constraint fk_gradeid foreign key (gradeid) references grade(gradeid);

不太常用,主要约束会在开发时自成体系

#删除外键
alter table myschool.mystu drop foreign key fk_gradeid;
insert into mystu(id,name,gradeid) value (null,'方总',3);---删除外键索引后不会报错
#删除外键索引
alter table myschool.mystu drop index fk_gradeid;

DML语言

(数据操作语言)

用于操作数据库对象中所包含的数据

包括

INSERT ( 添加数据语句 )

UPDATE ( 更新数据语句 )

DELETE ( 删除数据语句 )

插入数据

INSERT INTO 表名 [ ( 字段1, 字段2, 字段3, … ) ] VALUES ( '值1', '值2', '值3', …)

1 字段或值之间用英文逗号隔开

2 “字段1, 字段2…”该部分可省略,但添加的值务必与表结构数据列顺序相对应,且数量一致

3 可同时插入多条数据,values 后用英文逗号隔开

insert into grade(gradeid,gradename) value (null, '三年级');
insert into grade value(null,'四年级');
insert into grade(gradename) values ('五年级'),('六年级');#插入多行数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值