MySQL单表增删改查

D最近总感觉自己的知识太琐碎,有时候回顾的时候也感觉有点凌乱,所以决定把自己学的知识笼统的整合一下,先从非关系型的MySQL数据库开始,后面会系统的整理别的后端开发的技术,同时也为下一年的面试做一下准备。

Tips: 仅供个人观看,菜鸡误喷。

学习之前,我们先明确数据库的相关概念,包括DBMS, DB, SQL,

关系型数据库:以表结构存储数据

DBMS: 数据库管理系统,本质是一个软件,帮助我们管理数据库

DB:数据库

SQL:一条语句,通过sql可以查询数据库,得到我们想要的表信息。

MySQL的下载(Windows)

Https://dev.mysql.com/downloads/mysql/

下载对应版本的.msi文件,无脑next就行, 应该不难,网上也有对应教程。

MySQL开机自启

启动MySQL

net start mysql80

关闭MySQL 

net stop mysql80

对于客户端连接的话

        我们既可以找到MySQL Command Line Client进行启动,输入密码,然后连接。

        也可以输入mysql -u root -p 输入密码连接, 最后配置环境遍历,就是你MySQL-bin的地址。

        注意:测试你cmd可以采用管理员模式运行

SQL语句

1. DDL

 1.1数据库操作

/*
    
    MySQL忽略大小写

    文中 name 是数据库名 
*/

#查询所有数据库
show databases;

#查询当前数据库
show database();


#创建一个数据库 
/*
    charset 编码
    collate 默认排序
*/
create database if not exists name default charset utf8mb4 collate utf8_unicode_ci



#删除一个数据库
drop database if exists name

#使用数据库
use name

1.2表操作(创建和查询)

#创建一个用户表
create TABLE t_user(
	id int COMMENT "用户Id",
	username VARCHAR(40) DEFAULT NULL COMMENT "用户名",
	passwords VARCHAR(40) COMMENT "密码"
)COMMENT"用户表"

#注意:此时默认ENGINE = InnoDB;


#查看表
show tables;

#查询表结构,就是查看所有内容
DESC 表名;

#查询指定建表语句
show create table 表名;

1.3数据类型

数值类型        

                                                                字符串类型

                                                               日期类型

知识补充:not null 和 default

        首先明确not null 和 default是两个独立的约束,not null指定的是这条数据非空,也就是insert into t_user value("张三", null)/姓名和年龄,如果定义了not null,那么这个插入就会报错,但是空字符串null不一样,也就是insert into t_user value("张三", “”)是成立的。default是指定一个默认值,前提是未传入参数insert into t_user value("张三")这时的默认defaut就会生效

1.4表操作(修改和删除)

#添加字段
alter table 表名 字段名 类型(长度) comment 注释 [约束]

#给emp表增加一个新的字段昵称为nickname,类型为varchar(20)
alter table emp add nickname varchar(20) comment "昵称";


#修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);

#修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) 注释;

#test
alter emp change nickname username varchar(30) comment “用户名字;

#删除字段
alter table 表名 drop 字段名;

#test
alter table emp drop username;

#修改表名
alter table 表名 rename to 新表名;


#删除表名
drop table if exists 表名;

2. DML

注意1:插入数据时要注意字符串日期需要加引号,数据长度不能超规定,且属性要一一对应。

插入数据

#插入数据

insert into 表名(字段1, 字段2) values(属性1, 属性2); 

insert into 表名 values(属性1, 属性2);

insert into 表名 values(属性1, 属性2),(属性3, 属性4),(属性5, 属性6);

修改数据/删除数据

#修改数据

update 表名 set 字段名1 = 值1, 字段名2 = 值2 [where语句的条件] 


#删除数据
delete from 表名 where 条件

3.DQL

3.1基础查询

#插入
select 字段1, 字段2 from 表名

select 字段1 as 别名1, 字段2 as 别名2 from 表明

//去重
select distinct from 表名


#test

select name workno age from table_test

select * from table_test

selct address as useradderss from table_test
思想有问题了..  应该是 select address as "家庭住址" from table_test
或者 select address "家庭住址" from table_test


select distinct from table_test

3.2条件查询

                                                                        图1 

#1
select * from emp where age = 88;

#2
select * from emp where age < 20;

#3
select * from emp where age <= 20;

#4
select * from emp where idcard is NULL;

#5
select * from emp where idcard is NOT NULL;

#6
select * from emp where age != 88;

#7
select * from emp where age >= 15 && age <= 20;
selct * from emp where age between 15 andd 20;

#8
selct * from emp where sex = '女' and age < 25

#9
select * from emp where age In(18, 20, 40);

#10
selct * from where name like "__";

#11查询身份证最后一位是x的员工信息
select * from emp where idCard like "%x";

 3.3聚合函数

数据库表如图1

注意:所有的null值不参与聚合函数运算

#统计该企业员工数量
select count(*) from emp;

#统计企业员工平均年龄
select avg(age) from emp;

#统计企业最大年龄
select max(age) from emp;

3.4分组查询

where和having

where再分组之前过滤,不满足where的不参与分组,分组后having过滤

where不能对聚合函数判断,而having可以

where > 聚合 > having

分组之后,查询的字段一般是聚合函数和分组字段,其他的也没什么意义

#男女性别分类,并统计
select gender, count(*) from emp group by gender;

#根据性别分组,统计男性员工和女性员工的平均年龄
select gender avg(age) from emp group by gender;

#查询年龄少于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
select address, count(*) where age < 45 group by address having count(*) >= 3

3.5排序查询

select 字段列表 from 表名 order by 字段1 字段2

ASC 升序
DESC 降序

#根据年龄对公司员工进行升序排序,年龄相同按照入职时间进行降序排序
select * from emp order by age asc, entrydata desc;

3.6分页查询

开始索引从0开始,起始 = (查询页码 - 1) * 每页显示记录数

#1
select * from emp where gender = "女" and age in (20, 21, 22, 23)

#2
select * from emp where username like ("___") and age between 20 and 40 and sex = "男"

#3
select gender count(*) from emp where age < 60 group by gender

#4
select username, age from emp where <= 35 order by age asc entrydata desc;

#5
select * from emp where gender = "男" and age between 20 and 40  order by age asc entrydata desc limit 0, 5

总结执行顺序

4DCL

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值