SQL语句分类

  1. DCL (Data Control Language):数据控制语言;用来管理用户及权限
  2. DDL(Data Definition Language):数据定义语言;用来定义数据库对象:库,表,列等
  3. DML(Data Manipulation Language):数据操作语言;用来定义数据库记录(数据)
  4. DQL(Data Query Language):数据查询语言;用来查询数据;


命令分类不一定准确,没必要分得太准确!

DCL

  1. /usr/bin/mysqladmin -uroot password 123456 #给数据库设置密码
  2. chkconfig mysqld on #设置MySQL自启动
  3. mysql_secure_installation #初始化数据库
  4. select version(); #查看数据库版本
  5. SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword'); #更改某一用户密码
  6. select Host,User,Password from mysql.user; #查看用户信息
  7. grant 权限 on 库名.表 to 用户@主机 identified by '密码'; #给用户加权限和密码
  8. grant all privileges on *.* to root@'%' identified by '123456'; #给root用户在所有主机上的所有权限(用于第三方登录数据库)
  9. show grants for user250@localhost; #查看250用户的权限
  10. revoke all on *.* from user250@localhost; #回收250用户在localhost主机上的所有权限
  11. show variables ; #查看服务器配置变量
  12. show variables like '%engine%'; #查看存储引擎
  13. show status #查看服务器状态

DDL

  1. show databases; #查看所有数据库
  2. create database DBNAME; #创建数据库
  3. drop database DBNAME; #删除数据库
  4. use DBNAME; #使用(进入)某一数据库
  5. show create database DBNAME; #查看数据库状态
  6. alter database DBNAME default character set=utf8; #修改指定数据库的字符编码
  1. show tables; #查看所有表
  2. desc TABLENAME; #查看表结构
  3. alter table huluwa rename to xiaoairen; #给葫芦娃表改名为小矮人表
  4. alter table huluwa add color varchar(10); #给表添加字段
  5. alter table huluwa modify name varchar(20); #修改表字段(不重新命名)
  6. alter table 表名 change 原名 新名 类型及约束; #修改表的字段
  7. alter table huluwa drop color; #删除表的字段
  8. drop table huluwa; #删除表
  9. alter table huluwa add primary key(sid); #设定sid字段为huluwa表的主键
  10. alter table huluwa drop primary key; #删除主键
  11. alter table huluwa add constraint fk_huluwa_school foreign key(cla_id) references school(id); #给huluwa表添加外键cla_id关联到school表的id列
  12. alter table huluwa drop foreign key fk_huluwa_school; #删除外键fk;外键的名字叫fk_huluwa_school
  • 创建表
  1. create table huluwa (
  2. -> id int unsigned auto_increment primary key,
  3. -> name varchar(10),
  4. -> age tinyint unsigned,
  5. -> high decimal(5,2),
  6. -> gender enum('boy','girl','unknow')default 'unknow',
  7. -> lost bit(1));

数据类型:

常用数据类型

  • 整数型:int,bit
  • 小数型:decimal #decimal(5,2)
  • 字符串:varchar,char
  • 时间:date,time,datetime
  • 枚举类型:enum

数值类型常用

类型 字节大小 有符号范围(signed) 无符号范围(unsigned)
tinyint 1 -128~127 0~255
smallint 2 -32768~32767 0~65535
mediumint 3 -8388608~8388607 0~16777215
int/integer 4 -2147483648~2147483647 0~4294967295
bigint 8 -9223372036854775808~
9223372036854775807
0~18446744073709551615

字符串

类型 字节大小 示例
char 0~255 不能伸缩(定多少我就取多少)
varchar 0~255 可以伸缩(要浪费一个字节指定字符长度)
text 0~65535 大文本

日期时间类型

类型 字节大小 示例
date 4 '2019-01-01'
time 3 '12:30:30'
datetime 8 '2019-01-01 12:30:30'
timestamp 4 '1970-01-01 00:00:01'UTC~'2038-01-01 00:00:01'UTC

约束

  • primary key:主键约束(唯一标识)
  • auto_increment:自增长
  • not null:不为空
  • unique:字段不重复
  • default:默认
  • foreign key:外键,对关系字段进行约束,当关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常。
  • constraint fk_huluwa_school foreign key(cla_id) references school(id) : 外键约束例子

DML

  1. insert into 表名 values (...); #插入数据
  2. insert into 表名 valuse (...),(...),...; #多条插入数据
  3. insert into 表名(字段) valuse(...); #部分插入(无数据为null)
  4. update 表名 set 列=值... where 过滤条件; #修改数据
  5. update huluwa set age=age+1 where name in('大娃','二娃'); #数据修改支持四则运算
  6. update huluwa set age=age+1 where name in('大娃','二娃'); #条件选择支持in语法
  7. delete from 表名 where 条件; #删除(delete / truncate)

DQL

  • 单表查询
  1. select * from TABLENAME; #查询表中所有数据
  2. select distinct age from huluwa; #distinct 查询取消重复行
  3. select * from huluwa where lost='yes'; #条件查询
  4. select * from huluwa where age between 3 and 6; #条件查询之between
  5. select * from huluwa where not (age > 3 and age < 6); #条件查询之not和运算符
  6. select * from huluwa where age > 3 and lost='no'; #条件查询之and和or
  7. select * from huluwa where name like '%aaa%'; #条件查询之模糊查询like %可以代表0到多个字符
  8. select * from huluwa where name like '____'; #条件查询之模糊查询like _可以代表一个字符
  9. select * from huluwa where high is not null; #判断是否为空 is null 或 is not null
  10. select * from huluwa order by high desc; #查询并排序order desc降序 asc升序
  11. select * from huluwa order by high descrade asc; #先desc降序,high列相同看rade列,asc升序
  12. select *,age*1.5 from huluwa ; #数字类型的列可以进行四则运算,无法转换为数字的以0计算
  13. select *,'基本工资'+ifnull('奖金',0) as '工资' from huluwa ; #四则运算也支持ifnull语句以处理null值
  14. select CONCAT('我叫','name',',我是','job') as 描述 from huluwa ; #CONCAT连接字符串 (起别名as可以省略)
  • 聚合函数
  1. select count(*) from huluwa #查询有效行数
  2. select max(high) from huluwa #查询最大
  3. select min(high) from huluwa #查询最小
  4. select sum(high) from huluwa #计算总和
  5. select round(avg(high),2) from huluwa; #求平均值 round保留2位小数
  • 分组查询 group by(分组后只能查询组信息,不能查询个人信息)
  1. select 分组列 ,... from 表名 group by 分组列; #基本语法
  2. select gender from huluwa group by gender; #按性别分组
  3. select gender,group_concat(name) from huluwa group by gender; #按性别分组,并列出所有组员某字段的值
  4. select gendercount(*) from huluwa group by gender; #按性别分组,并查询组人数
  5. select gendercount(*) from huluwa where age > 18 group by gender; #先过滤出年龄大于18的,再按性别分组,并查询组人数
  6. select gendercount(*) from huluwa where age > 18 group by gender having count(*) >= 2; #having 后置条件 ;最后过滤出组人数大于等于2的组
  • limit 分页查询 (方言)
  1. select * from huluwa limit 4,2; #查询第四行后面的两行(即:第五行和第六行)信息
  • union 合并结果集(一模一样的两张表;union all不去重;union 去重)
  1. select * from a1 union select * from a2;
  • 连接查询
  1. select * from table1 ,table2 where table1.id = table2.eid; #笛卡尔积查询 (方言)
  2. select * from table1 inner join table2 on table1.id = table2.eid; #内连接(标准)
  3. select * from heros as movie inner join heros as human on movie.aid=human.pid having movie.name='动画片'; #having后置条件
  4. select * from huluwa left join school on school.cla_id=huluwa.cla_id; #左关联
  5. select huluwa.name , ifnull(school.cla_id , '代建') from huluwa left join school on school.cla_id=huluwa.cla_id; #左关联+ifnull
  6. # left join (左联接) 返回包括左表中的所有记录和右表中关联字段相等的记录
  7. # right join (右联接) 返回包括右表中的所有记录和左表中关联字段相等的记录
  8. # inner join (内关联) 只返回两个表中关联字段相等的行
  9. #通过合并结果集union加左右关联实现全外连接,实现显示所有行;
  10. select * from huluwa left join school on school.cla_id=huluwa.cla_id union select * from huluwa right join school on school.cla_id=huluwa.cla_id;
  • 子查询
  1. select * from huluwa where grade = (select max(grade) from huluwa); #查询套查询即子查询---子查询作为条件
  2. select sanban.name , sanban.grade from (select * from huluwa where cla_id = 3;) sanban #子查询作为一张表 起别名as可以省略
  3. #子查询应用总结---作为条件
  4. #单行单列----可以使用[= , > , < , >= , <= , != ]
  5. select * from huluwa where grade = (select max(grade) from huluwa); #查询最高分同学的信息
  6. #多行单列----可以使用[IN ALL ANY](in代表在其中;any表示任意;all表示所有)
  7. select * from ultraman where grade > all (select grade from huluwa); #查询比所有葫芦娃成绩都高的奥特曼的信息
  8. #

数据库MySQL——SQL语句(命令)的更多相关文章

  1. mysql(数据库,sql语句,普通查询)

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

  2. Oracle,SQL Server 数据库较MySql数据库,Sql语句差异

    原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...

  3. mysql sql语句大全(转载)

      1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 ...

  4. 经典MSSQL语句大全和常用SQL语句命令的作用

    下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL类型包括数据库.表的创建,修改,删除,声明—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML类 ...

  5. 《大话数据库》-SQL语句执行时,底层究竟做了什么小动作?

    <大话数据库>-SQL语句执行时,底层究竟做了什么小动作? 前言 大家好,我是Taoye,试图用玩世不恭过的态度对待生活的Coder. 现如今我们已然进入了大数据时代,无论是业内还是业外的 ...

  6. MySQL客户端工具的使用与MySQL SQL语句

    MySQL客户端工具的使用 1.MySQL程序的组成 客户端 mysql:CLI交互式客户端程序 mycli:CLI交互式客户端程序;使用sql语句时会有提示信息 mysql_secure_insta ...

  7. 总结一些关于操作数据库是sql语句还是存储过程问题

    总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...

  8. SQL Server 【附】创建"商品管理数据库"、"学生选课数据库"的SQL语句

    附:(创建“商品管理数据库”的SQL语句) --建立"商品管理数据库"数据库-- create database 商品管理数据库 on(name='商品管理数据库_m', file ...

  9. MySQL数据库”mysql SQL Error:1146,SQLState:42S02 “解决方法

    项目在开发的时候在Mac平台下开发的,开发完了之后在LINUX环境上部署好之后,运行时MySQL数据库报错,提示为某个表不存在之类的错误信息,后来修改了MySQL的配置文件将大小写敏感去掉,问题解决. ...

随机推荐

  1. 对于home主页的切换处理

    经过测试,发现,在home首页的时候,滑动到某一个位置的时候,如果再点击tabbar中的"购物车"."分类"或者"我的"的时候,再点击到首页 ...

  2. 效率工具 | 快速创建虚拟机,Vagrant真香!

    Vagrant 是一个基于Ruby的工具,主要用于创建和部署虚拟化开发环境.它以来于Oracle的开源VirtualBox虚拟化系统,通过使用 Chef创建自动化虚拟环境. Vagrant 主要的功能 ...

  3. mysql源码分析-启动过程

    mysql源码分析-启动过程 概要 # sql/mysqld.cc, 不包含psi的初始化过程 mysqld_main: // 加载my.cnf和my.cnf.d,还有命令行参数 if (load_d ...

  4. Phoneix(四)hbase导入数据同时与phoenix实现映射同步

    一.说明 先创建一个hbase表格,能够导入本地数据到hbase中,最后能够通过phoneix进行访问. 1.数据准备(10W条,样例如下),文件test.txt 0,20190520164020,1 ...

  5. 【原创】中断子系统-ARM GPIO中断处理流程

    目录 第一部分 GIC中断控制器的注册 1. GIC驱动分析 2.GIC驱动流程分析 第二部分 device node转化为platform_device 第三部分:platform_device注册 ...

  6. SpringBoot入门及深入

    一:SpringBoot简介 当前互联网后端开发中,JavaEE占据了主导地位.对JavaEE开发,首选框架是Spring框架.在传统的Spring开发中,需要使用大量的与业务无关的XML配置才能使S ...

  7. Maven+Spring 框架,ModelAndView在页面取值不成功

    如果创建的是maven project , maven生成的web.xml是这样的: 但是这样是不对的,应该修改成: 下面是代码: <?xml version="1.0" e ...

  8. IO软件层次结构与假脱机技术

    IO软件层次结构 用户层软件->设备独立性软件->设备驱动软件->中断处理程序->硬件 用户层软件实现与用户交互的接口,用户可直接使用该层提供的,与IO操作相关的库函数对设备进 ...

  9. 断言封装整合到requests封装中应用(纠错False,Result循环,tag测试)

    检查json_key_value: 检查: requests.py # -*- coding: utf-8 -*-#@File :demo_04.py#@Auth : wwd#@Time : 2020 ...

  10. Pandas数据分析练手题(十题)

    数据集下载地址:https://github.com/Rango-2017/Pandas_exercises --------------------------------------------- ...