MySQL下的SQL语句
SQL语言包含四个部分:
DDL(数据库定义语言):用于定义和管理数据对象,包括数据库、数据表等
如:create、drop、alter
DML(数据库操作语言):用于操作数据库对象中所包含的数据
如:insert、update、delete
DQL(数据库查询语言):用于查询数据库对象中所包含的数据
如:select
DCL(数据库控制语言):管理数据库的语言,包括管理权限及数据更改
如:grant、revoke、commit、rollback
【对数据库的操作】
创建数据库:create database/schema [if not exists] db_name default character set '字符集';
删除数据库:drop database if exists db_name;
查看已有的数据库:show databases/schemas;
打开指定数据库:use db_name;
查看当前打开的数据库:select database();
查看已创建的指定数据库的编码方式:show create database db_name;
修改已有数据库的编码方式:alter database db_name default character set '字符集';
临时转换客户端的编码方式:set names gbk;(临时的用来输入中文,退出后就失效)
将已有的数据库备份到外部文件中:
mysqldump -u用户名 -p密码 db_name >> 文件路径/text.sql
将外部文件中的数据导入到已有数据库中:
方法一:mysql -u用户名 -p密码 db_name < 文件路径/text.sql
方法二:
use db_name;
source 文件路径/text.sql
为数据库创建新用户授权:
GRANT 权限 ON 数据库.数据表 TO 用户名@'登录的主机名' IDENTIFIED BY '密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;(立即生效)
例:
grant all/select,insert,update,delete on *.* to root@'%' identified by '密码' with grant option;
flush privileges;
(*.*表示所有数据库的所有数据表;'%'表示通过任意主机进行授权,可为'localhost'或已有用户的'主机IP')
【对数据表的操作】
创建数据表:
create table [if not exists] `table_name`(
`字段名称` 字段类型 [字段属性],
... ...
)[engine=myisam default charset=utf8];
例:
create table [if not exists] `users`(
`id` int unsigned auto_increment primary key, #添加索引的三种方式之一
`username` varchar(30) not null unique comment "字段加注释",
`password` char(32) not null,
`age` tinyint unsigned,
`sex` enum("男","女","保密") default "男",
`addr` varchar(255),
`face` varchar(40) not null default "01.jpg",
`email` varchar(50) not null default "819508293@qq.com",
`vip` tinyint(1) not null default 0 comment "会员,0代表不是会员,其余值为会员",
`startTime` int unsigned comment "会员起始时间",
`endTime` int unsigned comment "会员到期时间",
`ip` int not null, #可利用 ip2long(str) 将IPv4转为int数值写入数据库,long2ip() 可将该int数值转为标准点格式的字符串输出;
key users_email(`email`), #添加索引的三种方式之二
key users_ip(`ip`)
)engine=myisam default charset=utf8 [collate utf8_general_ci];
给字段添加注释:在字段最后加 comment "注释内容"
删除数据表:
drop table table_name1,table_name2...;
修改数据表结构项:
增加:alter table table_name add `字段名称` 字段类型;
例:alter table table_name add `email` varchar(50);
删除:alter table table_name drop `字段名称`;
例:alter table table_name drop `email`;
修改:
alter table table_name modify `字段名称` 字段类型 字段属性;
注:只能修改对应字段名称的字段类型和属性
例:alter table table_name modify `name` varchar(30) not null;
alter table table_name change `字段名称` `新字段名称` 字段类型 字段属性;
注:不仅能修改字段类型和属性,也能修改字段名称
例:alter table table_name change `name` `username` varchar(30) not null;
用修改表结构方法添加索引:
alter table table_name add primary key(id);
alter table table_name add unique table_name_字段名(字段名);
alter table table_name add index table_name_字段名_index(字段名);
用修改表结构方法删除索引:
alter table table_name drop primary key;
alter table table_name drop index table_name_字段名;
1.删除主键索引前,必须先将自增长修改掉;
2.删除唯一索引 unique,也同样使用 drop index 而不是drop unique;
查看数据表中所有字段的索引:
show indexes from table_name \G
查看当前数据库已有数据表:show tables;
查看已创建的指定数据表:show create table table_name;
查看数据表的结构:
desc table_name;
describe table_name;
show columns from table_name;
【对数据表中数据的操作】
向数据表中添加数据:
insert [into] table_name(字段名称1,字段名称2...) values("值1","值2"...);
例:
①指定字段名称和字段值一一对应,是字符串类型的须使用引号(" "/ ' ')包含,不是字符串类型的可加可不加:
insert table_name(id,username,password) values(1,"admin1",'password1');
②可为空的自增列在插入字段值时可使用NULL,会自动转为自增的值:
insert table_name(id,username,password) values(null,"admin1",'password1');
③自增列、非空且有默认值的字段可无需插入,仍会自动添加自增值或默认值:
insert table_name(username,password) values("admin1",'password1');
④字段名称的顺序可自由排列,但后面字段值的顺序也应对应排列:
insert table_name(password,username) values('password1',"admin1");
⑤可以省略字段名称,但在插入字段值的时候必须按照数据表中的字段顺序插入:
insert table_name values(null,"admin1",'password1');
insert [into] table_name(字段名称1,字段名称2...) values("值1","值2"...),("值1","值2"...),...;
例:insert table_name(username,password) values("admin1","pass1"),("admin2","pass2"),("admin3","pass3");
删除数据表中的数据:
delete from table_name [条件语句];
例:
delete from table_name where 条件;
delete from table_name order by 字段名称 asc limit 3;
清空数据表中的数据:truncate [table] table_name;
注:delete后再添加数据时,auto_increment(自增长)的值不会重置而是向后递加;truncate后auto_increment的值重置为1,重新开始递增;
修改数据表中的数据:update table_name set 字段名称="值",字段名称="值",...;
有条件的定向修改部分数据:
update table_name set 字段名称="值" 条件语句;
例:
update table_name set 字段名称=字段名称+1 where 条件;
uodate table_name set 字段名称="值" order by 字段名称 desc limit 3;
select查询语句:
select [all/distinct] */字段名称 from table_name [where 条件] [group by 分组] [having 条件过滤(二次过滤)] [order by 排序] [limit 显示条数];
查询表中的所有记录:select * from table_name;
整齐的格式化显示数据:select * from table_name \G (注意此时结尾是不加分号“;”的)
查询表中的总记录数:select count(*) from table_name;
为总记录数起别名,方便之后直接通过别名取得该值:select count(*) as 别名 from table_name;
给字段添加别名:select 字段 [as] 别名,字段 别名 from table_name;
有条件的定向查询:select */字段名称 from table_name 条件语句;
查询不重复的字段内容:select distinct 字段名称 from table_name;(distinct为去重复项)
根据某字段排序:一般应用于数值型字段,order by 字段 asc(升序)/desc(降序)
select * from table_name [where 条件] order by 字段 asc/desc;
select * from table_name order by 字段1 asc/desc,字段2 asc/desc;
查询限制显示条数的记录:
select * from table_name limit 数值;(默认从头开始)
select * from table_name limit 0,2;(0-偏移量,跳过前多少条;2-显示多少条)
可用来做分页
例:
1.查询各个年龄段的人数总数
select age,count(*) from table_name group by age;
2.查询出年龄大于20的各个年龄的人数总数
select age,count(*) from table_name where age>20 group by age;
3.查询出年龄大于20的各个年龄的人数总数多于1个人的
select age,count(*) as c from table_name where age>20 group by age having c>1;
4.以年龄进行升序排序,如果年龄相同的,按id降序排列
select * from table_name order by age asc,id desc;
5.随机排序
select * from table_name order by rand();
多表关联查询:
1.普通关联查询:
select [table1.]字段1,[table1.]字段2,[table1.]字段3,[table2.]字段1,[table2.]字段2 from table1,table2 where table1.id=table2.uid;
table1.id=table2.uid为关联项,table1中的数据值在table2中无关联项,则该数据不显示;
select [别名1.]字段1,[别名1.]字段2,[别名1.]字段3,[别名2.]字段1,[别名2.]字段2 from table1 as 别名1,table2 as 别名2 where 别名1.id=别名2.uid;
可以给数据表名称添加别名,方便简写;
2.连接关联查询:
左连接:以左表(table1)为主,先输出左表中的查询数据,右表中无关联项的则显示NULL
select table1.字段1,table1.字段2,table1.字段3,table2.字段1,table2.字段2 from table1 left join table2 on table1.id=table2.uid;
select [别名1.]字段1,[别名1.]字段2,[别名1.]字段3,[别名2.]字段1,[别名2.]字段2 from table1 as 别名1 left join table2 as 别名2 on 别名1.id=别名2.uid;
右连接:以右表(table2)为主,先输出右表中的查询数据,左表中无关联项的则显示NULL
select table1.字段1,table1.字段2,table1.字段3,table2.字段1,table2.字段2 from table1 right join table2 on table1.id=table2.uid;
select [别名1.]字段1,[别名1.]字段2,[别名1.]字段3,[别名2.]字段1,[别名2.]字段2 from table1 as 别名1 right join table2 as 别名2 on 别名1.id=别名2.uid;
内连接:不以任何表为主,直接查询on后面的关联条件项,无对应数据的均不显示
select table1.字段1,table1.字段2,table1.字段3,table2.字段1,table2.字段2 from table1 inner join table2 on table1.id=table2.uid;
select [别名1.]字段1,[别名1.]字段2,[别名1.]字段3,[别名2.]字段1,[别名2.]字段2 from table1 as 别名1 inner join table2 as 别名2 on 别名1.id=别名2.uid;
3.嵌套关联查询(不推荐使用,效率极低)
select * from table1 where id in(select uid from table2);
当使用条件语句时可用条件:
和:&& / and 或:|| / or 非:!=
值为null/不为null:is null / is not null
在什么范围之内:between...and...
不在什么范围之内:not between...and...
包含在其内:in(1,2,3,4...)
不包含在其内的:not in(1,2,3,4...) 除了括号中的匹配外其他都显示
模糊查询:like / not like
通配符:%(代表任意多个字符) _(代表任意一个字符)
聚合函数:
count(*):统计总数
select sum(字段名) from table_name; 统计所有该字段的和
select avg(字段名) from table_name; 统计该字段的平均值
select max(字段名) from table_name; 统计该字段中的最大值
select min(字段名) from table_name; 统计该字段中的最小值
转载于:https://www.cnblogs.com/zhouwanqiu/p/9084732.html
MySQL下的SQL语句相关推荐
- MySQL数据库:SQL语句
MySql数据库系列阅读 MySQL数据库 MySQL数据库:SQL语句 MySQL数据库:完整性约束 MySQL数据库备份与还原 MySQL数据库:编码 1. SQL概述 1.1 什么是SQL SQ ...
- 1.MySQL数据库 2.SQL语句
01数据库概念 * A: 什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. * B: 什么是数据库 ...
- mysql 执行顺序 SQL语句执行顺序分析
最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...
- MySQL数据库高级SQL语句(三)
MySQL数据库高级SQL语句 SELECT TRIM 连接查询 CREATE VIEW UNION 交集值 无交集值 CASE SELECT TRIM SELECT TRIM (位置 '想移除掉的字 ...
- mysql怎么写sql语句_Navicat如何写sql语句
sql是操作数据库中数据的语句,在不同的数据库中会略有不同.Navicat for MySQL是一款很方便的MySQL客户端工具,能够很好的提供操作数据库可视界面,在同类型的软件中,占有极高的市场份额 ...
- MySQL 简介及SQL 语句
MySQL 简介及SQL 语句 一.数据库概述 1.数据库的分类 1)区别 2.MySQL 概述 3.MySQL 存储原理 二.部署 MySQL 数据库 1.安装 MySQL 数据库 2.优化调整 M ...
- mysql中利用sql语句修改字段名称,字段长度等操作(亲测)
在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或字段的注释,把同字段属性调整到一块儿.这些操作可以在phpmyadmin或者别的m ...
- php 登陆 sql语句,PHP 连接MySQL数据库的SQL语句的简单示例
这篇文章主要为大家详细介绍了PHP 连接MySQL数据库的SQL语句的简单示例,具有一定的参考价值,可以用来参考一下. 首先用phpmyadmin进入建立数据库user 再建个三段的表admin 再别 ...
- MySQL数据库的SQL语句
MySQL数据库的SQL语句 MySQL的常用数据类型 MySQL数据类型及含义 char与varchar的区别 MySQL的基本命令 登录数据库 查看MySQL数据库版本 查看当前服务器中的数据库 ...
最新文章
- Pytorch搭建SSD目标检测平台
- 阿里云MySQL远程登录异常
- php接收dup,TCP与DUP简单对比
- arcgis 投影坐标系转地理坐标系_ArcGIS的地理坐标系、大地坐标系
- java redis 批量删除key_互联网大厂Java工程师面试指南——Redis篇
- Centos修改文件打开数限制
- python入门基础系列八_Python 入门系列 —— 21. dict 的介绍
- Windows Vista和局域网聊天的计算机
- resnet论文解读及代码实现
- 帆软条件判断是否包含指定字符串
- 后妈茶话会_歌词(Tough Love)
- [lammps教程]OVITO绘制原子应力云图
- 饿了么UI组件库中,Upload组件上传闪动的解决
- iOS开发之3DTouch集成
- 如何在微信中取消已授权的第三方应用APP
- px、pt和em的区别
- ObjectARX:C# ObjectARX--起步
- django的update和create高级操作
- 【algods】4.树和二叉树、完全二叉树、满二叉树、二叉查找树、平衡二叉树、堆、哈夫曼树、散列表...
- 人际交往中保护自己的30条小技巧!
热门文章
- Apache-Shiro-权限缓存
- GIT 团队协作快速入门使用
- border-collapse:collapse;清除表格中单元格的空隙
- 原生Js封装的弹出框-弹出窗口-页面居中-多状态可选
- plsq如何快捷整理代码_我收藏的几个更快搬砖的vscode快捷键
- 历届试题 连号区间数
- 简单子串查找--strstr的使用(ZCMU1108)
- 虚拟机建立快照_使用qmeu-img创建虚拟机(创建虚拟机,虚拟机快照)
- 云开发系列课程让你从入门到精通快速上手Serverless和云开发技术
- 探秘RocketMQ源码——Series1:Producer视角看事务消息