目录
连接MySQL
数据库操作
表的操作
数据操作
进阶查询
源码等资料获取方法
连接MySQL
-- 语法:mysql -u用户名 -p密码 注:--空格 起到注释的作用
mysql -uroot -p123456
数据库操作
-- 显示当前时间、用户名、数据库版本(可以单独查询)select now(), user(), version();-- 查看所有数据库show databases;-- 创建数据库
-- 语法:create database 数据库名 [数据库选项]; []可缺省create database test; create database test1 charset=utf8;-- 查看数据库的创建信息
-- 语法:show create database 数据库名;show create database test;-- 修改数据库的选项
-- 语法:alter database 数据库名 修改的数据选项;alter database test1 charset=utf8mb4;-- 使用数据库
-- 语法:use 数据库名;use test1;-- 查看当前使用的数据库 select database();-- 删除数据库
-- 语法:drop database 数据库名; drop database test;
表的操作
-- 创建表
-- 语法:create table 表名(字段 类型 [约束]); -- []表示可缺省
-- 常用约束:-- 主键:primary key-- 非空:not null-- 自增:auto_increment-- 无符号:unsigned-- 默认:default 默认值create table user_info(id int,name varchar(30));create table user_info(`id` int unsigned primary key not null auto_increment, `name` varchar(30),`gender` enum("男", "女", "保密") default "保密",`age` TINYINT,`createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP , # 创建时间 `updateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , # 更新时间);-- 查看表结构
-- 语法:desc 表名;desc user_info;-- 修改表结构
-- 语法:alter table 表名 操作名;-- 操作名-- 增加字段:add column 字段名 字段属性;alter table user_info add column addr varchar(30);-- 删除字段:drop column 字段名alter table user_info drop column addr;-- 修改字段属性:modify column 字段名 字段属性;alter table user_info modify column addr int;-- 修改字段名和属性:change column 原字段名 新字段名 字段属性;alter table user_info change column addr address varchar(20);-- 修改约束:-- 添加主键:add primary key(字段名)alter table user_info_cp add primary key(id);-- 删除主键:drop primary key (删除主键前需删除其AUTO_INCREMENT属性)alter table user_info_cp drop primary key; -- 删除表
-- 语法:drop table 表名;drop table user_info;-- 查看创建表的语句
-- 语法:show create table 表名;show create table user_info;-- 复制表结构
-- 语法:create table 表名 like 要复制的表名create table user_info_cp like user_info;-- 复制表结构和数据
-- 语法:create table 表名 select * from 要复制的表名create table user_info_cpdata select * from user_info;
数据操作
-- 插入数据
-- 语法:insert into user_info[(指定字段)] values(字段值);-- 全部插入insert into user_info values(4, "李四", "女", 19);-- 部分插入insert into user_info(name, gender, age, create_time) values("张三", "男", 22, "2018-10-12 11:22:33");-- 插入多条insert into user_info(name, gender, age) values("王麻子", "男", 22),("老王",1,33);-- 插入一列数据,注意没有valuesinsert into class(class_name) (SELECT class_name from user_info group by class_name); -- 将user_info表中搜索出的class_name字段的内容在class表的class_name字段的最后条记录后插入-- 查询表中数据
-- 语法:select 字段 from 表名 [where 字段=字段值];-- 简单查询select * from user_info;-- 查询后修改查询的值select name,IFNULL(gender,'未定义') from user_info;-- 条件查询select name,gender from user_info where gender="女";-- 多条件查询select name,gender from user_info where gender="女" and age>18;-- 修改数据
-- 语法:update 表名 set 字段=新字段值 where 字段=字段值update user_info set name="王五" where gender="男" and age=22;-- 修改整个字段内容update user_info u left join class c on u.class_name=c.class_name set u.class_name=c.id; -- 将user_info表中class_name字段内容全部替换成class表中对应的班级ID-- 删除数据
-- 语法:delete from 表名 条件;delete from user_info where name="李四";
进阶查询
user_info表
score表
-- 使用 distinct 去重查询select distinct gender from user_info;-- 使用 as 取别名,as 可缺省-- 为字段取别名select name "姓名",gender as g from user_info where g="男";-- 为表取别名select * from user_info as u,score s where u.name=s.name;-- 查询常用函数-- 使用 avg 查询平均数select avg(age) from user_info;-- 使用 sum 查询总和select sum(age) from user_info;-- 使用 min(max) 查询最小(最大)值select min(age) from user_info;-- 使用 count 统计查询记录数select count(*) from user_info;-- 使用 group by 分组查询select class from user_info group by class; -- 查询班级名称select avg(age) from user_info group by class; --- 使用group by 查询语句不能使用where 条件筛选数据,可以使用 having 条件筛选select class from user_info group by class having avg(age)>20; -- 查询平均年龄大于20的班级select count(*) from user_info group by class; -- 查询每个班多少人select sum(score) from user_info group by class; -- 查询每个班所有人总分数-- 使用 group_concat 查看分组的详细信息select class,group_concat(name) from user_info group by class;-- 使用运算符查询-- 使用比较运算符(> < =)select * from user_info where age>18;-- 使用between...and...查询select * from user_info where age between 18 and 30;-- 使用 in 查询select * from user_info where age in (11,22,33);-- 使用 is null (is not null) 查询select * from user_info where address is null;-- 使用 and or not 查询select * from user_info where (age=18 and gender="女") or gender!="女"-- 使用 like 模糊查询select * from user_info where name like "王%"-- 使用limit分页查询
-- 分页公式 limit (页码-1)*分页大小,分页大小select * from user_infor limit 10; -- 显示最前面10条数据select * from user_infor limit 0,10; -- 从第1条数据开始,显示后面10条数据select * from user_infor limit 10,10; -- 从第11条数据开始,显示后面10条数据select * from user_infor limit 20,10; -- 从第21条数据开始,显示后面10条数据-- 使用 order by 给查询数据排序-- asc 升序查询,默认升序select * from user_info order by age;select * from user_info order by age asc;-- desc 降序查询select * from user_info order by age desc;-- 多表查询-- 把查询结果当成条件select * from user_info where name in (select name from score where score>59);-- 把查询结果当成一张新表select * from (select name from user_info) as n left join score on n.name=score.name;-- 等值连接查询select * from user_info as a, score as b where a.`name`=b.`name`;-- 自连接查询select a.* from user_info a, user_info b where a.name=b.team_leader; -- 查询班长信息-- 多列子查询select * from user_info where (age, class)=(select age, class from user_info where name="李四"); -- 查询与李四同班同龄的信息-- 连接查询-- inner join on 内连接。只返回相互匹配部分的数据select * from user_info inner join score on user_info.name=score.name; -- 查询score中有成绩的人员信息-- 外连接分为 左连接 left join 和右连接 right join-- 左连接。返回左表全部数据和右表匹配数据select * from user_info left join score on user_info.name=score.name; -- 左表为user_info,右表为score-- 右连接。与左连接相反。select * from user_info right join score on user_info.name=score.name; -- 左表为user_info,右表为score
源码等资料获取方法
各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!
三连之后我会在评论区挨个私信发给你们~