MySQL常用SQL语句

-- 》DDL(Data Definition Language) 数据定义语言,用来定义数据库对象:库、表、列等。

-- 1.数据库操作
-- 创建数据库     数据库名字可以任意取 但是创建后数据库名字会自动转化为小写
create database test;
-- 删除数据库     
drop database  test;
-- 修改数据库编码  
alter database test character set utf8;
-- 查看所有数据库的名称
show databases;
-- 切换数据库    use 数据库名字
use test;

-- 2.数据库表操作

--  int:整型
-- 
--  double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
-- 
--  char:固定长度字符串类型;
-- 
--  varchar:可变长度字符串类型;
-- 
--  text:字符串类型;
-- 
--  blob:字节类型;
-- 
--  date:日期类型,格式为:yyyy-MM-dd;
-- 
--  time:时间类型,格式为:hh:mm:ss

-- 创建数据表 数据库会自动将大写转为小写字母 char固定大小需要指定 varchar不固定也需要指定大小。主键primary key 自增auto_increment 不为空not null;
create table INFO1(
    id int primary key auto_increment,
		username varchar(255) not null,
		sex char(4),
		borndate date,
		weight double
);

-- 删除表
drop table info1;

-- 修改表
-- 添加列
alter table info1 add (school varchar(255));
-- 删除列
alter table info1 drop school;
-- 修改列类型
alter table info1 modify sex varchar(2) not null;
-- 修改列名
alter table info1 change sex gender char(2);
-- 修改表名 
alter table info1 rename to tab_info1;

-- 查看表
-- 查看当前数据库中所有的表
show tables;
-- 查看指定表的创建语句
show create table tab_info1;
-- 查看表的结构
desc tab_info1;


-- 》DML(Data Manipulation Language)    数据操作语言,用来定义数据库记录(数据)

-- 1.添加数据
insert into tab_info1 (id,username,gender,borndate,weight) values(9,'twg','男','2019-12-14',55.2);

-- 2.删除数据(低效率)
delete from tab_info1;

-- 2.删除数据(高效率)
truncate table tab_info1;

-- 3.修改数据
update tab_info1 set username='唐微港',weight=55.8;


-- 》DQL(Data Query Language)    数据查询语言,用来查询记录.
-- 1.普通查询
-- 查询列
select name,group_id from tb_spec_param;
-- 带别名的查询列
select a.name as '用户名',a.group_id as '组ID' from tb_spec_param a;
-- 带条件查询列(也可以加上别名) 
select name,group_id,cid,generic from tb_spec_param where generic=1 and searching=1;
-- 分组查询列
select a.parent_id,a.name from tb_category a group by a.parent_id,a.name order by parent_id asc;

-- 2.复杂查询

-- 联合查询     UNION:去除重复记录,例如:SELECT * FROM t1 UNION SELECT * FROM t2;1、要求多条查询语句的查询列数是一致的!2、要求多条查询语句的查询的每一列的类型和顺序最好一致 3、union关键字默认去重,如果使用union all 可以包含重复项
select a.title as '手机' from tb_sku a where spu_id=3 union select b.name as '机器名称' from tb_spec_param b; 

-- 连接查询   连接查询就是求出多个表的乘积,例如t1连接t2,那么查询出的结果就是t1*t2
-- 内连接     内连接的特点:查询结果必须满足条件。例如我们向emp表中插入一条记录: 其中deptno为50,而在dept表中只有10、20、30、40部门,那么上面的查询结果中就不会出现“张三”这条记录,因为它不能满足e.deptno=d.deptno这个条件
-- select * from tb_spec_group a,tb_spec_param b where a.cid=b.cid;
select * from tb_spec_group a inner join tb_spec_param b on a.cid=b.cid;

-- 左外连接    查询出的结果存在不满足条件的可能   我们还是用上面的例子来说明。其中emp表中“张三”这条记录中,部门编号为50,而dept表中不存在部门编号为50的记录,所以“张三”这条记录,不能满足e.deptno=d.deptno这条件。但在左连接中,因为emp表是左表,所以左表中的记录都会查询出来,即“张三”这条记录也会查出,但相应的右表部分显示NULL。
select * from tb_spec_group a left join tb_spec_param b on a.cid=b.cid;

-- 右外连接    右连接就是先把右表中所有记录都查询出来,然后左表满足条件的显示,不满足显示NULL。例如在dept表中的40部门并不存在员工,但在右连接中,如果dept表为右表,那么还是会查出40部门,但相应的员工信息为NULL。
select * from tb_spec_group a right join tb_spec_param b on a.cid=b.cid;

-- 自然连接(少用)
select * from tb_spec_group a natural join tb_spec_param b;
select * from tb_spec_group a natural right join tb_spec_param b;
select * from tb_spec_group a natural left join tb_spec_param b;

-- 子查询
-- 子查询就是嵌套查询,即SELECT中包含SELECT,如果一条语句中存在两个,或两个以上SELECT,那么就是子查询语句了。where后,作为条件的一部分;from后,作为被查询的一条表。
-- 在where之后的 where后面的结果只能是唯一的列入这里查询出来的结果只能有一个
select * from tb_spec_param b where b.cid>(select a.cid from tb_spec_group a where a.name='主体');

-- SELECT * FROM emp WHERE sal > ALL (SELECT sal FROM emp WHERE deptno=30)

-- 查询条件:工作和工资与殷天正完全相同,这是子查询
-- SELECT * FROM emp WHERE (job,sal) IN (SELECT job,sal FROM emp WHERE ename='殷天正')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值