黑马mysql视频笔记 BV1Kr4y1i7ru 后面我会上传自己的sql文件,待完结
mysql概述(略)
SQL
SQL通用语法
略
DDL(数据定义语言)
数据库操作
查询所有的数据库 show databases;
查询当前数据库 select database();
创建 create database [if not exists] 数据库名 [default charset 字符集][ collate 排序规则]
字符集utf8 3个字节,utf8mb4 4个字节
删除 drop database [if exists] 名字;
使用 use 数据库名;
表操作
- 创建表
USE itcast;
– 创建表
CREATE TABLE test(
id int comment ‘编号’,
name VARCHAR(50) comment ‘名字’
) COMMENT ‘员工表’;
-
查询表
- 查询所有表 show tables;
- 查询表结构 desc 表名;
- 查询详细表结构 show create table test;
-
修改表
- 添加字段 alter table 表名 add 列名 类型(长度)[comment注释][约束];
- 修改数据类型 alter table 表名 modfiy 字段名 新数据类型(长度);
- 修改字段名和字段类型 alter table 表名 change 旧列名 新列名 类型(长度) 约束;
- 删除字段 alter table 表名 drop 字段名;
- 修改表名 alter table 表名 rename to 新表名
-
删除表
- 删除 drop table [if exists] 表名;
- 删除指定表,并重新创建改该表 truncate table 表名; truncate(v.截断.a。截短的)
数据类型
- 数值类型 (对应pdf p99)无符号unsigned
- 字符串类型
- 日期时间类型
DML(数据操作语言)
数据插入
-
指定字段添加数据 insert into 表 (列名1,列名2,列名3…) values (值1,值2,值3…);
-
全部字段添加数据 insert into 表名 values (值1, 值2,…);
-
批量添加数据
insert into 表名 (字段1,字段2,…) values (值1,值2,…), (值1,值2,…), (值1,值2,…);
insert into 表名 values (值1,值2,…), (值1,值2,…), (值1,值2,…); -
INSERT INTO SELECT语句
- 将一张表的数据导入到另一张表中,用INSERT INTO SELECT语句
insert into Table2(field1,field2,…) select value1,value2,… from Table1
或者:insert into Table2 select * from Table1
- 将一张表的数据导入到另一张表中,用INSERT INTO SELECT语句
目标表Table2必须存在
修改数据
- **update 表名 set 字段名=值,字段名=值…;
- update 表名 set 字段名=值,字段名=值… [where 条件];**
删除数据
- delete from 表名 [where 条件];
DQL(数据查询语言)
基本查询
- 查询多个字段 select 字段1,字段2,字段3,… from 表名;
select * from 表名;注意
:实际中不建议用 * ,不直观 - 设置别名 select 字段1[as 别名1], 字段2[as 别名2] … from 表名;
- 去除重复记录 select distinct 字段列表 from 表名; (distinct a不同的;明显的)
条件查询
in(…) in(18,20,24); 18或20或24
like:例 123456789X %X 或 (前面9个_)X
聚合函数
- 介绍:将一列数据作为一个整体,进行纵向计算
- 语法 select 聚合函数(字段列表) from 表名; 注意:null不参与聚合函数得计算
分组查询
-
select 字段1,字段2… from 表名 group by 分组字段 [having 分组条件];
-
where与having得区别
- 执行时机不同:where是分组之前过滤;having是之后
- 判断条件不同:where不能对聚合函数进行判断,having可以
排序查询
selecrt 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2; (升序asc降序 desc)
多种排序方式 :如果前面字段得内容相同,按方式2排序
分页查询
select 字段1,字段2… from 表明 limit m,n
m: 整数,表示从第几条索引开始
n: 整数,表示查询多少条数据
执行顺序
表中为编写顺序,数字为执行顺序;用别名验证
DCL(数据控制语言)
作用:用来管理数据库用户、控制数据库的访问权限
用户管理
-
查询用户
use mysql;select * from user;
-
创建用户
create user ‘用户名’@‘主机名’ identified by ‘密码’;
1.初始用户没有权限 2.在任意主机访问数据库;localhost(主机名)改为 %
- 修改用户密码
alter user ‘用户名’@‘主机名’ identified with mysql_native_password by ‘新密码’;
- 删除用户
drop user ‘用户名’@‘主机名’;
权限管理
- 查询权限 show grants for ‘itcast’@‘localhost’;
- 授予权限 grant delete on 数据库名.表名 to ‘itcast’@‘localhost’;
- 撤销权限 revoke 权限 on mydb01.product02 from ‘itcast’@‘localhost’;
1.多个权限用逗号隔开;2.数据库名,表名 可以用 *
函数
字符串函数
语法:select 函数(参数);
数值函数
日期函数
流程函数
约束
约束演示
- 概念
约束:constraint
约束实际上就是表中数据的限制条件
- 作用
表在设计的时候加入约束的目的就是为了保证表中的记录完整性和有效性,比如用户表有些列的值(手机号)不能为空,有些列的值(身份证号)不能重复
注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束
外键约束
- 添加外键
- [constraint 外键名] foreign key 字段名 [,字段名2,…] references 主表名 主键列1 [,主键列2,…]
- alter table 数据表名 add constraint 外键名 foreign key(列名) references主表名 (列名);
- 删除外键
- alter table 表名 drop foreign key 外键名称;