SQL常用命令

DML:data manipulation language 数据操作语言:增删改查
insert、delete、update、select
DDL:data definition language 数据定义语言:就是我们在创建表的时候用到的一些sql,
create、alter、drop
DCL:data control language 数据控制语言:是用来设置或更改数据库用户或角色权限的语句
grant、revoke

登录mysql:

	mysql -uroot -proot
	mysql -uroot -p	回车之后再输入密码
	mysql -uroot -p -h主机名或ip地址 -P端口

退出连接:

   quit/exit

查库:

		 show databases;

创库:

		create database mydb1 charset utf8;

删库:

		drop database if exists mydb1;

备库:

	-- 在cmd窗口中(未登录的状态下)
  mysqldump -uroot -proot mydb1 > d:/mydb1.sql -- 备份单个
  mysqldump -uroot -p --databases db30 db40 > d:/db3040.sql -- 备份多个
  mysqldump -uroot -p -A > d:/all.sql --备份所有      

恢复库:

     方式一:
     -- 在cmd窗口中(已登录的状态下),先创建库
     -- 在cmd窗口中(未登录的状态下) mysql -uroot -p db60 < d:/db40.sql
     方式二:
     -- 在cmd窗口中(已登录的状态下),先创建库
     -- 再通过source执行指定位置下的sql文件:source d:/db40.sql

进入某库:

	 use mydb1;

查表:

	show tables;

创建表:

create table stu(
id int primary key auto_increment, -- 主键自增
name varchar(50) not null, -- 非空约束
birthday date unique, -- 唯一约束
score double
dept_id int;
primary key(stu_id,tea_id), -- 建表时设置联合主键
foreign key(dept_id) references dept(id) -- 外键约束
on update cascade -- 级联更新
on delete cascade -- 级联删除
);

查看建表语句:

		show create table stu;

删表:

		drop table stu;

查看表结构:

		 desc stu;

新增/修改/删除表记录

新增表记录:
	insert into stu(id,name,gender,birthday,score) values(1,'张飞','男','2000-1-1',89);
	insert into stu value(2,'赵云','男','2001-12-11',75);
修改表记录:
	update stu set score=score+10;
	alter table stu add gender varchar; -- 新增列
	alter table stu modify id int primary key auto_increment; --添加主键及主键自增
	alter table stu modify double not null; -- 添加非空约束
	alter table emp add  foreign key(dept_id) references dept(id); --添加外键约束
	alter table emp drop foreign key emp_ibfk_1(外键名); -- 删除外键
	alter table stu modify id int; -- 这是删除自增
	alter table stu drop primary key; -- 这是删除主键约束
	alter tavle stu to student;  -- 修改表名
删除表记录:
	delete from stu; -- 删除stu表中的所有记录
	delete from stu where id>3; -- 删除复合条件的记录
	alter table stu drop score; --删除列

单表查询:

1.基础查询

select * from emp;
select distinct bonus from emp; -- distinct用于剔除重复记录

2.where子句查询

<>等同于!=

between 10 and 100 某个范围内 等同于10<X<100

in(10,100,1000)符合任意一个 等同于 10 or 100 or 1000

like模糊查询+  %: 可以通配表示0个或多个任意字符
			   _: 可以通配表示一个任意字符

ifnull(列名,值):如果有null值,用第二个值替换

3.函数查询

count(*|列名) -- 统计多少行记录
max(列) -- 求最大值
min(列) -- 求最小值
sum(列) -- 求和
avg(列) -- 求平均值
curdate() -- 返回一个年月日格式的日期
curtime() -- 返回一个时分秒格式的时间
sysdate()/now() -- 返回一个年月日 时分秒格式的时期加时间
year(),month(),day(),hour(),minute(),second()
-- 上面的函数分别用于获取年月日时分秒中的年份/月份/天数/小时/分钟/秒值

concat(s1,s2,s3...sn) 
-- 将传入的多个字符串连接在一起
concat_ws(x,s1,s2,s3...sn) 
-- 将传入的多个字符串连接在一起,每两个连接时会通过x作为分隔符进行连接

4.分组查询

	 group by 列名

5: 排序查询

order by 列名 asc/desc
asc: 默认的, 升序, 从低到高
desc: 降序, 从高到低

6: 分页查询

limit (页码-1)*每页显示的记录数, 每页显示的记录数

多表查询:

1.连接查询:a*b条纪录

select * from a,b;

2.左关联查询:a表独有和ab表共有数据

select * from a left join b on a.id=b.id;
在这里插入图片描述

3.右关联查询: b表独有和ab表共有数据

select * from a right join b on a.id=b.id;
在这里插入图片描述

4.查询:取a表独有数据 共享部分不要

select a.* from a left join b on a.id=b.id where b.id is null;
在这里插入图片描述

5.查询:取b表独有数据 共有数据不要

select b.* from a right join b on a.id=b.id where a.id is null;
在这里插入图片描述

6.查询:取a b表共有数据

select * from a join b on a.id=b.id;
在这里插入图片描述

7.查询:取a b表全有数据

select * from a left join b on a.id=b.id
UNIon
select * from a right join b on a.id=b.id;
在这里插入图片描述

8.查询:取a表和b表独有部分

select a.* from a left join b on a.id=b.id where b.id is null;
UNIon
select * from dept d
select b.* from a right join b on a.id=b.id where a.id is null;
在这里插入图片描述

mysql中的事务操作

开启事务: begin; | start transaction;
结束事务: 提交(commit), 回滚(rollback)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值