mysql的基本操作:
show databases; 查询当前mysql自带的数据库
创建新库:
create database 库名;
create datebase if not exists 库名;
查询创建库的字符集: show create database 库名
修改字符集:alter database 库名 default character set 字符集名称
删除库:drop database 库名
drop database if exists 库名
数据类型:
int 最大长度11位数
int(字符数)
varchar(最大字符数255个长度)
date:仅仅是日期类型
datetime:日期时间类型
timestap:(系统的一个瞬时时间)
double:小数类型
double(几位数,小数点后保留的位数)
clob:大字符类型
支持"大文本"
blob:大字节类型
最大支持4G;
数据库的DDL语句:数据定义语言
DDL语句建表:
创建表之前必须声明那个库
use 库;
不使用库会默认mysql;
create table 表名(
字段名称1 字段类型1,
字段名称2 字段类型2,
..........
)
查询当前库中有哪些表 show tables;
查询:desc 表名;
修改表的字段:
alter table 表名 change 旧字段名称 新的字段名称 以前的数据类型;
修改表的字段类型:
alter table 表名 modify 字段名称 新的字段类型;
添加:给表中增加一个新的字段:
alter table 表名 add 字段名称 字段类型;
删除表:
drop table 表名;
drop table if exists 表名;
删除表的字段:
alter table 表名 drop 字段名;
复制表:
create table 新表名 like table;
查看表的文件路径:
show variables like '%datadir%';
sourse 导入sql文件
DML数据操作语言:
insert delete update select(重点)
select *from table 不建议使用
insert into 表名 values()
修改
update 表名 set (字段名称 = 值) where 条件; 可以修改多个
delete from 表名 where 条件;带条件删除记录(使用的非业务字段id删除)
truncate table 表名:删除全表数据;
共同点:都可以删除全表记录
delete仅仅删了记录表还存在;它针对id(非业务字段;设置主键并且自增)它不影响增长主键的值
truncate table删除后创建一张新表,影响主键的增长
primary key auto_increment 设置自动增长;
DQL数据库的查询语句:
select 字段名称 from 表名;
查询全部字段时,给字段取一个别名 as '别名名称' ,as可以省略
表可以起别名: 访问字段时可以 别名.字段名称
字段冗余: select distent 字段值 from 表名
条件查询: 使用 赋值运算符 = ,比较运算符 <,<=,>=,>,!= ///java where
mysql推荐使用and个or
还可以字段名称 between ...... and .......包含两端
不等于<>mysql用法
优化为 字段名称 in(值1,值2,值3,)
mysql不支持"=null"判空;使用语法是 is null//不为空是 is not null
mysql提供函数ifnull(字段名称,值) 如果字段名称的值是null给个默认值
模糊查询: 关键字 like '%character%'
语法 select 字段列表 from 表名 where 字段名称 like 'xxx%'
select 字段列表 from 表名 where 字段名称 like '_'
%代表多个字符 // _代表单个字符
聚合函数: 单行单列
count (字段名称):查询表中记录,字段名称使用都是id,非业务字段
avg(字段名称):查询这个字段中的平均值
sum :求和函数
max:最大值
min (字段名称) :最小值
语法:select 聚合函数 (字段名) from 表名 ---前提条件使用业务字段查询不能有null值
单表查询的子查询:select嵌套select语句 ----子查询
排序查询
select 字段列表from 表名 orderby 字段名称 排序规则 (asc (默认升序) desc 降序)
如果同时有条件,则条件应在order by之前
多个字段排序首先第一个字段排序规则,然后第二个字段
DQL语句之分组查询(group by)
1.不带条件的分组查询
语法:select * from 表名 group by 分组字段名称;
注意事项:
①查询的字段列表中可以使用 分组字段
②group by之后不能使用聚合函数
2.带条件的分组查询语法(where 条件必须放在group by之前,否则语法错误)
语法:select 字段名称(包含分组字段、聚合函数) from 表名 where 条件 group by 分组字段名称;
DQL语句之筛选查询(having)
必须先有条件,然后分组,接下来筛选
语法:select 字段名称 from 表名 where 条件 group by 分组字段名称 having 筛选条件;
注意事项:筛选的后面可以使用聚合函数,group by的后面不能使用聚合函数
DQL语句之分页查询(limit)
语法:select 字段列表 from 表名 limit 起始行数,每页显示的条数;
起始行数是从0开始算的,起始行数=(当前页码-1)*每页显示的条数。
数据库的备份和还原
方式1:图形界面化工具
备份:选中库名,右键----->BACKUP/Export 备份导出---->
选中Sql脚本,存储到本地某个磁盘上----->StructureAndData:表的结构和数据都需要备份
还原:先在SqlYog将myee_2203删除了,新建库右键---->Import 导入---->选中执行execute sql 脚本
方式2:命令行控制台
备份:以管理员身份进入dos,不需要登录mysql
保存到指定路径上 :mysqldump -uroot -p你的密码 库名 > 磁盘上的路径xx\xx\xx.sql
还原:①进入dos控制台,登录mysql,先将库删除,新建一个库
②使用这个库 use库名;
③加载指定路径sql脚本:source 备份的sql脚本路径(D:\EE_2203\day9\code\mysql_01.sql)
数据库的约束
概念:限制用户操作数据库的一种行为(非法行为)
非法行为是指直接插入null值或某个非业务字段的值一直重复。
1.默认约束
default:如果某个字段没有插入数据,默认约束就会起作用
①.添加默认约束
方式1.建表时加入默认约束
语法:create table 表名( 字段名称 字段类型 DEFAULT ‘约束值’);
方式2:通过sql语句加入默认约束
语法:alter table 表名 modify 字段名称 字段类型 DEFAULT ‘约束值’;
②.删除默认约束
通过sql语句删除默认约束
语法:alter table 表名 modify 字段名称 字段类型;
2.非空约束
not null:当前这个字段的值不能为空(插入空值的话会报错)
①.加入非空约束
方式1:建表时加入非空约束
语法:create table 表名( 字段名称 字段类型 NOT NULL);
方式2:通过sql语句加入非空约束
语法:alter table 表名 modify 字段名称 字段类型 not null;
②.删除非空约束
通过sql语句删除非空约束
语法:alter table 表名 modify 字段名称 字段类型;
3.唯一约束
unique:某个字段的值必须唯一,属于一种index:索引。
①.添加唯一约束
方式1.建表时加入唯一约束
语法:create table 表名 (字段名 字段类型 UNIQUE);
方式2.通过sql语句加入唯一约束
语法:alter table 表名 modify 字段名 字段类型 UNIQUE;
②.删除唯一约束
语法:alter table 表名 DROP INDEX 字段名称;
4.主键约束
PRIMARY KEY:非空且唯一 ,一般和auto_INCREMENT(自增长约束)使用多一些.
①.添加主键约束(非业务字段)
方式1.建表时加入主键约束
语法:create table 表名( 字段名 字段类型 primary key);
方式2.通过sql语句加入主键约束
语法:alter table 表名 modify 字段名称 字段类型 primary key;
②.删除主键约束
语法:alter table 表名 drop primary key;
给id加上自增长约束后,不需要给id赋值,id会自增长。
注:自增长约束可以自己插入新的id,然后在之前id上继续自增
获得最后一次自增长主键id的值:SELECT LAST_INSERT_ID() ;
5.外键约束
①.加入外键约束
create table 表名(
字段名 字段类型,
constraint --声明
外键名称 --命名规则:主表名称_从表名称_fk
foreign key(字段名) -- 作用在这个字段id上
references 主表名称(id) --关联主表的主键id
)
注意:加入外键约束:修改和删除是很麻烦,需要先修改或者删除从表数据,然后修改/删除主表数据