MariaDB——SQL语句分类汇总
- sql语句主要分为:
- DQL:数据查询语言,用于对数据进行查询,如select
- DML:数据库操作语言,对数据库进行增删改查,如:insert,update,delete
- TPL:事物处理语言,对事物进行处理,包括begin,transaction,commit,rollback
- DCL:数据控制语言,如grant,revoke
- DDL:数据定义语言:进行数据库,表的管理等,如create,drop
- CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
- sql是一门特殊的语言,专门用来操作关系型数据库
- 不区分大小写
show tables;
show global variabels;
show create database testdb;
show databases;
show grants;
show grants for test;
show grants for test@localhost;
show databases;
show create database kkk;
show grants for ken@localhost;
show create table students;
show session variabels like '%pro%';
show global variabels like '%buffer_pool%';
show session status;
show table status like 'students';
show table status like 'v_test';
show variabels like '%commit%';
show profiles;
show create table classes;
show profiles; #查看sql执行时间
create database aaa character set utf8;
id tinyint unsigned primary key not null auto_increment,
name varchar(20)
);
create table students (
id smallint unsigned auto_increment primary key,
name varchar(22),
age tinyint unsigned default 0,
high decimal(5,2),
gender enum('male','female','secret') default 'secret',
cls_id tinyint unsigned
);
create table areas(
aid int primary key auto_increment,
name varchar(22),
pid int
);
create table index(
id int primary key,
name varchar(22),
age int,
key (age)
);
create table test(
id tinyint unsigned primary key auto_increment,
name varchar(20),
high decimal(5,2),
gender enum('male','female','none') defaulte 'none',
birthday datetime
);
create view v_info as select c.name as c_name,s.name as s_name from students as s inner join calsses as c on s.cls_id=c.id;
create index name_index on test_table(name);
create view v_info as select c.name as c_name,s.name as s_name from students as s inner join calsses as c on s.cls_id=c.id;
--如果两个colume都是name那么会报重复的错误,所以起一个别名。
create index 索引名称 on 表名(字段名)
create index age_index on index(age);
create table test_table (id int primary key auto_increment,name varchar(20),title varchar(20));
create index name_index on test_table(name);
create database aaa;
create database kkk character set utf8;
#mycat登录
mysql -h 192.168.254.24 -P9066 -utestuser1 -ptestuser1 (可以查看节点状态)
mysql -uroot -proot -e "show databases;use mysql;show tables;"
alter database testdb character set utf8;
alter database kkk character set utf8;
alter table students add birth datetime;
alter table students modify birth date;
alter table students change birth birthday date;
alter table students add birthday datetime;
alter table students modify birthday date;
alter table students change birthday birth datatime;
alter table students drop birth;
alter table students add is_delete bit(1);
#bit(2): 00 01 10 11
alter table students add constraint fk_students foreign key (gid) references grade(gid) on delete cascade;
alter table students drop foreign key 外键名称;
alter table students add constraint fk foreign key (cls_id) references classes(id);
alter table students drop foreign key fk;
alter table students add constraint fk foreign key (cls_id) references classes(id) on delete cascade;
insert into students values (1,'ken',23,170,'male',1);
insert into students values (0,'ken1',23,170,'male',1),(0,'ken2',23,170,'male',1);
insert into students values (default,'pheb',24,176.250,’male‘,1);
insert into students values (null,'pheb',24,176.250,’male‘,1);
--三种情况都是走primary-key的默认值
insert into students values (10,'pheb',24,176.250,’male‘,1);
insert into students values (0,'pheb',24,176.250,’male‘,1);
--这个时候再插入数据的时候,就会默认从11开始
insert into students (name,age,high) values ("joy",23,176.24); #如果有些不能为空的字段没有默认值会报错
delete from students where id=1;
delete from students; #会清空这张表
delete from students where name='joy';
truncate table students; #不可恢复的删除
delete from students; #可以恢复
delete 删除自增还在,但是如果使用truncate来删除,自增归零。
delete from classes where id=1; #外键约束,无法删除
--先删除子表再删除父表
delete from classes where id=1; #发现可以删除
delete from classes where id=2; #删除成功,级联删除
grant all on mysql.testtable to test@‘%’ identified by ‘123’;
grant all privileges on mysql.user to user520@localhost identified by 'user520';
grant create,select,alter on msyql.user to ken@localhost identified by 'ken';
revoke all privileges on msyql.user from user520@localhost;
update students set is_delete=1 where name='joy';
update students set age=22,class=6 where id=10;
update students set age=100,cls_id=3 where id=10;
update students set age=100,cls_id=3 where id<=10;
update students set cls_id=null where id<=6;
update students set high=null where id=1;
drop table classes; #删除classes表
drop view v_test;
drop index 索引名称 on 表名;
use testdb;
desc user; #user表存放用户信息
desc class;
desc students;
desc test_table;
set session profiling=1;
set @@global.profiling=1;
set global profiling=0;
set profiling=1; #打开sql语句的执行时间
#确保已经切换到该表所在的库。
SELECT
select * from user;
select host,user,password from user;
select now(); #查看当前时间
select * from students;
select id,age,name from students;
select * from students;
select * from students where is_delete=1;
select * from students;
select students.name from students;
select s.name from students as s; #起别名常用于关联查询
select * from students where id < 22;
select * from students where age > 38;
select * from students where age > 18 and age < 30;
select * from students where age <= 23;
select * from students where age >= 18 && age <= 38;
select * from students where age < 18 || age > 33;
select * from students where age between 18 and 28; #头和尾都包含了。
select * from students where age > 18 || high > 170;
select * from students where name like '%锋'; #%就相当于shell中的*
select * from students where name like '%霆%';
select * from students where name like '__'; #一个下划线表示一个字
select * from students where name like '__%';
select * from students where age=16 or age=22;
select * from students where age in (18,34,55,66,22);
select * from students where age not between 18 and 33;
select * from students where high is null;
select * from students where high=175 and name="joy";
select * from students where high=175 or name="joy";
select * from students where high is not null;
select * from students order by age; #默认从小到大排列
select * from students order by age desc; #descent 降序排列
select * from students order by age desc,high desc;
select * from students order by age asc;
select * from students where age between 18 and 33 and gender=1 order by age desc;
select * from students; #查询后会有一个总的行数统计,这个统计是准确的。
--但是这种查询来看总的行数的方式很可能会出现问题,一旦数据量较大,那么会出现卡死的现象,也就是说select * from students实际上会将
所有的内容读到你的内存里,大量的io操作会导致系统崩溃。
所以一般会先看看一张表里有多少行,再进行查询的操作。
select count(name) from students;
select count(*) from students; #这种统计方式很准确,只要任意一个字段占一行都算。
select count(high) from students; #可能会少几行,如果有null的情况。
select count(*) as ’total‘ from students;
select max(age) from students;
select name,max(age) from students; #这条查询语句发生了错位,姓名和max不匹配
select max(age)as ‘max’ from students; #实际上没有办法用max去查询对应的数据
select min(age) from students;
select min(age) from students where gender=2;
select max(age) from students where gender=1;
select max(age) from students where gender=2;
select sum(age)/count(age) from students;
select sum(age)/count(age) as 'average' from students;
select round(sum(age)/count(age),2) as 'average' from students;
select round(avg(high),2) as 'avg' from students; #使用avg自动剔除了空项
select sum(high) from students;
select distinct gender from students; #查询不重复的
select gender from students gourp by gender;
select gender,count(*) from students group by gender; #统计各组性别的人数。
select gender,group_concat(name) from students group by gender;
select gender,group_concat(name,age) from students group by gender;
select gender,group_concat(name,'|',age,'|',high) from students group by gender;
select gender,group_concat(name,'|',age,'|',high) from students where gender=1 group by gender;
select gender,group_concat(name,'|',age,'|',high) from students where gender=2 group by gender;
select gender,avg(age) from students group by gender having avg(age)>=50;
select gender,avg(age) from students group by gender having avg(age)>=10; #这里的having使用where不符合语法规则。
select gender ,group_concat(name) from students group by gender having count(*)>3;
select * from students limit 2;
select * from students limit 0,2;
select * from students limit 2,2; #limit 2 与 limit 2,2 区别在于分页
select * from students limit 4,2;
select * from students limit 6,2; #从6行之后的两行
select * from students where gender=2 order by high desc limit 2,1;
select * from students where gender=2 order by high desc limit 3,1;
select * from areas as province inner join areas as city on province.aid=city.pid having name='河北省';
select province.name,city.name from areas as province inner join areas as city on province.aid=city.pid having provine.name='河北省';
select * from areas as p inner join areas as c on p.aid=c.pid having p.name='北京市';
select aid form areas where name='北京市';
select * from areas where pid=1;
--合并
select * from areas where pid=(select aid from areas where name='北京市');
#路由跟踪tracert www.baidu.com
select * from students;
select * from classes;
select * from students inner join classes on students.cls_id=classes.id;
select students.name,classes.name from students inner join classes on students.cls_id=classes.id;
select classes.name as class,students.name from students inner join classes on students.cls_id=classes.id order by class;
select * from classes left join students on calsses.id=students.cls_id; #以classes为基准
select * from students left join classes on classes.id=students.cls_id; #以students为基准,没有班级的学生班级为空
--left join 和 right join 相当于调换位置。
select * from students right join classes on classes.id=students.cls_id;
select classes.name,students.name from classes inner join students on students.cls_id=classes.id;
select calsses.name,students.name from classes inner join students on students.cls_id=classes.id order by classes.name;
--以students为基准 classes没有的为null
select c.name,s.name from classes as c right join students as s on c.id=s.cls_id order by c.name;
select * from test_table where 'name=name-88888';
MariaDB——SQL语句分类汇总的更多相关文章
- SQL语句详细汇总
SQL语句详细汇总 | 浏览:3061 | 更新:2013-06-10 19:50 一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 d ...
- 五、mysql中sql语句分类及常用操作
1.sql语句分类: DQL语句 数据查询语言 select DML语句 数据操作语言 insert delete update DDL语句 数据定义语言 create drop alter TCL语 ...
- MySQL(三)之SQL语句分类、基本操作、三大范式
一.SQL语句的分类 DML(Data Manipulation Langauge,数据操纵/管理语言) (insert,delete,update,select) DDL(Data ...
- Oracle中SQL语句分类
Oracle中SQL语句分类如下:1.DML语句 insert/delete/update/select/merge/explan plan/lock table2.DDL语句 create/atlt ...
- EBS系统管理常用SQL语句整理汇总(参考网上资料&其他人博客)
--1查找系统用户基本信息 SELECT user_id, user_name, description, employeE_id, person_party_id FROM fnd_user; -- ...
- SQL语句详细汇总[转]
经典SQL语句大全 一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql serv ...
- SQL语句分类
SQL Structured Query Language SQL是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 ...
- oracle Sql语句分类
dml语句:数据操作语句[insert,update,delete] ddl语句:数据定义语言[create table,drop table] dql语句:数据查询语句[select] dtl语句: ...
- SQL语句分类和语法
DQL:Data QueryLanguage 数据查询语言 作用: 查询表中的字段 命令: select 查询 ⑦select 查询列表①from 表1 别名②连接类型 joi ...
随机推荐
- Fluent_Python_Part3函数即对象,06-dp-1class-func,一等函数与设计模式
使用一等函数实现设计模式 中文电子书P278 合理利用作为一等对象的函数,把模式中涉及的某些类的实例替换成简单的函数,从而简化代码. 1. 重构"策略"模式 中文电子书P282 P ...
- [0CTF 2016] piapiapia
一道非常有意思的反序列化漏洞的题目 花费了我不少时间理解和记忆 这里简单记录其中精髓 首先打开是一个登陆页面 dirsearch扫描到了www.zip源码备份 update.php <?php ...
- 手把手教你使用Hexo+GitHub搭建自己的个人博客网站
安装nodejs环境 这个直接搜索安装即可,安装完成之后,通过如下命令检测环境变量是否安装成功: λ node -v # 输出版本号 v12.13.1 正确输入版本号即可. 安装cnpm cnpm是淘 ...
- 九、Appium-python-UI自动化之通过text定位
1.通过xpath定位text xpath路径为://android.widget.EditText[@text='请输入包含街道的完整地址'] 2.通过AndroidUIAutomator # 这个 ...
- JQuery选择器&过滤器
JQuery对象: JQuery对象的本质上是DOM数组,它对DOM元素进行了封装 JQuery对象和JavaScript对象可以互转(\$()/$obj()[i]),但是JQuery对象和Javas ...
- [WC2018]通道(乱搞,迭代)
[洛谷题面]https://www.luogu.org/problemnew/show/P4221 这个题以及[CTSC2018 暴力写挂]都有类似的乱搞做法能通过考场数据. 具体搞法就是随一个起点, ...
- 「Luogu P5080 Tweetuzki 爱序列」
题目大意 给出一些数,需要求出 \(\frac{a_{i+1}}{3}=a_i\) 或 \(a_{i+1}=2 \times a_i\) 时最长的序列 \(a\). 分析 可以发现符合条件的序列 \( ...
- Redis Set操作
public void CleanPur() { var typedClient = _redisClient.As<PurClass>(); typedClient.DeleteAll( ...
- php 算法知识 冒泡排序
function bubble_order($arr){ //得到长度 $count_num=count($arr); for($k=1;$k<$count_num;$k++){ //对长度越来 ...
- 一文解读RISC与CISC (转)
RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法. 早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成 ...