《JAVA从入门到??》MySQL篇DAY01

–SQL是结构化查询语言

SQL语句分类
–数据定义语言(DDL)
create drop alter
–数据查询语言(DQL)
select
–数据操作语言(DML)
insert update delete
–数据控制语言(DCL)
grant revoke

–创建数据库
语法: create database 数据名称;
数据名称需要满足对应的规则:
1.第一个字符必须是字母(A-z)、下划线() — 有问题保留
2.后续字符可以为数字、字母、下划线(
)、at符号@、美元符号($)
3.标识符不能是关键字(类似create/select…)
4.不能有空格或者其他特殊符号
–规范
5.见名知意
6.数据库最好不要超过256字符
7.数据库中windows不区分大小写,但是linux严格区分大小写。所以:推荐大家统一用小写方式、目的保证可移植性。

–查询数据库
show databases; --查看所有的数据库
show create database gxa; – 查看数据库的详细信息
–指定使用具体数据库
use 数据库名;
–删除数据库–无法恢复-慎重
drop database if exists 数据库名;
–修改数据库
alter database 数据库名 default character set UTF-8; --设置数据库编码

– 数据类型
– 整数数据类型 – 非常重要
tinyint 短整型 – Java中byte
smallint 小整型 – Java中short
mediumint 中整型 – Java中short
int 整型 – 可以取代Java所有的整数类型(byte/short/int/long) – 最常用
– int 默认不用(规定它的长度,默认就为11位,11位包含符号位)
– int(指定长度) mysql严格按照规定的长度显示,最大数值不能超过长度位数
bigint 长整型 – Java中的long – 偶尔会用
– 浮点数据类型
float 单精度浮点型
double(M,D) 双精度浮点型 – 常用
decimal(M,D) – Java中BigDecimal – 常用
M表示整个数据长度,D表示保留小数点后多少位。 示例:decimal(5,2) 100.25
– 字符串数据类型
varchar(长度) --可变的字符串类型 abcde varchar(1) MySQL比较特殊,长度1可以存放一个字符(英文单个字母、一个中文汉字) – 用得多
char(长度) --固定的字符类型 男|女 char(1) MySQL比较特殊,长度1可以存放一个字符(英文单个字母、一个中文汉字)
– 日期数据类型 – 都重要
date --日期数据类型 YYYY-MM-dd 2021-09-22
datetime --日期时间数据类型 YYYY-MM-dd HH:mm:ss 2021-09-22 09:51:50
timestamp --日期时间数据类型(支持国际化) YYYY-MM-dd HH:mm:ss 2021-09-22 09:51:50
time – 时间数据类型 09:51:50
– 文本类型
text – 重要,保存文章文字内容
– 其他
set 多列选择:checkbox 保存爱好:勾选多个 篮球 足球 排球
enum 单列选择:radio 保存性别:勾选单个 男 女
bit 位 0101 --几乎不用
boolean true --几乎不用

– 创建数据表
语法 CREATE TABLE [if not exists] <表名> (<列名> <列的数据类型> [<列的约束>],<列名> <列的数据类型> [<列的约束>]);
示例:
create table student(
stu_no int(6) primary key auto_increment comment ‘学生编号,主键,自动增涨’,
stu_name varchar(20) comment ‘学生姓名’,
stu_idcard varchar(18) unique comment ‘身份证号码,唯一’,
stu_sex char(1) not null default ‘男’ comment ‘性别,不能为null’,
life_money double(7,5) comment ‘生活费’,
birthday date comment ‘出生日期’,
cratetime datetime comment ‘创建时间’
);
– 查看表
show tables; – 查看当前库中有多少张表
show create table student; --查看指定表的具体信息:表字段、类型、存储引擎ENGINE=InnoDB、字符编码DEFAULT CHARSET=utf8
desc 表名; – 查看表结构

– 删除表
drop table if exists 表名;

– 如何来保证数据库中数据的完整性,主要是通过约束
–约束主要的实现方法
–主键约束 – 需求:学生表中学号,必须是唯一的(包含了不能重复),且不能为null。
primary key – 主键:唯一、不能重复、不能为null
– 唯一约束 --唯一约束是指给定列的所有值必须唯一
unique --需求:学生身份证号码不能重复。该列的值不能重复,可以为null
– 非空约束 --指定列的值不能为null
not null --需求:学生的性别不能为null
– 默认约束 --指定列的有默认值
default --需求:性别默认指定为男
– 注释
comment --需求:表中每一列都有对应的字段解释
– 自动增涨
auto_increment – 需求:id编号,默认让他从1开始进行编号
– 外键约束是指在外键关联主键上强制加上一个约束,如果违反该约束,则不允许该条数据的修改。
constraint 自定义外键名称 foreign key(当前表中字段外键名字) references 引用表(字段)
– 删除外键约束
alter table emp drop foreign key 自定义外键名称;
– 说明:外键在实际开发过程中,用得不是很多,主要可以通过sql语句就能实现关联。

– 创建2个表,一个雇员信息表、另一个是部门表
如下两张表是非常经典的表,oracle公司内部
–雇员信息表 emp
雇员编号 empno
雇员名称 ename
雇员工作 job
上级领导编号 mgr
雇佣日期 hiredate
雇员工资 sal
雇员奖金 comm
部门编号 deptno

oracle内部员工结构
president 董事长
manager 管理者
analyst 分析员
clerk 普通职工

   CREATE TABLE `emp` (
	  `empno` int(4) NOT NULL,
	  `ename` varchar(10) DEFAULT NULL,
	  `job` varchar(9) DEFAULT NULL,
	  `mgr` int(4) DEFAULT NULL,
	  `hiredate` date DEFAULT NULL,
	  `sal` decimal(7,2) DEFAULT NULL,
	  `comm` decimal(7,2) DEFAULT NULL,
	  `deptno` int(2) DEFAULT NULL,
	  constraint fk_deptno foreign key(deptno) references dept(deptno)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

–部门表 dept
部门编号 deptno
部门名称 dname
部门地址 loc

   CREATE TABLE `dept` (
  `deptno` int(2) NOT NULL,
  `dname` varchar(14) DEFAULT NULL,
  `loc` varchar(13) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

– 修改表结构使用 – 在实际开发中用的稍微少一些
– 复制表:备份表结构+表数据
create table 备份表名 select * from emp;
– 复值表:备份表的结构
create table 备份表名 select * from emp where 1=0;
– 修改列
alter table emp change ename name varchar(20);
– 添加新列
alter table emp add sex char(1) default ‘男’;
– 删除列
alter table emp drop column sex;

– 数据库操作语言DML

insert update delete

– insert关键字 插入单行的记录(表数据)
基本语法: insert into <表名> (<列名列表>) values (<值列表>)
示例:需求向dept表中插入一条数据
insert into dept(deptno,dname,loc) values(50,‘信息部’,‘中国成都’); --对的
insert into dept(dname,loc) values(‘信息部2’,‘中国成都2’); --错的
insert into dept(deptno,dname) values(60,‘中国武汉’); – 对
insert into dept(dname,deptno) values(70,‘中国北京’); – 错
insert into dept values (70,‘IT部’,“中国上海”); --对 ,如果表名后没有对应的列名,values值就需要全部写出来。

insert into emp(empno,ename,hiredate,sal) values(8888,‘zs’,‘2021-09-22’,1000.5);

– insert关键字 插入多行的记录(表数据)
insert into emp(empno,ename,hiredate,sal) values(8888,‘zs’,‘2021-09-22’,1000.5),(9999,‘lisi’,‘2021-09-22’,1000.5),(7777,‘王五’,‘2021-09-22’,1000.5);

– update关键字 更新数据
基本语法: update 表名 set 列名=更新值,列名=更新值 where 条件;
update dept set loc=‘四川成都’; – 不加条件,会修改列全部
update dept set loc=‘四川成都’,dname=‘研发部’ where deptno = 50; --指定条件,修改数据
– 给雇员编号为7499的员工涨薪500
update emp set sal = sal+500 where empno=7499;
– 老板发话:给所有没有奖金的雇员发500奖金
update emp set comm = 500 where comm is null or comm = 0;

– delete关键字 删除数据
基本语法: delete from 表名 where 条件;
delete from emp; – 删除表中所有数据 – 清空表的数据
delete from emp where ename = ‘smith’;
–从某个表中得到数据插入当前表中
insert into emp select * from emp_temp;

– truncate 关键字 删除数据
truncate table 表名; --清空所有数据,没有条件
– delete与truncate区别
–相同点
delete和truncate都是删除数据
–不同点
1.delete删除可以指定条件,truncate不能指定条件(清空所有数据)。
2.delete删除后有日志记录,truncate没有日志记录。
3.delete删除数据可以恢复,而truncate不可以恢复的。
4.delete支持事务,truncate不支持事务。
5.delete清空数据后,再次插入数据。如果有是自动增涨的字段,它的序号会按照删除的最后一条+1,如果是truncate,就从头开始进行编号。
6.delete可以用于外键约束的表,truncate不能用于外键约束的表。

– 手动提交
set autocommit=0; – 1自动提交(默认自动提交)
–误删除,回滚
rollback;
commit; --提交

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值