MySQL自学,看到望指证

中括号里面的表示可以根据情况选择添加的内容。

sql分类:定义语言,操作语言,查询语言,控制语言。

查询:show databases;查询当前库:select database();

创建:creat database[if not exists] 数据库名称 [default charset 字符集名称(像utf-8这样的字符集格式,此处不写也没事儿,因为有默认的字符集格式)][collate 排序规则模式]

删除:drop database [if exists] 数据库名称使用:use 数据库名称定义语句的表结构操作--查询查询当前数据库所有表:show tables;查询表结构:desc/describe 表名称;查询指定表的建表语句show create table 表名称;定义语句表操作-- 创建create table 表名称(字段 字段类型 [comment 字段的注解信息], 字段 字段类型 [comment 字段的注解信息])[comment 表注释];

定义语句表操作 -- 数据类型此处粘贴数据类型截图定义语句表操作 -- 修改添加字段:alter table 表名称 add 字段名称 字段类型 (长度)[comment 注释][约束]下面一条修改字段只能修改字段的数据类型修改字段: alter table 表名称 modify 字段名称 型数据类型(长度)[comment 注释][约束]修改该字段名和字段类型:alter table 表名称 change 旧字段名称 新字段名称 类型(长度)[comment 注释][约束];定义语句表操作 -- 删除alter table 表名称 drop 字段名称;定义语句表操作 -- 修改表名称alter table 表名称 rename to 新表名称;定义语句表操作 -- 删除删除表:drop table [if exists] 表名称;删除指定表并创建该表:truncate table 表名称;数据操作语言 -- 添加数据 给指定字段添加数据: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, ... ),(值1,值2, ... ) ... ;数据库操作语言 -- 修改数据 update 表名称 set 字段名称1 = 值1,字段名称2=值2,... [where 条件];数据库操作语言 -- 删除数据 delete from 表名称 [where 条件] 数据库查询语言 -- 语法 select 字段列表 from 表名称列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数基本查询:查询多个字段 select 字段1,字段2,字段3 ... from 表名称;select * from 表名称;设置别名:select 字段 as 别名 from 表名称:去除重复记录:select distinct 字段列表 from 表名称;between and 语法既包含最小值也包含最大值。in ( value1,value2,value3...)等于or 或者并集的意思。sql 分组查询:select 字段列表 from 表名称 where 条件 group by 分组字段名称 having 分组后过滤条件;注:where 不能对聚合函数进行判断,having可以对聚合函数进行判断;执行顺序:where > 聚合函数> having。分组后,查询到字段一般为聚合函数和分组字段,查询其他字段无任何意义。

sql排序查询:select 字段列表 from 表名称 order by 字段1 排序方式1,字段2 排序方式2;asc:(默认)升序desc:降序注:排序过程中,按排序条件方式顺序依次进行甄别,如果第一个条件无法明确分别的情况下,再对该条数据进行第二个条件排序甄别,以此类推。sql分页查询:select 字段列表 from 表名称 limit 起始索引 ,索引记录数;注意:起始索引从0开始,起始索引=(查询页码-1 )* 每页显示记录数。分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中的是limit。如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。数据控制语言 :用来管理数据库 用户、控制数据库的访问权限。数据控制语言-- 查询用户use mysql ;selsect * from user ;数据控制语言 -- 创建用户create user '用户名'@'主机名' identified by '密码';修改用户密码alter user '用户名' @ '主机名' identified with mysql_native_password by '新密码';删除用户 drop user '用户名'@'主机名';注解:%代表任意主机。用户权限管理语句:1,查询权限有哪些:show grants for '用户名'@'主机名';2.授予权限:grant 权限列表 (要授予该账户的权限所组成的列表) on 数据库名称.表名称 to '用户名'@'主机名';3.撤销权限: revoke 权限列表 on 数据库名称.表名称 from '用户名'@'主机名';约束用来限制存储在表中的数据非空约束:not null ;限制存储字段不能为null 唯一约束:unique ;保证此字段存储的数据唯一主键约束:primary key ;主键是一行数据的唯一标识,且非空唯一检查约束:check ; 保证字段值满足某个条件外键约束:foreign key ; 使两张表之间建立连接,保证数据的一致性和完整外键约束语法 --- 添加外键create table 表名称(字段名称 数据类型,....[constraint] [外键名称] foreign key ( 外键字段名 ) references 主表(主表列表));若已经创建过表,添加外键关联的话:alter table 表名称 add constraint 外键名称 foreign key (外键字段名称) references 主表(主表列名)on 删除/更新行为 ;例:alter table 表名 add constraint 外键名称 foreign key (外键字段)references 主表名(主表字段名称)on update cascade on delete cascade;行为:no action 先检查是否有对应外键,有则不允许更新或删除 restrict 同no action cascade 先检查是否有外键,如果有,也删除或更新外键所在子表中的记录。 set null 检查后如果有,则设置子表中该外键值为null。 set default 父表变更是,子表将外键设置成默认值。删除外键:alter table 表名称 drop foreign key 外键名称;多表查询分类:1.连接查询:内连接:两个表的交集部分 显式内连接:select 字段列表 from 表1,表2 where 条件...; 隐式内连接:select 字段列表 from 表1 [inner] join 表2 on 连接条件... ; 外连接: 左连接:查询左表数据及连接部分 语法:select 字段列表 from 表1 left [outer] join 表2 on 条件... ; 右连接:查询右表数据及连接部分 语法:select 字段列表 from 表1 right[outer] join 表2 on 条件...;自连接:当前表与自身的连接查询,自连接必须要使用别名。 语法:select * from 表1 别名 a join 表1 别名 b on 条件...;联合查询: union [all]在两个查询的表之间加union 就可以使两个表查到的结果直接合并起来, 不去重。注意:联合查询的多张表的列数必须保持一致,字段类型也要一致union all 会将全部的数据直接合并在一起,union 会对合并后的数据去重。2.子查询:嵌套查询的别称为子查询select * from t1 where column1=(select column1 from t2);根据查询结果的不同,将子查询分为:标量子查询:子查询结果为单个值列子查询:子查询结果为一列行子查询:子查询结果为一行表子查询:子查询结果为多行多列根据出现的位置,分为:where 之后出现的子查询 ,from出现之后的子查询,select出现之后的子查询。标量子查询:子查询返回的结果是单个值,常用的操作符有:= , <>,>,<,>=,<=例:select * from emp where dept_id = (select id from dept where name= '销售部');列子查询:子查询返回的结果是一列,常用操作符有:in ,not in , any ,some ,allin:在指定的集合范围之内,多选一;not in:不在指定的集合范围之内;any:子查询返回列表中,有任意一个满足即可;some:与any 一样,使用some的地方都能使用anyall:子查询返回列表的所有值都必须满足

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值