【黑马程序员】MySQL学习记录二(SQL)

本文介绍了SQL的基本语法,包括单行/多行注释,数据类型如数值、字符串和日期时间,以及DDL(数据定义语言)的操作,如创建、查询、修改和删除数据库及表。还涵盖了DML(数据操纵语言)的插入、更新和删除数据,DQL(数据查询语言)的查询语法,以及DCL(数据控制语言)的用户管理和权限控制。
摘要由CSDN通过智能技术生成

一、SQL通用语法

1、SQL语句可以单行或多行书写,以分号结尾。

2、注释:

(1)单行注释:

--注释内容

#注释内容

(2)多行注释:

/*注释内容*/

二、SQL分类

 1、数据类型

(1)数值类型

注意:

decimal的使用:例如123.45,M(精度是5)、D(标度是2),所以是decimal(5,2) 。decimal(5,2)unsigned表示的范围0~999.99,signed表示的范围-999.99~999.99。

举例:

①年龄:大于0的整数,而且范围不会超过100太多

age TINYINT UNSIGNED

② 分数:大于0的小数,可能出现值的范围0.0~100.0

score DOUBLE(4,1) UNSIGNED

(2)字符串类型

 注意:

定长字符串和变长字符串的区别:

①定长字符串,例如使用CHAR(10),如果只存储了一个字符,它会占用10个字符,剩余的空间也会使用空格填充。性能好。

②变长字符串,例如使用VARCHAR(10),如果只存储了一个字符,它就只会占用一个字符。它会根据你存储的字符,计算占用的空间是多少。需要计算,所以性能较差。

(3)日期时间类型

2、DDL-数据库操作 

(1)查询

①查询所有数据库

show databases;

注意:

不要漏了“databases”的“s” 

②查询当前数据库

select database();

③创建

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

④删除

drop database [if exists] 数据库名;

⑤ 使用

use 数据库名;

 3、DDL-表操作

(1)查询

①查询当前数据库所有表

show tables;

②查询表结构

desc 表名;

③查询指定表的建表语句

show create table 表名;

(2)创建  

create table 表名{

        字段1 字段1类型 [COMMENT 字段1注释];

        字段2 字段2类型 [COMMENT 字段2注释];

        字段3 字段3类型 [COMMENT 字段3注释];

        ...

        字段n 字段n类型 [COMMENT 字段n注释];

} [COMMENT 表注释];

注意:

此处“COMMENT”必须全部大写。(使用的MySQL版本为8.0.33,使用小写的comment不行,使用大写的COMMENT才可以。视频中使用小写的comment却没有问题。) 

CREATE TABLE test_user (

         id INT COMMENT '编号',

        name VARCHAR(50) COMMENT '姓名',

        age INT COMMENT '年龄',

        gender VARCHAR(1) COMMENT '性别'

) COMMENT '用户表';

(3)修改 (alter

①添加字段

alter table 表名 add 字段名 类型(长度) [COMMENT 注释] [约束];

②修改数据类型

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

③修改字段名和字段类型

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

 ④删除字段

alter table 表名 drop 字段名;

⑤修改表名 

alter table 表名 rename to 新表名;

(4)删除(drop、truncate

①删除表

drop table [if exists] 表名;

② 删除指定表,并重新创建该表(全新的表,没有数据)

truncate table 表名;

4、DML 

(1)添加数据(insert)

①给指定字段添加数据

insert into 表名 (字段名1,字段名2,...) values (值1,值2,...);

②给全部字段添加数据

insert into 表名 values (值1,值2,...);

③批量添加数据

insert into 表名 (字段名1,字段名2,...) values (值1,值2,...),(值1,值2,...),...;

insert into 表名 values (值1,值2,...), (值1,值2,...),...;

(2)修改数据(update)

update  表名 set 字段名1 = 值1,字段名2 = 值2,...[where 条件];

注意:

修改语句如果没有条件,则会修改整张表的所有数据。 

(3)删除数据(delete)

delete from 表名 [where 条件];

注意:

- 删除语句如果没有条件,则会修改整张表的所有数据。

- 删除语句不能删除某一个字段的值(可以使用update)

5、DQL

编写顺序

select

        字段列表

from

        表名列表

where

        条件列表

group by

        分组字段列表

having

        分组后条件列表

order by

        排序字段列表

limit

        分页参数

(1)基本查询

①查询多个字段

select 字段1,字段2,... from 表名

 select * from 表名

②设置别名

select 字段1 [as 别名1],字段2 [as 别名2],... from 表名

③去除重复记录(distinct

select distinct 字段列表 from 表名;

(2)条件查询(where

select 字段1,字段2,... from 表名 where 条件列表;

- 无、不存在:is null 

- 有、存在:is not null

- between 最小值 and 最大值

- 查询最后一位为X:like '%X'

(3)聚合函数(count、max、min、avg、sum

常见聚合函数

select 聚合函数(字段列表) from 表名; 

注意:

所有的聚合函数在计算过程中不计入“Null”值

(4)分组查询(group by

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

where与having区别:

- 执行时机不同:where是分组之前进行;having是分组之后

- 判断条件不同:where不能使用聚合函数;having可以。

注意:

- 执行顺序:from > where > 聚合函数 > group by >having

b站笔记-作者“追追追追忆”
b站笔记-作者“追追追追忆” UID843964

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

举例:

查询表emp中年龄小于45的员工,并根据工作地址(workaddress)分组,获取员工数量大于等于3的工作地址(workaddress)

select workaddress, count(*) from emp where age < 45 group by workaddress having count(*) >=3;

(5)排序查询(order by

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

排序方式:

- asc:升序(默认值)

- desc:降序

注意:

如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

(6)分页查询(limit

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

注意:

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

- 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10

(7)总结

 6、DCL

用来管理数据库用户、控制数据库的访问权限

(1)管理用户

①查询用户

use mysql;

select * from user;

②创建用户

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

主机名:

- localhost:当前主机

- %:任意主机

③修改用户密码

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

④删除用户

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

(2)权限控制

①查询权限

show grants for '用户名'@'主机名';

②授予权限

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

 常用权限列表:

③撤销权限

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

注意: 

- 多个权限之间使用逗号分隔

- 数据库名和表名都可以使用 * ,代表所有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值