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语句相关推荐

  1. MySQL数据库:SQL语句

    MySql数据库系列阅读 MySQL数据库 MySQL数据库:SQL语句 MySQL数据库:完整性约束 MySQL数据库备份与还原 MySQL数据库:编码 1. SQL概述 1.1 什么是SQL SQ ...

  2. 1.MySQL数据库 2.SQL语句

    01数据库概念 * A: 什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. * B: 什么是数据库 ...

  3. mysql 执行顺序 SQL语句执行顺序分析

    最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...

  4. MySQL数据库高级SQL语句(三)

    MySQL数据库高级SQL语句 SELECT TRIM 连接查询 CREATE VIEW UNION 交集值 无交集值 CASE SELECT TRIM SELECT TRIM (位置 '想移除掉的字 ...

  5. mysql怎么写sql语句_Navicat如何写sql语句

    sql是操作数据库中数据的语句,在不同的数据库中会略有不同.Navicat for MySQL是一款很方便的MySQL客户端工具,能够很好的提供操作数据库可视界面,在同类型的软件中,占有极高的市场份额 ...

  6. MySQL 简介及SQL 语句

    MySQL 简介及SQL 语句 一.数据库概述 1.数据库的分类 1)区别 2.MySQL 概述 3.MySQL 存储原理 二.部署 MySQL 数据库 1.安装 MySQL 数据库 2.优化调整 M ...

  7. mysql中利用sql语句修改字段名称,字段长度等操作(亲测)

    在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或字段的注释,把同字段属性调整到一块儿.这些操作可以在phpmyadmin或者别的m ...

  8. php 登陆 sql语句,PHP 连接MySQL数据库的SQL语句的简单示例

    这篇文章主要为大家详细介绍了PHP 连接MySQL数据库的SQL语句的简单示例,具有一定的参考价值,可以用来参考一下. 首先用phpmyadmin进入建立数据库user 再建个三段的表admin 再别 ...

  9. MySQL数据库的SQL语句

    MySQL数据库的SQL语句 MySQL的常用数据类型 MySQL数据类型及含义 char与varchar的区别 MySQL的基本命令 登录数据库 查看MySQL数据库版本 查看当前服务器中的数据库 ...

最新文章

  1. Pytorch搭建SSD目标检测平台
  2. 阿里云MySQL远程登录异常
  3. php接收dup,TCP与DUP简单对比
  4. arcgis 投影坐标系转地理坐标系_ArcGIS的地理坐标系、大地坐标系
  5. java redis 批量删除key_互联网大厂Java工程师面试指南——Redis篇
  6. Centos修改文件打开数限制
  7. python入门基础系列八_Python 入门系列 —— 21. dict 的介绍
  8. Windows Vista和局域网聊天的计算机
  9. resnet论文解读及代码实现
  10. 帆软条件判断是否包含指定字符串
  11. 后妈茶话会_歌词(Tough Love)
  12. [lammps教程]OVITO绘制原子应力云图
  13. 饿了么UI组件库中,Upload组件上传闪动的解决
  14. iOS开发之3DTouch集成
  15. 如何在微信中取消已授权的第三方应用APP
  16. px、pt和em的区别
  17. ObjectARX:C# ObjectARX--起步
  18. django的update和create高级操作
  19. 【algods】4.树和二叉树、完全二叉树、满二叉树、二叉查找树、平衡二叉树、堆、哈夫曼树、散列表...
  20. 人际交往中保护自己的30条小技巧!

热门文章

  1. Apache-Shiro-权限缓存
  2. GIT 团队协作快速入门使用
  3. border-collapse:collapse;清除表格中单元格的空隙
  4. 原生Js封装的弹出框-弹出窗口-页面居中-多状态可选
  5. plsq如何快捷整理代码_我收藏的几个更快搬砖的vscode快捷键
  6. 历届试题 连号区间数
  7. 简单子串查找--strstr的使用(ZCMU1108)
  8. 虚拟机建立快照_使用qmeu-img创建虚拟机(创建虚拟机,虚拟机快照)
  9. 云开发系列课程让你从入门到精通快速上手Serverless和云开发技术
  10. 探秘RocketMQ源码——Series1:Producer视角看事务消息