mysql数据库sql语句
时间:2021-07-01 10:21:17
帮助过:22人阅读
//针对于数据库和表,creat drop alter select
DCL:数据控制语言
//grant...if
DML:数据操纵语言
//操作表中数据,insert delete update
DQL:数据查询语言
//查询:select
1.数据库的创建/删除/查/
切换
a)Create database 数据库名称 //创建数据库
b)Drop database 数据库名称
//删除数据库
c)Show databases
//查看所有数据库
d)Use 数据库名称
//切换数据库
2.数据表的操作 创建/删除/修改/
show
1 Creat table 表名(字段名1 类型 约束, 字段名2 类型 约束。。。)
//创建表格
i.类型:
Java中的类型 MySQL中的类型
byte/
short/
int/
long tinyint/smallint/
int/
bigint
float float
double double
boolean bit
char/String char和varchar类型
//char 表示固定长度的字符串,varchar表示可变长度的字符串
定义时需指定长度。
Date date/time/datetime/timestamp
//datetime 与datestamp均表示日期时间,区别datetime默认null,datestamp默认当前系统时间
file blob/
text
ii.约束:
primary key //主键约束
not
null //非空约束
unique
//唯一约束
2 show tables
//查看所有表
desc 表名
//查看某个表结构
3 Drop table 表名
//删除
4 修改表:
alter table 表名 add 列名 字段类型(长度) [约束] //添加列
alter table 表名 drop 列名
//删除列
alter table 表名 change 旧列名 新列名 字段类型(长度) [约束]
//修改列名
alter table 表名 modify 列名 字段类型(长度) [约束]
//修改字段类型/长度/约束
alter table 表名 rename to 新表名
//修改表名
rename table 表名 to 新表名
alter table 表名 chatacter set 新字符集 [collate字符集校验规则]
//修改字符集
3.表记录操作
1 添加数据
Insert into 表名(列1,列2,列3) values(值1,值2,值3) //添加部分数据
insert into 表名 values(值1,值2,值3 。。。)
//添加数据
2 修改数据
update 表名 set 列1=值1,列2=值2,...[
where 条件];
//省略where条件则修改整列值
3 删除数据
delete from 表名 [
where 条件]
//删除满足条件的记录
delete
from 表名
//删除所有记录,一行一行删
truncate table
//删除表,将表删除,然后创建一张和之前表结构相同的新表trancate table
4 基本查询
select *
from 表名
where 条件
//按一定条件查询记录
select *
from 表名
where name like
"李%";
//模糊匹配 "%"代表0个或者多个占位符 "_"表示一个占位符,还可以not like 。。。
select *
from 表名
where name
in (a,b,c...)
//在指定范围内查找记录,也可以使用between...and... 实现,前面可以加not
select *
from 表名
where english >
86 AND english <
100;
//查找英语成绩在80-100之间的记录,and ->与,or->或,not->否定
select *
from 表名
where name
is null //用is null 判断是否是空,is not bull
5 聚合函数:
sum(字段名) //求和,下面类似
avg()
//求平均值
count(*)
//统计个数
min()
//求最小值
max()
//求最大值
ifnull(字段名,值)
//任何值和null相加均为null,用ifnull,如果该字段是null 那么用给定的值代替,不为null则返回原来的值
拓展: length(刘a) -->
4 //计算字段值的长度,不属于聚合函数,一个中文占3个字符
charlength(刘a) -->
2 //字符长度
6 分组函数
group by 字段名 [having 条件]
总结 select …
from 表名
where 条件 group by 字段名 hanving 条件 order by asc/
desc;
having :当条件有聚合函数或者分组之后还需筛选,那么使用having过滤,其他情况用where
where : 是对原始表中数据进行过滤,having是对查询结果进行过滤
执行顺序:from...
where...group by...
select...having...order by
分页查询
select *
from table limit
3,
5;
//其中3表示从第四条记录开始,5表示查询5条数据
MySQL多表&事务
1.数据库的密码重置,备份和还原
1 密码重置:跳过权限开启服务:mysqld –skip-grant-tables-->重新开启cmd,登录mysql-->use mysql-->update user set password=password(‘123’) where user=’root’;-->结束mysqld.exe,重新开启服务
2 数据库还原:方式1:create database db3;-->退出数据库:\q 回车-->mysql -uroot -p db3 < c:/db3.sql
方式2:create database db3;-->source c:/db3.sql;
2.表与表之间的关系的建立
1 一对多:在多的一方添加外键指向一的一方的主键
添加外键:
sql语句实现:foreign key (did) references dept(did) //在创建表是添加语句:
constraint abc foreign key (did) references dept(did) //abc 为之地指定的约束名,后续可通过名字删除外键
alter table employee add constraint abc foreign key (did) references dept(did) //在创建表之后添加外键
工具实现:
2 多对多:创建一张中间表,在中间表中至少有2个字段分别设置外键指向多对多双方的主键;
3 一对一:假设其中一的一方为多的一方,在多的一方添加外键指向一的一方的主键,并且给外键再设置一个唯一约束
3.多表查询
1 连接查询
交叉连接:-->cross join
select * from 表1 cross join 表2; //查询到两个表的笛卡儿积
select * from 表1,表2; //省略了cross join
内连接-->inner join
显示内连接
select * from 表1 inner join 表2 on 关联条件 //也可用where连接条件
隐式内连接
select * from 表1,表2 where 关联条件; //较为常用
外连接-->outer join
左外连接:
select * from 表1 left outer join 表2 on 连接条件;
右外连接:
select * from 表1 right outer join 表2 on 连接条件; //outer均可省略
2 子查询
使用场景:一个查询语句的条件需要依赖另一个查询语句的结果就叫子查询,也就是说sql语句可以嵌套使用。
分类
带in的子查询:在给定的结果内查询
带exists 子查询:如果exists后面的查询结果存在,执行前面的sql语句
带any子查询:只要符合any后面查询语句的任何一个结果就行 //放在关系表达式中,表示任意
带all的子查询:要符合all后面查询语句中的所有结果才行。 //表示所有
4.事务的概述-->指的是一组逻辑操作,要么同时成功要么同时失败。start transaction commit rollback
使用事务:
开启事务:start transaction
提交事务:commit;
回滚事务:rollback;
四大特性:
原子性:组成事务的最小单元是不可分割的,要么同时成功要么同时失败。 //同时成功,同时失败
一致性:执行事务前后,数据的完整性是一致的;(也就是案例中总钱数是一样的) //数据完整性
隔离性:在数据库中,各个事务之间应该是独立的,不应该受其他事务的影响。 //独立
持久性:事务一旦结束,数据就会序列化到数据库中。
事务的隔离级别:
read uncommitted:脏读,不可重复读,虚读都有可能发生
read committed :避免脏读。但是不可重复读和虚读是有可能发生
repeatable-read :避免脏读和不可重复读,但是虚读有可能发生。
serializable:避免脏读,不可重复读,虚读。
从上到下级别越来越高,但是效率越来越低。
脏读:一个事务读到了另一个事务未提交的数据。
不可重复读:一个事务读到了另一个事务已经提交的update数据
虚读/幻读:一个事务读到了另一个事务已经提交的insert数据
mysql数据库sql语句
标签:模糊匹配 ant truncate action 事务的概述 base modify 记录操作 col