Mysql基础、常用函数、分页、约束

一。

  • 连接服务器的协议 TCP/IP 协议 Client/Server
    HTTP协议 Broswer/Server
    FTP/IP协议 ftp 21
  • 套接字:ip:port
    IP:服务所在电脑上的IP地址
    port:电脑上用于区分不同服务的唯一标识
    mysql:3306 oracle:1521
    http:默认80
    redis:8379
    host: 主机 - IP 域名DNS
  • mysql workbench - 只能连接mysql
    navicat - 12版 - 连接多种数据库
    SQLog - 海豚 连接多种数据库
    PLSQL - 连接多种数据库
    SQL Developer - 只能连接Oracle,依赖JRE
  • – SQL:官方通用sql + 方言sql
    – DDL: 和数据库以及数据表的 CRUD 操作
    – DML: 和表中的记录相关的 CRUD 操作
    – DQL: select 记录
    – DCL: 数据库服务器的操作权限、用户等相关的

二。
1.DDL

-- 查看当前服务器中有哪些库
show databases;
-- 创建一个库 -> 等同于一个文件夹
CREATE DataBase if not exists db_day01;

-- 删除数据库
drop database if exists db_day01;

-- 修改数据库
alter database db_day01 character set utf8; -- 设置数据库字符集

-- 创建表,需要定义 字段(列名 数据类型)
create table user (
	id int COMMENT '序号',
    name varchar(20) COMMENT '姓名'
);

-- 删除表
drop table if exists user;

-- 修改表结构, 增加字段
alter table user add(age int(3));
alter table user add(birthday date);

-- 修改表结构, 修改字段类型 id - int(11)
alter table user modify name varchar(10);

-- 查询表结构
  desc user;

2.DML


-- 新增表中的数据
-- 插入一整行,values() 中的值 必须和字段的顺序一致
insert into user values(1, 'lucy', 23, '2020-08-09');
-- 插入一行,有的字段为空
insert into user values(null, 'lucy', 23);
-- 插入一行的部分字段
insert into user(age, name) values(25, 'tom');
-- mysql支持批量插入数据
insert into user values(3, '张三', 18),
	(4, '张三', 19),
	(5, '张三', 18),
	(6, '张三', 19),
	(7, '张三', 18);
	
-- 修改表中的数据
-- 更新表中所有的记录
update user set name = '李四';
-- 有条件的更新 where
update user set name = '李四' where name = '张三';
-- 修改数据库的安全模式 
update user set name = '李四' where id=7;

-- 删除表中的数据
-- 删除全部记录
-- null 无穷大 或者 无穷小
delete from user; -- 删除所有-挨个记录删除
-- 条件删除
delete from user where id = 1 or id is null;
-- 删除表中所有记录 - DDL - 删除表,重新创建
truncate table user;

3.DQL

-- 1.查询所有记录 * 会自动解析为所有字段名,解析效率较低
select * from emp;
-- 2.单独查询部分字段, 例如全部员工的姓名
select 
	empno,ename,sal,job,hiredate
from 
	emp;
-- 3.将查询出来的字段 起个别名 select 字段名 as 别名
-- as可以省略
select 
	empno as '编号',ename '姓名',sal,job,hiredate '入职时间'
from 
	emp;

三。简单查询
1.条件查询
SELECT 字段名 FROM 表面 WHERE 条件;

条件查询
-- 4.1查询部门在20的所有人
select ename, deptno from emp where deptno = 20;
-- 4.2查询月薪大于1000的人
select ename,sal from emp where sal > 1000;
-- 4.3查询月薪大于1000,并且小于2000的人
select ename,sal from emp where sal >= 1000 and sal <= 2000;
select ename,sal from emp where sal BETWEEN 1000 and 2000;
-- 4.4查询在20或者30部门的人
select ename, deptno from emp where deptno = 20 or deptno = 30;
select ename, deptno from emp where deptno in (20,30);
select ename, deptno from emp where deptno not in (20,30);
-- 4.5查询所有没有奖金的人
select ename, comm from emp where comm is null;
-- 4.6查询名字是SCOTT的人
select ename from emp where ename = "scott";
select ename from emp where ename like "scott";
-- 4.7查询名字是以S开头的人
-- %可以0~n个   _ 一个占位符,一个字符
select ename from emp where ename like "s%";
-- 4.8查询名字有S的人
select ename from emp where ename like "%s%";
-- 4.9查询名字中第二个字母是A的人
select ename from emp where ename like "_A%";
-- 4.10查询员工的月薪*12+奖金 是多少
select ename, sal*12 '年薪' from emp;
-- comm 是 null 所以不能直接计算
select ename, sal*12 + ifnull(comm, 0) '年薪' from emp;
-- ftp:temp -> tools -> mysql

-- 在emp表中查询都有哪些部门号 -- 去除重复
select distinct deptno from emp; -- 只能查出3条数据
select distinct (deptno, ename) from emp;

-- 查询员工姓名,以及月薪,并且按照月薪由大到小排序
-- 升序-默认 asc,倒叙-desc
select ename, sal from emp order by sal desc;

四。常用函数

/*
  聚合函数、分组函数
	count(): 求总数
    max(): 求最大值
    min(): 求最小值
    avg(): 求平均值
    sum(): 求和
  会自动将null值排除在外
 */
-- 查询emp表中一共有多少个员工
select count(*) from emp;
-- 查询员工中的最高薪资
select max(sal) from emp;
-- 求平均薪资多少
select round(avg(sal)) from emp;
-- 求平均的奖金
select avg(comm) from emp;
-- 求所有员工的月薪总和
select sum(sal) from emp;

select * from emp;
/*
  普通函数 - 方言
    字符串相关,数学相关,时间相关
    temp-resources-api
 */
select ceil(1.34);
select month(now());
select concat('ha','he');
select ifnull("hello", 20);

更多用法点击下面;
转载自:https://blog.csdn.net/weixin_43216903/article/details/89284757?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159758551219724811857111%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=159758551219724811857111&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-4-89284757.first_rank_ecpm_v3_pc_rank_v2&utm_term=mysql%E5%87%BD%E6%95%B0%E6%9C%89%E5%93%AA%E4%BA%9B&spm=1018.2118.3001.4187

五。分页
/* limit分页 limit startRow(开始行), rowCount(行数)
startRow=(page-1)*rowCount;
*/
use work01;
select * from emp limit 0,3;
select * from emp limit 3,3;
select * from emp limit 6,3;
select * from emp limit 9,3;
select * from emp limit 12,3;
select * from emp order by sal asc limit 0,3;

六。约束

  1. 主键:非空且唯一 代理主键:没有任何业务意义 自然主键:表中本身存在的非空唯一的有效字段

插入重复键值: 1062 Duplicate entry ‘1’ for key ‘PRIMARY’
插入空的主键值:Column ‘id’ cannot be null

删除主键:alter table st5 drop primary key;
怎加 主键 :alter table st5 add primary key(id);

create table st5 (  id int primary key, 
name varchar(20),  age int );

主键自增 AUTO_INCREMENT

  列名  int primary key AUTO_INCREMENT 

主键自加可以在插入时给主键赋值null

  1. unique 唯一约束:列中不可以出现重复的值。但是null没有数据,不存在重复问题
-- 已有表添加唯一约束
ALTER TABLE stu ADD  UNIQUE index (id) ;
-- 删除唯一约束 index 索引
ALTER TABLE stu drop index id ;
  1. not null 非空约束:列的值不可以null
  2. default ‘啥啥’ 列里的值默认值为啥啥
insert into st9 values (1, '李四'default);
或者
insert into st9 (id, name) values (2, '李四');

七。外键约束:从表中与主表对应的那一列

  1. 创建约束:
新建表时增加外键:
 constraint 外键约束名随意取 foreign key (外键字段名) references 主表名 (主表字段名);

已有表怎加外键:
alter table 从表 add  constraint 外键约束名随意取 foreign key (外键字段名) references 主表名 (主表字段名);

删除外键:
alter table 从表 drop foreign key 外键名称;
  1. 一对多:
主表:
create table department(  
id int primary key auto_increment,  
dep_name varchar(20),  
dep_location varchar(20) );
从表:
create table employee(  
id int primary key auto_increment, 
name varchar(20),  
age int,  
dep_id int ,--外键对应主表的主键 )
创建外键约束
constraint emp_depid_fk foreign key (dep_id) references department(id)
  1. 多对多
/*
多对多,需要创建一张新的table,对2张表进行外键约束。
中间表对另外两张表关联,中间表删除才可以删除其他表。
*/

create table coder(-- 从表1
id int primary key auto_increment,
name varchar(20),
salary varchar(20)
 );
 
create table project(-- 从表2
id int primary key auto_increment,
name varchar(10)
); 

create table coder_project(-- 主表
coder_id int ,
project_id int ,
-- 添加外键
foreign key (coder_id) references coder(id),
foreign key (project_id )  references project(id )
 );
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值