-- DDL语句
-- 库操作
-- 创建数据库
create database database1029;
-- 使用数据库
use database1029;
-- 查询当前数据库(select)
select database();
-- 查询mysql所有数据库(查询所有就用show)
show databases;
-- 删除当前数据库(drop)
drop database database1029;
-- 表操作
-- 创建表
-- 约束
-- auto_increment 自增
-- not null 非空约束:限制该字段不能为空
-- unique 唯一约束:保证该字段所有元素都是唯一的
-- primary key 主键约束:要求非空且唯一
-- default 默认约束:当未指定该字段值,采用默认值
-- check 检查约束:保证字段值满足某一个条件
-- foreign key 外键约束:用来将两张表连接起来,保证一致性
create table user (
-- 字段名 字段类型 comment 字段注释
id int primary key auto_increment comment '用户id',
username varchar(20) not null comment '用户名',
password int default '111' unique check ( password>1 && password<99999 )comment '用户密码'
)comment '用户表';
create table source(
id int primary key auto_increment comment 'id',
money int not null comment '金额',
user_id int unique comment '用户id'
)comment '数据表';
-- 查询当前数据库所有表(查询所有就用show)
show tables;
-- 查询表结构(也就是查询各表字段信息)
desc user;
-- 查询指定表的建表语句
show create table user;
-- 修改表的操作
-- 在表中添加字段(alter table 表名 add 字段名 字段类型 [comment 注释][约束])
alter table user add sex char(1) comment '性别';
-- 修改字段数据类型
alter table user modify password varchar(10);
-- 修改字段名和数据类型
alter table source change money Money varchar(10);
-- 修改表名
alter table user rename to user1;
-- 删除表
drop table user;
drop table source;
-- 删除表,并重新创建该表(保存表结构,删除表中数据)
truncate table user;
-- DML操作
-- 插入操作
-- 单条插入
insert into user(id, username, password) VALUES (1,'chai',12);
insert into source(id, money, user_id) VALUES (1,1111,1);
-- 多条插入
insert into user(id, username, password) VALUES (2,'jian',22),(3,'jian',33);
insert into source(id, money, user_id) VALUES (2,2222,2),(3,3333,3),(4,4444,4);
-- 修改数据
update user set username='chai' where id=3;
update user set password=33 where id=3;
-- 删除数据
delete from source where id=4;
-- DQL操作
-- DQL执行顺序: from > where > group by > having > select > order by >limit
-- 查找表所有数据
select * from user;
select * from source;
-- 查找多个字段
select username,password from user where id=1;
-- 给查找东西设置别名(也就是查找后的内容列名变成别名)
select username as '用户名' from user;
-- 去掉查询的字段信息中的重复值(如果查询内容有多列,必须都一样,才会去重)
select distinct username from user;
select distinct username,password from user;
-- 条件查询
select * from user where id >1;
-- between and 相当于 and
select * from user where id between 2 and 3;
-- in 相当于或者or
select * from user where id in (1,2,3);
select * from user where id like '%1%';
select * from user where id=1 and password=22;
select * from user where id=1 or password=22;
select * from user where id!=1;
-- 聚合函数的使用
-- 次数
select count(id) from user;
-- 最大值
select max(id) from user;
-- 最小值
select min(id) from user;
-- 平均值
select avg(money) from source;
-- 和
select sum(money) from source;
-- 分组查询(group by 用于分组,后面跟的having是对分组结果进行过虑,having 后面跟的条件是前面的查询字段)
select username,count(id) from user group by username having username!='chai';
-- 排序查询(desc 降序,asc 升序,默认是asc)
select * from user order by id desc;
-- 分页查询(limit 起始索引,查询条数) 起始索引=(查询页码数-1)*每页显示的记录数
select * from user limit 0,2;
-- 多表查询
-- 内连接(查询多张表的并集)
select user.*,s.Money,s.user_id from user inner join source s on user.id = s.user_id;
-- 左外连接
select user.*,s.Money,s.user_id from user left join source s on user.id = s.user_id;
-- 右外连接
select user.*,s.Money,s.user_id from user right join source s on user.id = s.user_id;
-- 自连接
select * from user join user s on user.id = s.id;
-- 联合查询(将多张表的内容合并)
select * from user
union ALL
select * from source;
select * from user
union
select * from source;
-- 子查询语句(SQL语句中嵌套查询语句)
-- 标量子查询(返回结果是单个值)
select * from user where id=(select id from source where user_id=1);
-- 列子查询(返回结果是一列:常用操作符是in)
select * from user where id in (select source.id from source);
-- 行子查询(返回结果是一行)
select * from user where (id,username) in (select id,username from user where id=1) ;