冬瓜头学Mysql

近期在学习Mysql,并对其中基础的增删改查命令做了笔记,希望能帮到大家!

MySQL启动/关闭命令: net start mysql80 net stop mysql80(在cmd中可以直接通过mysql进入,通过quit退出)

MySQL客户端连接:mysql [-h 127.0.0.1] [-P 3306] -u root -p

MySQL数据类型分为两种:数据库、表

SQL命令分为四种类型:DDL(数据定义语言,创建数据库、表以及其内部的定义)、DML(数据操作语言,对数据进行增删改)、DQL(数据查询语言,查询数据库中表的记录)、DCL(数据控制语言,创建用户赋予权限)

DDL

查询所有数据库

show databases;

查询当前数据库

select databases();

创建        create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];

删除        drop database [if exits] 数据库名;

使用        use 数据库名;

查询当前数据库所有表        show tables;

查询表结构        desc 表名;

查询指定表的建表语句(定义这个表时候的表内属性)        show create table 表名;

表操作-创建        create table 表名(

                                       字段1 字段1类型[comment 字段1注释], 例如age tinyint comment '年龄'

                                       ......

                                       字段n 字段n类型[comment 字段n注释] 注意:最后一个字段后面没有逗号

                                       )[comment 表注释] 例如comment ‘职员信息表';

数据类型

数值:tinyint (-128,127) 或 unsigned tinyint (0,255)

           smallint(-32768,32767) 或 (0,65535)

           medium(-8388608,8388607) 或 (0,16777215)

           int/integer(-2147483648, 2147483647) 或(0, 4294967295)

           bigint(-2^63, 2^63-1) 或(0, 2^64-1)

           float(-3.402823466 E+38, 3.402823466351 E+38) 或 0和(1.175494351 E-38, 3.402823466 E+38)

           double(-1.7976931348623157 E+308, 1.7976931348623157 E+308) 或 0和 (2.2250738585072014 E-308, 1.7976931348623157 E-308)

           decimal 依赖于M(精度)和D(标度)的值

字符串:char(定长字符串)

              varchar(变长字符串)

              tinyblob(不超过255个字符的二进制数据)

              blob(二进制形式的长文本数据)

              text(长文本数据)

              mediumblob(二进制形式的中等长度文本数据)

              mediumtext(中等长度文本数据)

              longblob(二进制形式的极大文本数据)

              longtext(极大文本数据)

日期:date(日期值 格式YYYY-MM-DD)

          time(时间值或持续时间 格式HH:MM:SS)

          year(年份值 格式YYYY)

          datetime(混合日期和时间值 格式YYYY-MM-DD HH:MM:SS)

          timestamp(混合日期和时间值 格式YYYY-MM-DD HH:MM:SS)

DML

表修改

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

                      例如 为emp表增加一个新的字段"昵称"为nickname,类型为varchar(20)

                      alter table emp add nicename varchar(20) comment ' 昵称';

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

修改字段名和字段类型        

                alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];

                例如 将emp表的nickname字段修改为username,类型为varchar(30)

                alter table emp change nickname username varchar(30) comment '用户名';

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

                      例如 将emp表的字段username删除

                      alter table emp drop username;

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

                      例如 将emp表的表名修改为employee

                      alter table emp rename to employee;

删除表        drop table [if exists] 表名;

删除指定表,并重新创建该表(删除表内数据用)      

                truncate table 表名;

                例如 删除表tb_user

                drop table if exists tb_user;

DQL

        条件查询(where)

        查询年龄等于88的员工

        select * from emp where age = 88;

        查询没有身份证好的员工信息(空值的用法)

        select * from emp where idcard is null;

        查询年龄不等于88的员工信息(不等于的用法)

        select * from emp where age != 88; 或者 select * from emp where age <> 88;

        查询年龄在15-20的员工信息(范围表示)

        select * from emp where age >=15 && age <=20; 或者 select * from emp where age >=15and age <=20; 或者 select * from emp where age between 15and 20;(一定要是小的在前面大的在后面)

        查询年龄等于18或20或40的员工信息(或 的表示)

        select * from emp where age = 18 or age = 20 or age = 40; 或者 select * from emp where age in(18,20,40);

        查询姓名为两个字的员工信息

        select * from emp where name like '__';(用下划线表示字,一个下划线代表一个未知字)

        查询身份证号最后一位是X的员工信息

        select * from emp where idcard like '%X';(百分号可以替换无限制数量的字符,不然就得用17个_表示了)

聚合函数:

count 统计数量

max 最大值

min 最小值

avg 平均值

sum 求和

select 聚合函数(字段列表) from 表明; null值不参与聚合函数计算

        例:统计该企业西安员工的平均年龄

        select count(*) from emp where workaddress = '西安'; 或者 select count(idcard) from emp where workaddress = '西安';

分组查询:

        select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后的过滤条件];

        例如 根据工作地址分组,查询其中年龄大于20的男性员工和女性员工的数量,获取员工数量大于3的工作地址(将表头输出为address_count)

        select workaddress, count(*) address_count from emp where age > 20 group by workaddress having count(*) > 3;

执行顺序中:where > 聚合函数 > having

分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

排序查询:

        select 字段列表 from 表名 order by 字段1 排序方式, 字段2 排序方式2;

        排序方式: 1、ASC 升序(默认) 2、DESC 降序

        例如 根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序

        select * from emp order by age asc,entrydate desc;(其中的asc可以省略)

分页查询:

        select 字段列表 from 表名 limit 起始索引, 查询记录数;

        注意:起始索引从0开始,起始索引=(查询页码-1)*每页显示数,查询第一页的时候起始索引可以省略

        例如 查询第2页员工数据,每页展示10条记录

        select * from emp limit 10,10;

思考:

查询年龄为20,21,22,23岁的女性员工信息。

查询性别为 男,并且年龄在 20-40 岁(含)以内的姓名为三个字的员工。

统计员工表中,年龄小于60岁的,男性员工和女性员工的人数。

查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序。

查询性别为男,且年龄在20-40岁(含)以内的5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序。

答案:

select * from emp where gender = '女' and age in(20,21,22,23);

select * from emp where gender = '男' and age between 20 and 40 and like '___';

select gender, count(*) from emp where age < 60 group by gender;

select name , age from emp where age <= 35 order by age asc, entrydate desc;

select * from emp where gender = '男' and age between 20 and 40 order by age asc,entrydate desc limit 5;

DQL编写顺序:select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数(编写代码的格式顺序)

DQL执行顺序:1 表名列表 2 条件列表 3 分组字段列表、分组后条件列表 4 字段列表 5 排序字段列表 6 分页参数(数据库中操作的执行优先度)

DCL

管理用户

        查询用户 USE mysql;

        select * from user;

        创建用户 create user '用户名'@'主机名' identified by '密码';

        修改用户密码 alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';

        删除用户 drop user '用户名'@'主机名';

        其中主机名若为%,表示任意主机

权限控制(常用)

        所有权限 all, all privileges

        查询数据 select

        插入数据 insert

        修改数据 update

        删除数据 delete

        修改表 alter

        删除数据库/表/视图 drop

        创建数据库/表 greate

        查询权限 show grants for '用户名'@'主机名'

        授予权限 grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';

        撤销权限 revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值