数据库DataBase
-
学习数据库主要学习的就是如何对数据进行增删改查操作
-
平时所提到的数据库(DBMS数据库管理系统)实际上就是款软件, 电脑上安装了这个软件,电脑就可以成为数据库服务器
-
常见的DBMS(数据库软件):
- MySQL: Oracle公司产品, MySQL在08年被Sun公司收购,09年Sun公司被Oracle收购, 目前市占率第一, 开源软件, 原MySQL创始人从Oracle离职创办MariaDB
- Oracle: Oracle公司产品,闭源, 性能最强价格最贵, 市占率第二 , 拉里埃里森
- SQLServer: 微软公司产品, 市占率第三 , 闭源 . 主要应用在微软的整套解决方案中(开发网站需要用到的所有= 编程语言+web服务软件+操作系统+数据库软件)
- DB2: IBM公司产品,闭源 主要应用在IBM的整套解决方案中
- SQLite: 轻量级数据库, 安装包只有几十k, 功能只具备最基础的增删改查 .
-
开源和闭源
- 开源: 开放源代码, 有技术大拿无偿维护升级, 产品免费 靠卖服务盈利
- 闭源: 不开放源代码, 有黑客或技术大拿攻击,但是闭源公司有钱 雇人维护升级, 靠卖产品和卖服务盈利
-
学习数据库主要是学习一门语言: SQL(Structured Query Language) 结构化查询语言 , 用于程序员和数据库软件之间进行交流
-
执行SQL语句需要先连接数据库软件
- window: 开始->所有程序->MySQL或MariaDB->MySQL Client 点击 运行输入密码后回车
-
Linux系统: 在桌面上右键 打开终端, 输入 mysql -uroot -p 回车 输入密码再回车.
-
如何检查MySQL服务是否开启?
在我的电脑上右键->管理->服务->MySQL 查看是否启动 如果没有,右键启动
SQL语句分类:
- DDL: 数据定义语言,
- DML: 数据操作语言
- DQL: 数据查询语言
- TCL: 事务控制语言
- DCL: 数据控制语言
DDL数据定义语言
- 包括数据库相关和表相关的SQL语句
- 使用数据库软件保存数据需要先建库再建表
数据库相关的SQL
-
查询所有数据库
- 格式: show databases;
-
创建数据库
-
格式: create database 数据库名;
-
举例:
create database db1;
create database db2 character set utf8;
create database db3 character set gbk;
-
-
查询数据库详情
-
格式: show create database 数据库名;
-
举例:
show create database db1;
-
-
删除数据库
-
格式: drop database 数据库名;
-
举例:
drop database db3;
-
-
使用数据库
-
格式: use 数据库名;
-
举例:
use db1;
-
数据库相关回顾
- 查询所有 show databases;
- 创建 create database db1 character set utf8/gbk;
- 查询详情 show create database db1;
- 删除数据库 drop database db1;
- 使用数据库 use db1;
数据库相关练习
-
分别创建mydb1和mydb2数据库 字符集第一个是utf8第二个是gbk
create database mydb1;
create database mydb2 character set gbk;
-
查询所有数据库检查是否创建成功
show databases;
-
分别查询两个数据库的字符集 检查是否成功
show create database mydb1;
show create database mydb2;
-
先使用mydb1再使用mydb2
use mydb1;
use mydb2;
-
删除两个数据库
drop database mydb1;
drop database mydb2;
表相关的SQL
- 操作表相关的SQL语句一定要保证使用了某个数据库, 不然会报错
-
创建表
-
格式: create table 表名(字段1名 类型,字段2名 类型);
-
格式: create table 表名(字段1名 类型,字段2名 类型) charset=utf8/gbk;
-
举例:
create table student(name varchar(20),age int);
create table hero(name varchar(20),type varchar(20), money int)charset=gbk;
-
-
查询所有表
- 格式: show tables;
-
查询表详情
- 格式: show create table 表名;
- 举例: show create table hero;
-
查询表字段
- 格式: desc 表名;
-
删除表
- 格式: drop table 表名;
-
修改表名
-
格式: rename table 原名 to 新名;
rename table student to stu;
-
练习题
-
创建数据库db5 字符集为gbk 并使用
create database db5 character set gbk;
use db5;
-
创建表t_hero英雄表 有名字和年龄字段 默认字符集
create table t_hero(name varchar(20),age int);
-
修改表名为 hero
rename table t_hero to hero;
-
查询表字段
desc hero;
-
删除表 drop table hero;
-
删除数据库 drop database db5;
表相关续
-
给表添加字段
-
最后面添加格式: alter table 表名 add 字段名 类型;
-
最前面添加格式: alter table 表名 add 字段名 类型 first;
-
在xxx字段后面添加格式: alter table 表名 add 字段名 类型 after xxx;
-
举例:
create table emp(name varchar(20));
alter table emp add age int;
alter table emp add id int first;
alter table emp add gender varchar(10) after name;
-
-
删除表字段
-
格式: alter table 表名 drop 字段名;
alter table emp drop gender;
-
-
修改表字段
-
格式: alter table 表名 change 原名 新名 新类型;
-
举例: alter table emp change age salary int;
-
表相关回顾
- 创建表 create table t1(name varchar(20),age int)charset=utf8/gbk;
- 查询所有表 show tables;
- 查询表字段 desc t1;
- 查询表详情 show create table t1;
- 删除表 drop table t1;
- 修改表名 rename table t1 to t2;
- 添加表字段 alter table t1 add age int first/after xxx;
- 删除表字段 alter table t1 drop age;
- 修改表字段 alter table t1 change 原名 新名 新类型;
DML数组操作语言
- 包括对数据的增删改查
create database db4 character set utf8;
use db4;
create table person(name varchar(20),age int)charset=utf8;
-
插入数据
-
全表插入格式: insert into 表名 values(值1,值2,值3);
-
指定字段插入格式: inert into 表名(字段1名,字段2名) values(值1,值2);
-
举例:
insert into person values(“Tom”,18);
insert into person(name) values(“Jerry”);
-
批量插入格式: insert into 表名 values(值1,值2,值3),(值1,值2,值3),(值1,值2,值3);
insert into person values(“Lucy”,20),(“Lily”,21);
insert into person(name) values(“Lilei”),(“Hanmeimei”);
-
插入中文数据:
insert into person values(“传奇哥”,18);
如果执行带有中文的SQL语句报以下错误, 解决方案: set names gbk;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MrhqNytu-1604924852015)(C:\Users\PC\AppData\Roaming\Typora\typora-user-images\image-20201106151424743.png)]
-
-
查询
-
格式: select 字段信息 from 表名 where 条件;
-
举例:
select name from person;
select name,age from person;
select * from person;
select * from person where age=18;
select * from person where name=“Lucy”;
-
-
修改
-
格式: update 表名 set 字段1名=值,字段2名=值 where 条件;
-
举例:
update person set age=50 where name=‘Jerry’;
把Tom名字改成汤姆年龄改成50
update person set age=50,name=“汤姆” where name=“Tom”;
-
-
删除
-
格式: delete from 表名 where 条件;
-
举例:
delete from person where name=“Lucy”;
delete from person where age<50;
delete from person;
-
数据相关SQL回顾
- 插入数据: insert into t1(字段1名,字段2名) values(值1,值2),(值1,值2);
- 查询数据: select 字段信息 from t1 where 条件;
- 修改数据: update t1 set xxx=xxx,xxx=xxx where 条件;
- 删除数据: delete from t1 where 条件;
综合练习
1. 创建数据库mydb3 字符集utf8 并使用
create database mydb3 character set utf8;
use mydb3;
2. 创建hero表 字段:id,name,type varchar(10)
create table hero(id int,name varchar(10),type varchar(10));
3. 表中插入以下数据:
insert into hero values
(1, '李白', '刺客'),(2, '诸葛亮' , '法师'), (3, '刘备', '战士'),
(4, '孙尚香', '射手'), (5, '关羽', '战士'), (6, '刘禅', '辅助');
4. 修改李白的type为诗人 update hero set type='诗人' where name='李白';
5. 给表添加money字段 alter table hero add money int;
6. 修改id小于5的money为6888 update hero set money=6888 where id<5;
7. 修改诗人为打野 update hero set type="打野" where type="诗人";
8. 修改刘禅名字为阿斗价格为50 update hero set name="阿斗",money=50 where name="刘禅";
9. 删除id大于5的数据 delete from hero where id>5;
10. 修改所有英雄的价格为13888 update hero set money=13888;
11. 修改表名为heros rename table hero to heros;
12. 删除money字段 alter table heros drop money;
13. 删除所有数据 delete from heros;
14. 删除表 drop table heros; 15. 删除数据库 drop database mydb3;
数据库数据类型
-
整数: int(m) 和bigint(m) , m代表显示长度, m=10 18 0000000018 , 需要和zerofill关键字结合使用
create table t1 (id int,age int(10) zerofill);
insert into t1 values(1,18);
select * from t1;
-
浮点数: double(m,d) m代表总长度, d代表小数长度 54.234 m=5 d=3 , decimal(m,d)是超高精度浮点数, 只有涉及到超高精度运算时使用
-
字符串:
- char(m): 固定长度字符串, m=10 存abc 长度占10, 执行效率高于可变长度, 最大长度为255
- varchar(m): 可变长度字符串,m=10 存abc 长度占3, 节省空间, 最大长度65535 建议保存255以内长度的数据
- text(m):可变长度字符串 最大长度也是65535 建议保存长度大于255的数据
-
日期
-
date: 只能保存年月日
-
time: 只能保存时分秒
-
datetime: 年月日时分秒 , 默认值是null, 最大值9999-12-31
-
timestamp: 时间戳 年月日时分秒, 默认值为当前系统时间,最大值2038-1-19
-
测试日期类型:
create table t_date(t1 date,t2 time,t3 datetime,t4 timestamp);
insert into t_date values(“2020-10-10”,null,null,null);
insert into t_date values(null,“17:12:11”,“2018-11-12 11:11:11”,null);
-
执行SQL语句三方工具 SQLYog
项目选题为 内容展示性质的网站