MySQL入门
第一章 mysql 数据库增删改查内容
1.了解什么是数据库?
2.选择MySQL数据库进行学习增、删、查、改简单操作。
以下是本篇文章正文内容,下面案例可供参考
文章目录
1.数据库是什么?
数据库(database):简称DB,顾名思义,数据库就是存储数据的仓库,可以对数据进行持久化的保存。(数据保存在内存里面的的是瞬时状态的,开关机就没有了)
app或者网站都可以叫做系统,通过一个可视化的界面通过Java后台语言取到数据库的数据在页面上进行展示(可以参考MVC模型);经过步骤:数据库–>JavaJDBC(java database connectivity java 数据库连接技术)技术将数据库的数据获取到–>利于前端技术将数据展现在前端页面上.或者说将注册狗哥信息的过程:在前端表单输入–>java获取到表单输入的数据–>JDBC存储到数据库中进行持久化的保存。。
2.数据库分类
1.关系型数据库:mysql、 Oracle、 SqlServer\db2等
2.非关系型数据库:Redis 、mogodb
mysql特点:
免费、轻量级(安装包很小):适用于数据量不是很庞大的系统,比如网站、app等
oracle数据库特点:
目前mysql 和oracle数据库都隶属于oracle甲骨文公司,oracle数据库是oracle最核心的产品,(安装包很大(1个多G),功能也是最强大的数据库;有免费版,也有付费版,多用于政府,国企等事业单位,存储的数据量很大,是一个重量型数据库。目前市面上程序员可以考oracleBDA工程师认证
sqlserver数据库:
Microsoft微软公司的,免费,因为SqlServer不能跨平台,只能在Windows系统上运行;微软有自己支持的开发语言,但是不能跨平台、慢慢就没落了,说白了就有点带着捆绑销售的意思
db2数据库:
是IBM公司旗下的产品,在中国很少用
3.mysql安装
1.安装分两步,第一步安装服务器端,第二部安装客户端
2.服务器端有解压版的也有安装版的。
注意:安装服务器设置默认的编码格式为utf8、端口号3306
安装完成后:
打开SQLyog连接服务器端的数据库 连接数据库: 常见错误 计算机-管理-服务-mysql服务,看看能不能启动,如果能启动说明服务器安装好了 root是mysql默认的管理员用户,密码是你自己安装的时候设置的,一定要记住!
如果你没有安装客户端,也可以通过DOS命令操作mysql数据库。
1.启动mysql服务器
net start mysql
2.关闭服务器
net stop mysql
3.登录
mysql -u root -p 回车加密码 或者:mysql -u root -psa123回车直接登录
4.操作数据库命令
show databases;
5.数据库哪个数据库
use mysql;使用mysql数据库
6.查看mysql数据库中proc这张表的数据
select * form proc;
7.退出数据库
exit;
4.SQL分类
DELETE三种指令为核心
2.DDL:(Data Definition Language, DDL)数据定义语言:对数据库表的创建、定义约束等操作;由
CREATE、ALTER与DROP三个语法所组成
3.DCL:(Data Control Language))数据控制语言,对表授权操作;由 GRANT 和 REVOKE 两个指令
组成
4.DQL:(Data Query Language) 数据查询语言,对数据进行查询操作,由select完成
5.SQL运算符
算术运算符:+ - * %
赋值运算符:=
逻辑运算符:and or not
比较运算符:=等于 > < <= =>
不等于: != <>标准写法
数据库MySQL是data存放物理文件,氛围自带的系统数据库和自定义的数据库,系统数据库用于记录用户对mysql数据库的行为操作等记录用的或者用于存储系统默认的信息,不要删除
自定义的数据库是用于存储表以及表里面的数据用的
举个例子:
有一个超市系统,会创建一个超市的markDB数据库用于存储该系统的所有数据,那该数据库会根据不同的业务需求创建不同的表来分类存储不同的数据,比如顾客信息会创建顾客表customer表,订单信息会存储在order表,库存信息会存储在stock表…等等。那顾客表customer表会创建很多个字段(列)来存储不同的数据,比如顾客表有编号、姓名、性别、地址等字段来存储信息,为了节省内存,我们的字段需要通过不同的数据类型来创建以达到节省空间的效果。
数据库>表>根据不同数据类型开辟的字段;数据保存在字段里面。
6.数据库的数据类型
数据类型根据不同的数据开辟不同大小的存储空间,好处是节约空间。
1.数值类型
2.字符串类型
常用的:
int 、浮点数据double、decimal、
char/varchar
data 、datatime timestamp
char 和varchar的区别:
char(10)是定义一个固定的字符串,比如将zhang存入会将剩余的空间以空字符,如‘zhang ’
varchar(10)是定义一个可变长度的字符串,比如一开始定义10个长度,但是存入’zhang‘只有五个字符,它将压缩剩余空间变成五个字符串,反之则会扩容。
char这种固定长度适用于MD5加密处理生成的都是固定
7.建数据库
具体参考菜鸟教程:https://www.runoob.com/mysql/mysql-tutorial.html
建表:
CREATE TABLE IF NOT EXISTS `student`(
`studentNo`INT(4)NOT NULL COMMENT'学号',
`studentName`VARCHAR(10) NOT NULL COMMENT'姓名',
`sex`CHAR(2)DEFAULT'男' NOT NULL,
`gradeID`INT(5) NOT NULL COMMENT'年级ID',
`address` VARCHAR(50),-- 没有加not null表示可以为空
`borndata`DATETIME COMMENT'出生日期',
`identityCard`INT (10)NOT NULL UNIQUE KEY COMMENT'身份证号码'
)CHARSET=utf8;
1.`student`的``是ESC建下面的,可选项,加上用于区分关键字;
2.not exists 可选项
3.primary key 主键,标识studentNo为主键,标识主键后的该字段的值必须不能为null并且是唯一性的,来保证数据的完整性,一个表只能有一个主键,多个列可以组成复合主键
4.auto_increment 让该字段的值自增(该列一定是int类型)
5.所有的长度单位以字节为单位
6.default'男'设置默认值,如果该列不插入值,值就是默认值
7.unique key 唯一键,标识的列的值不能重复
primary key和unique key,主键和唯一键有什么区别?
主键不能为null,唯一键可以
每张表都必须要有主键来标识数据的唯一性,唯一键可有可无
主键可以通过主外键关联来设置外键约束
8.给表插入数据
#SQL语句 增加
INSERT INTO
student(studentNO,studentName,sex,gradeId,address,borndate,identityCard)
VALUES(3,'王五','男',2,'南昌','2020-1-1',12345);
-- 如果按序插入所有的列,列可以省略
INSERT INTO student
VALUES(4,'王五2','男',2,'南昌','2020-1-1',123412);
INSERT INTO student(studentName,sex,gradeId,borndate,identityCard)
VALUES('古进','男',2,'2020-1-1',12346);
INSERT INTO student(studentName,sex,gradeId,borndate,identityCard)
VALUES('古进2',DEFAULT,2,'2020-1-1',12347);
INSERT INTO student(studentName,gradeId,borndate,identityCard)
VALUES('古进3',2,'2020-1-1',12348);
-- 添加多条值
INSERT INTO student(studentName,gradeId,borndate,identityCard)
VALUES('李白1',2,'2020-1-1',4321),('李白2',2,'2020-1-1',4322),('李白3',2,'2020-1-
1',4323);
-- 查询所有的列的值
SELECT * FROM student
-- 查询指定的列的值
SELECT studentName,sex,address FROM student
【常见问题】
----- 问题1:Column count doesn't match value count at row 1
-- 列和值个个数不匹配
INSERT INTO
student(studentNO,studentName,sex,gradeId,address,borndate,identityCard)
VALUES(3,'王五','男',2,'南昌','2020-1-1');
-- 问题2:Duplicate entry '3' for key 'PRIMARY' 主键值重复了
INSERT INTO
student(studentNO,studentName,sex,gradeId,address,borndate,identityCard)
VALUES(3,'王五','男',2,'南昌','2020-1-1',11232);
-- 问题3:Duplicate entry '11232' for key 'identityCard'
-- identityCard值重复,因为设置了唯一键
INSERT INTO
student(studentNO,studentName,sex,gradeId,address,borndate,identityCard)
VALUES(8,'王五','男',2,'南昌','2020-1-1',11232);
9.设置auto_increment
auto_increment默认是从1开始自增,如果要改变自增值,则如下:
-- 设置自增
-- 设置起始值500,每次增长的跨度+5
ALTER TABLE student AUTO_INCREMENT=500;
SET @@auto_increment_increment=5;
#也可以
ALTER TABLE student
AUTO_INCREMENT=2,MIN_POWS=1;
10.删除
-- 删除student表里所有的数据
DELETE FROM student;
-- 删除studentNo=7的语句
DELETE FROM student
WHERE studentNo=7;
-- 删除studentNo=7并且studentName='王五'的语句
DELETE FROM student
WHERE studentNo=7 AND studentName='王五';
11.修改
-- 修改
UPDATE student SET studentName='张三' WHERE studentNo=4;
SELECT*FROM student;
-- 修改错误 where前面的是要修改的值 where后面的是查找条件
UPDATE student SET gradeID=1234 WHERE studentName='李四';
SELECT*FROM student;
-- 修改多个值
UPDATE student SET studentName='狗剩',address='哈尔滨'
WHERE studentNo=1103;