MySQL语句
MySQL语言
DDL(Date definition language)数据定义语言
- CREATE
- DROP
- ALTER
#创建用户
create user 用户名;
密码可以通过alter进行修改调用password函数
或者通过给权限方式设置密码
#创建数据库
`语法`
CREATE DATABASE IF NOT EXISTS 数据库名字 charset utf8 collate utf8_general_ci;
`例子`
CREATE database if not exists mymysql charset utf8 collate utf8_general_ci;
#创建表
`语法`
CREATE TABLE 表名字(
字段1 类型 约束 ,
字段2 类型 约束 ,
字段3 类型 约束
);
`例子`
create table tb_user (
ID int not null auto_increment primary key comment '名字',
name char(10) not null unique comment '名字',
gender enum('男','女') comment '性别',
status char(10) comment '状态'
);
#删除表
`语法`
drop table if exists 表名;
`例子`
drop table if exists tab_user ;
#删除数据库
`语法`
drop database if exists 数据库名;
`例子`
drop database if exists mymysql;
#增加表字段(列)
`语法`
ALTER TABLE 表名 add 列名 类型
`例子`
alter table mymysql.tab_user add money char(10) not null default 1000 after name ;
#删除表字段(列)
`语法`
ALTER TABLE 表名 drop 列名
`例子`
alter table mymysql.tab_user drop money ;
#重命名表字段(列)
`语法`
ALTER TABLE 表名 change 列名 新名字 新名字的属性(约束);
`例子`
alter table mymysql.tab_user change money salary char(10) not null default 1000 after name;
#修改表字段(列)
`语法`
alter table 表名称 change 字段名称 字段名称 字段类型 [是否允许非空];
alter table 表名称 modify 字段名称 字段类型 [是否允许非空];
`例子`
alter table mymysql.tab_user change salary salary char(10) not null after status ;
alter table mymysql.tab_user modify salary char(10) not null default 1000 after gender ;
#增加索引
`语法`
ALTER TABLE 表名 ADD INDEX 索引名字(字段);
`例子`
Alter table mymysql.tab_user add index index_name(name);
#删除索引
`语法`
ALTER TABLE 表名 drop INDEX 索引名字;
`例子`
Alter table mymysql.tab_user drop index index_name;
#添加外键
ALTER TABLE 表
ADD CONSTRAINT 约束名
FOREIGN KEY(作为外键的列)
REFERENCES 那个表(那个字段)
ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`);
#删除外键
##删除外键
ALTER TABLE student DROP FOREIGN KEY FK_gradeid;
##发现执行完上面的,索引还在,所以还要删除索引
##注:这个索引是建立外键的时候默认生成的
ALTER TABLE student DROP INDEX FK_gradeid;
SHOW的用法
#查询有哪些数据库
show databases;
#查询有哪些表
show tables;
#查询建库语句
show create database 库名字
#查询建表语句
show create table 表名字
#查询变量
show variables like "%coll%";
#查用户权限
show grants for root@'%';
#查看索引
show index from 表名字
#显示一些系统特定资源的信息,例如,正在运行的线程数量
show status;
#显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间。
show table status;
# 显示最后一个执行的语句所产生的错误、警告和通知
show warnings ;
# 显示安装以后可用的存储引擎和默认引擎
show engines ;
#只显示最后一个执行语句所产生的错误
show errors ;
DESC的用法
#desc降序,与order by配合使用,asc是升序
#查询表结构
desc 表名字
DML(DATA Manipulation language)数据操作语言
- insert
- update
- delete、TRUNCATE
#插入数据的使用
INSERT into 表名字(字段1,字段2,字段3)values(字段值1,字段值2,字段值3),(字段值1,字段值2,字段值3);
INSERT INTO student('name','pwd','sex')values('张三','123','男'),('李四','456','女');
#更新数据
语法:UPDATE 表名 SET 'colnum_name'='value' where判断条件
UPDATE student set 'name'='王','pwd'='123' where id=1;
#删除数据
语法:DELETE from 表名[where 条件]
TRUNCATE命令
作用:完全清空一个数据库,表的结构和索引不会变。
-- 清空student表
TRUNCATE 'student'
DELETE与TRUNCATE的区别
`相同点:都可以删除数据,且不改变表的结构,但是TRUNCATE速度更快。`
`不同点:使用TURNCATE删除表,可使自增的计数器回到初始计数状态;且不会对事务有影响`
delete table from tab_user where ID = 2 ;
truncate table tab_user;
DCL(DATA Control language)数据控制语言
- grant
- revoke
#给权限
语法:GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名' identified by '密码'with grant option;
grant all privileges on *.* to root@'%' identified by '123456' with grant option ;
#取消权限
语法:REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
REVOKE ALL ON mytest.students FROM 'myuser'@'localhost';
权限 | 说明 |
---|---|
ALL,ALL PRIVILEGES | 所有权限 |
SELECT | 查询数据 |
INSERT | 插入数据 |
UPDATE | 更新数据 |
DELETE | 删除数据 |
ALTER | 修改表 |
DROP | 删除数据库、表、视图 |
CREATE | 创建数据库、表 |
DQL(DATA query language)数据查询语言
- SELECT
#查询
SELECT 字段1,字段2 from 表名字 where 条件 group by 字段 having 条件 order by 字段 limit 0,5;
#执行顺序
from–>where–>group by -->having–>select–>order by
#基础查询
SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;
SELECT * FROM 表名 ; 1
SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;
SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名;
SELECT DISTINCT 字段列表 FROM 表名;#去重复查询
#条件查询
SELECT 字段列表 FROM 表名 WHERE 条件列表 ;
#聚合函数
SELECT 聚合函数(字段列表) FROM 表名 ;
count
max
min
avg
sum
#分组查询
SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组 后过滤条件 ];
where与having区别执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组
之后对结果进行过滤。
判断条件不同:where不能对聚合函数进行判断,而having可以。
#排序查询
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;
ASC : 升序(默认值)
DESC: 降序
#分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ; 1
起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。
本文作者:迷茫的28岁
本文链接:https://www.cnblogs.com/zheng520/p/16667488.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步