初识MySQL——人生若如初相逢
CREATE TABLE `student`(
`studentNo` INT (4) NOT NULL PRIMARY KEY COMMENT '学号',
`loginPwd` VARCHAR(20) NOT NULL COMMENT '密码',
`studentName` VARCHAR (50) NOT NULL COMMENT '姓名',
`sex` CHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
`gradeId` INT (4) UNSIGNED COMMENT'年级编号',
`phone` VARCHAR(50)COMMENT'电话',
`address` VARCHAR(255)COMMENT'地址',
`bornDate` DATETIME COMMENT'出生日期',
`email` VARCHAR(50) COMMENT '邮件帐号',
`identityCard` VARCHAR (18) UNIQUE KEY COMMENT'身份证号'
);
DROP TABLE `student`
CREATE TABLE `subject`(
`subjectNo` INT (4) PRIMARY KEY AUTO_INCREMENT COMMENT'课程编号',
`subjectName` VARCHAR(50) COMMENT'课程名称',
`classHour` INT (4)COMMENT'学时',
`gradeId`INT (4) COMMENT'年级编号'
)
CREATE TABLE `result`(
`studentNo` INT (4) NOT NULL COMMENT'学号',
`subjectNo` INT(4) NOT NULL COMMENT'课程编号',
`examDate` DATETIME NOT NULL COMMENT'考试日期',
`studentResult` INT(4) NOT NULL COMMENT'考试成绩'
)
CREATE TABLE `grade`(
`gradeId` INT(4) NOT NULL COMMENT'年级编号',
`gradeName` VARCHAR(50) NOT NULL COMMENT'年级名称'
)COMMENT='年级表';
#创建主键
ALTER TABLE `grade`ADD CONSTRAINT pk_grade PRIMARY KEY `grade`(gradeId);
ALTER TABLE `grade`MODIFY `gradeId` INT(4) NOT NULL COMMENT'年级编号';
#创建外键
ALTER TABLE `student` ADD CONSTRAINT
fk_student_grade FOREIGN KEY (`gradeId`)
REFERENCES `grade` (`gradeId`);
ALTER TABLE result ADD PRIMARY KEY pk_result(`studentNo`,`subjectNo`,`examDate`);
#test数据库创建person表
CREATE DATABASE `text`;
CREATE TABLE `person`(
`number` INT(4) AUTO_INCREMENT PRIMARY KEY COMMENT'序号',
`name` VARCHAR(50)NOT NULL COMMENT'姓名',
`sex` CHAR(2)COMMENT'性别',
`bornDate` DATETIME COMMENT'出生日期'
)COMMENT='person表';
ALTER TABLE `person` RENAME`tb_person`;
ALTER TABLE `tb_person`DROP `bornDate`;
ALTER TABLE `tb_person`ADD `bornDate` DATE;
ALTER TABLE `tb_person`CHANGE `number` `id`BIGINT;
mysql:
dbs 数据库
dbms 数据库管理系统
dba 数据库管理员
db 数据库
dba 通过dbms来操作db
关系型数据库和非关系型数据库
登录MySQL
mysql -h主机地址 -u 用户名 -p密码
查询所有的数据库
show databases;
创建数据库
create database [if not exists] 数据库名称;
删除数据库
drop database[if exists]数据库名称;
结构语言分类
DDL(数据定义语言) create drop alter 创建删除以及修改数据库,表,存储过程,触发器,索引。。。
DML(数据操作语言) insert delete update 用来操作数据库中的数据
DQL(数据查询语言)select 用来查询数据库中的数据
DCL(数据控制语言)grant(授权)revoke(撤销)
TCL(事物控制语言)begin savepoint(设置回滚点)rollback commit
grant 查询 to 用户名
revoke 查询from用户名
crud (增删改查)
创建用户
create user 用户名@‘地址’
identified by '密码';
给用户授权
01 grant all on *.* to 用户名;
02 grant all on *.* to 用户名@‘地址’;
刷新系统权限
flush privileges;
删除用户
所有的用户都存储在mysql数据库中的user表中
01 delete from mysql.user where user='14';
02 delete from mysql.user where user='14'and host='localhost';
逻辑运算符
and && 与
or || 或
not ! 非
user切换到指定的数据库
如果没有切换到指定的数据库,需要在表前面加上数据库的名称
use mysql;
select `host`,`user`from `user`;
数据类型
int double
在mysql数据库中都使用的是decimal(a,b)
a 指定小数点左边右边可以存储的十进制数字的最大的个数,最大精度38.
b 指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从0到a之间的值。默认小数位数必须是从0到a之间的值。默认小数位数是0
在oracle中经常使用 *****number*****
char 固定长度 例如、;性别是char类型 长度是10 但是我们的实际输入长度是2 ;那么存储的时候也是10 个空间造成资源浪费
varchar 可变长度 例子:性别是char 类型长度是10
但他的实际长度是2
那么存储的时候是2个空间
日期格式
date yyyy-MM-dd
datetime yy-MM-dd hh:mm:ss
time hh:MM:ss
timestamp 1970到现在 y yyyMMddhhmmss
year yyyy 1901
约束类型
主键约束 primary key (pk)
用于设置表的主键,用来确保该行的唯一性
外键 foreign key (fk)
用于建立表与表之间的关系
非空约束 not null
字段不为空
默认约束 default 字段的默认值
唯一约束 unique key(uk)
字段的值是唯一的可以是null,但只能有一个
自动增长 auto_increment 设置列的自动增长(标识列),通常用于设置主键
创建表
如果是关键字 那么使用反引号``
create table [if not exists] 表名(
字段1 数据类型 [约束,索引,注释],
字段2 数据类型 [约束,索引,注释],
字段3 数据类型 [约束,索引,注释]
)[表类型][表字符集][注释]
有符号类型和无符号类型
有符号类型?:可以取负值
无符号类型:默认是0! 0---类型的长度
zerofill属性:如果位数不够,前面用0补齐
若某位值字段指定了zrofill属性,将自动添加unsigned属性!
创建学生表
create table if not exists student(
studentNo int(4)
not null primary key comment '密码',
studentName varchar(20) not null comment'学生姓名',
sex char (2)not null default'男'comment'性别',
gradeId int(4)unsigned comment'年级编号',
phone varchar(50)comment'电话'
address VARCHAR(255) DEFAULT'地址不详' COMMENT '地址',
bornDate DATETIME COMMENT '出生日期',
email VARCHAR(50) COMMENT '邮箱账号',
identityCard VARCHAR(18) UNIQUE KEY COMMENT '身份证号'
)comment='学生表';
-- 修改表中 微信 字段的长度为50
ALTER TABLE student MODIFY wechat VARCHAR(50);
-- 删除表中 微信 字段
ALTER TABLE student DROP wechat;
-- 修改studentName字段的名称为 stuName
ALTER TABLE student CHANGE `name` stuName VARCHAR(20);
创建subject科目表
create table if not exists `subject`(
subjectNo INT(4) AUTO_INCREMENT PRIMARY KEY COMMENT '课程编号',
subjectName VARCHAR(50) COMMENT '课程名称',
classHour INT(4) COMMENT '学时',
gradeID INT(4) COMMENT '年级编号'
)comment='科目表'charset='utf8';
在使用AUTO_INCREMENT是 必须和PRIMARY KEY 联合使用!
创建年级表
CREATE TABLE IF NOT EXISTS grade(
gradeID INT(4) COMMENT '年级编号',
gradeName VARCHAR(10) COMMENT '年级名称'
)COMMENT='年级表';
添加主键的语法
alter table grade add constraint pk_grade_gradeId primary key(
gradeId);
创建成绩表
CREATE TABLE IF NOT EXISTS result(
studentNo INT(4) NOT NULL PRIMARY KEY COMMENT '学号',
subjectNo INT(4) NOT NULL COMMENT '课程编号',
examDate DATETIME NOT NULL COMMENT '考试日期 ',
studentResult INT(4) NOT NULL COMMENT '考试成绩'
)COMMENT='成绩表' charset='utf8' engine=InnoDB;
外键的语法:
ALTER TABLE 表名 ADD CONSTRAINT 外键名
FOREIGN KEY(外键字段)
REFERENCES 关联表名(关联字段);
创建student表和grade表的关系
学生应该属于某个年级
外键必须建立在 从表上!
alter table student add constraint
fk_studnet_grade
foreign key(gradeId)
references grade (gradeId);
问题: 前提已经建立了 主外键关系
如果说有三个年级,编号分别是 1 2 3
那么也有三个学生 对应的关系是
第1个学生 1年级
第2个学生 2年级
第3个学生 2年级
01.有没有这种情况 有个学生的年级编号是4 ??
主表中没有数据! 从表无法创建!
02.可不可以删除年级表2年级或者1年级???
不能删除!因为从表中还有关联数据!
03.如果我们非得删除年级 怎么办??
先把从表中的关联数据删除 ,之后再删除主表中的数据!
-- 给成绩表设置联合主键
alter table result add primary key pk_result(studentno,subjectno,examdate);
mysql数据库中常用的两种 存储 引擎
MyISAM InnoDB
使用的场景:
MyISAM:不能使用事务,空间小,适合查询!
InnoDB:多适用于增删改,安全性高!事务的并发处理!
查询当前默认的存储引擎
show variables like 'strage_engine';
--修改存储引擎
--找到安装路径下的my.ini文件
--加入
defaulet-storage-engine=innoDB
数据库表的存储位置
InnnoDB类型的表文件
*.frm : 表结构定义文件
*.ibd : 数据文件
MyISAM类型的表文件
*.frm : 表结构定义文件
*.MYD : 数据文件
*.MYI :索引文件
DML和DQL 增删改查
seclect * from grade
新增 insert
--向年级表中新增3条数据
insert into grade(gradeId,gradeName)values(4,'4年级');
INSERT INTO grade(gradeID,gradeName) VALUES(5,'5年级');
INSERT INTO grade(gradeID,gradeName) VALUES(6,'6年级');
--删除456
delete from grade where gradeID>3;
delete from grade where
gradeId=4 or gradeId=5 or gradeId=6;
delete from grade where gradeID in(4,5,6);
-- 同时插入多条数据 oracle数据库不支持
insert into grade (gradeId,gradeName)values(4,'4年级') ,
(5,'5年级'),(6,'6年级');
--修改gradeId=1的年级名称为 one
update grade set gradeName='one'
where gradeId=1
-----delete 删除表中所有的数据
delete from grade;
初识MySQL——人生若如初相逢的更多相关文章
- 一、初识MySQL数据库 二、搭建MySQL数据库(重点) 三、使用MySQL数据库 四、认识MySQL数据库的数据类型 五、操作MySQL数据库的数据(重点)
一.初识MySQL数据库 ###<1>数据库概述 1. 数据库 长期存储在计算机内的,由组织的可共享的数据集合 存储数据的仓库 文件 ...
- 初识 MySQL 5.6 新功能、参数
摘要: 继上一篇的文章 初识 MySQL 5.5 新功能.参数 之后,现在MySQL5.6 针对 MySQL5.5 各个方面又提升了很多,特别在性能和一些新参数上面,现在看看大致提升了哪些方面(后续不 ...
- 初识mysql学习笔记
使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...
- python 全栈开发,Day60(MySQL的前戏,数据库概述,MySQL安装和基本管理,初识MySQL语句)
一.MySQL的前戏 在学习Mysql之前,我们先来想一下一开始做的登录注册案例,当时我们把用户的信息保存到一个文件中: #用户名 |密码 root|123321 alex|123123 上面文件内容 ...
- mysql学习【第1篇】:初识MySQL
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第1篇]:初识MySQL 只会写代码的是码农:学好数据库,基本能混口饭吃:在此基 ...
- 初识数据库、初识MySQL
一.为什么要用数据库 # 1.将文件和程序存在一台机器上是很不合理的. # 2.操作文件是一件很麻烦的事. 所以就出现了一个新的概念 —— 数据库 你可以理解为 数据库 是一个可以在一台机器上独立工作 ...
- 惊了!!! 小白零基础学java (月薪过万是你的梦想嘛) 手把手教学 就怕你不动手【二十五】第二章【初识MySQL】
初识MySQL1. 了解主流的数据库和数据库分类1.1 数据库概念数据库:按照数据结构来组织.存储和管理数据的一种建立在计算机存储设备上的仓库. 数据库的优势: 1. 可以持久化存储大量的数据.方便我 ...
- MySQL数据库1初识MySQL
目录 Mysql 一.数据库是什么? 二.为啥使用数据库?(*****) 三.数据库的分类(*****) 1.关系型数据库 2.非关系型数据库 3.关系型与非关系型区别: 四.数据库MySQL的架构 ...
- Mysql:初识MySQL
转载自:https://www.cnblogs.com/hellokuangshen/archive/2019/01/09/10246029.html Mysql:初识MySQL 只会写代码的是码农: ...
随机推荐
- 洛谷P3711 仓鼠的数学题(伯努利数+多项式求逆)
题面 传送门 题解 如果您不知道伯努利数是什么可以去看看这篇文章 首先我们把自然数幂和化成伯努利数的形式 \[\sum_{i=1}^{n-1}i^k={1\over k+1}\sum_{i=0}^k{ ...
- VS2013安装及破解教程
https://blog.csdn.net/qq_33742119/article/details/80075352 软件下载的百度云链接,也可以在官网直接下载 链接:https://pan.baid ...
- 小白如何将代码上传到github上?
网上已经有很多关于这个的教程,有一步步操作的,但有些感觉已经颇旧了.现在更新一个最新版的github小白教程.尽管以后此教程也会变成旧的,至少在这一段时期,本文还是最新的.就按照github官网上教程 ...
- 2.2、Softmax Regression算法实践
Softmax Regression算法实践 有了上篇博客的理论知识,我们可以利用实现好的函数,来构建Softmax Regression分类器,在训练分类器的过程中,我们使用多分类数据作为训练数据: ...
- External Tools
Preferences偏好设置-External Tools External Tools: External Script Editor:外部脚本编辑器,通过此项可以切换您所擅用的脚本的编辑器 Ed ...
- JSONP原理及简单实现 可做简单插件使用
JSONP实现跨域通信的解决方案. 在jquery中,我们可以通过$.ajax的dataType设置为jsonp来调用jsonp,但是jsonp和ajax的实现原理一个关系都木有.jsonp主要是通过 ...
- Applese 的QQ群(二分+dfs)
链接:https://ac.nowcoder.com/acm/contest/330/F 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 洛谷 P2056 [ZJOI2007]捉迷藏 题解【点分治】【堆】【图论】
动态点分治入 门 题? 题目描述 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩捉迷藏游戏.他们的家很大且构造很奇特,由 \(N\) 个屋 ...
- UVA - 10635 LIS LCS转换
白书例题,元素互不相同通过哈希转换为LIS求LCS #include<iostream> #include<algorithm> #include<cstdio> ...
- Ubuntu电源键软关机设置
对于不连接显示器的Ubuntu设备,通过直接拔电源或者长按电源键是普遍的关机方法,但这种方法长期势必会对设备造成损坏. 下面设置电源键软关机(短摁电源按钮关机)的方法可以解决此问题.(默认摁电源键会弹 ...