SQL规范

  以 “ ; ” 结尾;关键字之间要有空格(可以由多个空格);SQL语句中可以一个或多个换行;关键字不区分大小写。

数据库相关SQL

  查询所有数库库:  

    show databases;

  创建数据库:   

    create database 数据库名称;

  查看单个数据库详情

    show create database 数据库名称;

  删除数据库

    drop database 数据库名称;

  创建数据库时制定字符集

    create database 数据库名称 character set gbk/utf8;

  使用数据库

    use 数据库名称;

表相关SQL

  什么是表:在关系型数据中保存数据库的单元,类似于Excel中表,创建表的时候需要指定表的字段信息。

  创建表

    create table 表名 (字段名 字段类型,字段名 字段类型...);

  查看所有表

    show tables;

  查看单个表信息

    show create table  表名;

  删除表

    drop table 表名;

  创建表指定字符集和引擎

    charset engine create table 表名 (字段名 字段类型,字段名 字段类型) engine=myisam/InnoDB charset=gbk/utf8;(InnoDB:支持数据库的感激操作,如事务、外键等;MyIsam:只支持数据基础的增删改查)

  查看表字段信息

    desc 表名;

修改表相关SQL

  修改表名

    rename table 原名 to 新名;

  修改表的引擎和字符集

    alter table 表名 engine=innodb/myisam charset=utf8/gbk;

  添加表字段(在表的最后位置添加)

    alter table 表名 add chinese int;

  在表的最前面添加

    alter table 表名 add chinese int first;

  在某个字段的后面添加

    alter table 表名 add 新字段名 新字段表名 after 老字段名;

  删除表字段

    alter table 表名 drop 字段名;

  修改表字段的名称和类型

    alter table 表名 change 老字段表明 新字段表名 字段类型;

  修改字段类型和字段的位置

    alter table 表名 modity 字段名 新类型 first/after XXX;

表的增删改查

  全表插入格式

    insert into 表名 values (数据1,数据2,数据3);

  指定字段插入

    insert into 表名 (字段名1,字段名2...) values (数据1,数据2);

  批量插入数据格式

    insert  into 表名 values (数据1,数据2,数据3),(数据1,数据2,数据3);

  指定字段批量格式

    insert into 表名 (字段名1,字段名2) values ((数据1,数据2),(数据1,数据2);

  所有字段查询

    select * from 表名;

  指定字段查询

    select 字段名,字段名 from 表名;

  条件查询格式

    select * from 表名 where 条件;

  修改数据

    update 表名 set 字段名=新的数据 where id=位置;

  删除数据

    delete from 表名 (表内所有的数据) where 条件;

去重(distinct)

  select distinct XX from 表名;

编码问题

  在连接数据库后执行set names gbk;把数据库的解码字符集修改成gbk。

主键约束

  主键:表示表中数据唯一性的字段称为主键。

  约束:约束就是创建表的时候给表中字段添加的限制条件。

  主键约束:添加了主键约束的字段,保存的数值必须唯一而且非空

    create table 表名 (字段名 类型 primary key,字段名 类型);

  主键自增约束

    create table 表名 (字段名 类型 primary key auto_increment,字段名 类型);

自增的特点

  值为null时会自动赋值;以表中曾出现的最大值基础上+1;删除数据自增数值不减少;delete清空表,自增数值不变。

如何让自增数值清零

  使用truncate关键字,相当于drop+create。

    truncate table 表名;

注释

  创建表的时候可以通过 comment 关键字对字段进行描述

    create table 表名 (字段名 类型 primary key auto_increment comment'这个字段是主键',name varcher(20) comment '姓名');

` 和 ' 的区别

  `的作用是用来修饰表名和字段名(可以省略);

    create table `表名` (id int ,name varchar(20));

  ' '是作用是用来修饰字符串。

数据冗余

  由于表设计不够合理,出现大量的重复数据,成为冗余数据;可以通过拆分表的形式,把可能重复的数据保存到一张新的表中,在原表中只需要通过一个id建立关系即可,这种建立关系的字段称之为外键;

  create table T1(id int primary key auto_increment,name varchar(20));

  create table T2(id int primary key auto_increment,name varchar(20),T1_id int (上级分类));

事务

  事务是数据库中执行SQL语句的最小工作单位,把多条SQL语句放在事务中可以保证多条SQL要么全部成功,要么全部失败。

  查看数据库的提交状态

    show variables like '%autocommit%';

  关闭/打开自动提交

    set autocommit = 0/1;

  事务回滚

    rollback;此关键字会把数据库内存中的数据回滚到上一次commit的点;

    savepoint 设置回滚点

      savepoint 标识(随便起);

  指定的回滚到某个回滚点

    rollback to 标识;

事务的应用场景

  当执行某一件事需要多行SQL语句时,并且要求多行SQL要么全部成功,要么全部失败,此时必须使用事务,不然就会出现多行SQL部分成功部分失败的情况。

SQL分类

  DDL: (Deta Definition Language)数据定义语言,包括create、drop、alter、truncate;不支持事务。

  DML: (Deta Manipulation Language)数据操作语言,包括insert、delete、update、select(DQL);支持事务。

  DQL: (Data Query Language)数据查询语言,只包括select;不支持事务。

  TCL: (transaction Control Language)事务控制语言,包括commit、rollback、savepoint、rollback to等。

  DCL: (Data Control Language)数据控制语言;分配用户权限相关的SQL。

数据类型

  整数:

    int(m):四个字节,和JAVA中的int一致;

    bigint(m):八个字节,和JAVA中的long一致;

    m代表显示长度,但是必须和zerofill关键字结合使用  create table 表名(num int(10) zerofill);

  浮点数类型

    double(m,d):m代表总长度,d代表小数点后面的长度;

    decimal(m,d):超高精度小数,需要涉及高精度运算时使用;

  字符串类型

    char(m):长度不可变,执行效率高,最大长度255;

    varchar(m):长度可变,节省空间,最大长度65535(超255建议使用text);

    text:长度可变,通常保存长度大于255的文本数据,最大值65535;

  日期类型

    date:只保存年月日;

    time:只保存时分秒;

    datetime:年月日时分秒,默认值为null,最大值9999-12-31;

    timestamp(时间戳):年月日时分秒,默认为当前时间,最大值为2038-01-19。

别名

  查询表中所有的字段名   并把原字段名改成XXX   以下有三种方法:

    select 原字段名 as '别名' from 表名

    select 原字段名 '别名' from 表名

    select 原字段名 别名 from 表名

and  or  in

  and 和 java中的&&效果一样

  or 和 java中的||效果一样

  select * from 表名 where sal=1500 and deptno=10;

  select * from 表名 where sal=1500 or sal=3000 or sal=5000;

  select * from 表名 where sal in (5000,1500,3000);

between X and Y 查询X和Y之间的信息  (包括X和Y)

    select * from 表名 where job between X and Y;

查询

    用于模糊查询

  _:代表单个未知字符   包含字符a: _a%

  %:代表0个或多个位置字符  以a开头: a%;以a结尾: %a

  不包含XXX

    select * from 表名 where 字段名 not like '%啪啪%';

  包含XXX

    select * from 表名 where 字段名 like '%啪啪%';

排序

  order by 写在 where 的后面;没有 where && limit 写在后面;

  order by 后面写排序的字段名,可以写一个或多个,默认排序规则为升序,也可以指定规则:升序(asc) 降序(desc)。

分页查询(limit)

  limit X,Y :x代表跳过的条数;y代表查询的条数(每页的条数)。

    案例:查询第n页没页m条数据     limit (n-1)*m,m;
日期及相关函数

  select 'Hello World';

  now() 获取当前日期+时间         select now();

  获取当前日期        select curdate();

  获取当前时间        select curtime();

  从年月日时分秒提取年月日 和提取时分秒   select date(now());        select time(now());

  从年月日时分秒中提取年,月,日,时,分,秒
    select extract(year from now());

    select extract(month from now());

    select extract(day from now());

    select extract(hour from now());

    select extract(minute from now());

    select extract(second from now());

  日期的格式化        格式:date_format(日期,格式);

  %Y 代表四位年 %y 两位年

  %m 两位月     %c 一位月

  %d 日

  %H 24小时     %h 12小时

  %i 分            %s 秒

  改变格式

    select date_format(now(),'%Y年%m月%d日 %H点%i分%s秒');

  把非标准格式的时间转成标准格式

    str_to_date(非标准格式的时间,格式);

  转成标准格式

    select str_to_date ('15.08.2016 08:00:00','%d.%m.%Y %H:%i:%s');

ifnull函数

  age=ifnull(x,y) 如果x的值为null 则 age=y, x不为null则age=x
        update emp set comm=ifnull(comm,0);

聚合函数

  对多条数据进行统计查询

    求平均值 avg(字段名)  select avg(字段名) from 表名;

    最大值 max(字段名)   select max(字段名) from 表名;

    最小值 min(字段名)  select min(字段名) from 表名;

    总和 sum(字段名)    select sum(字段名) from 表名;

    查询符合条件的条数     select count(*) from 表名 where 字段名=XX;

字符串相关函数

  字符串拼接 concat(s1,s2) 结果为    s1s2

    select 字段名,concat(字段名,拼接数据) from 表名;

  获取字符串的长度 char_length(字段名)

    select 字段名,char_length(字段名) from 表名;

  获取字符串在另一个字符串中出现的位置

    格式一:instr(str,substr);  select instr('asdfg','d');  //3

    格式二:locate(substr,str);  select locate('d','asdfg');  //3

  转换大小写  

    select upper('abc');select lower('NBA');

  去两端空白

    字符串中间的空白不能去  select trim('  ab c   ');

  截取字符串

    从左边截取:    select left('abcdefg',2);

    从右边截取:    select right('abcdefg',3);

    从某个位置截取:    select substring('abcdefg',2,3);//从第二个数据开始截取三个数据

  重复

    select repeat('ab',3);

  反转

    select reverse('abc');

  替换

    select replace('abcdefg','c','m');

  插入

    select insert('abcdefg',3,2,'m');//把从第三个位置开始的两个数据替换成‘m’。

数据库部分(MySql)_1的更多相关文章

  1. 数据库 之MySQL 简单教程

      So Easy系列之MySQL数据库教程 1.   数据库概述 1.1.  数据库概述 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和 ...

  2. Mysql数据库知识-Mysql索引总结 mysql mysql数据库 mysql函数

    mysql数据库知识-Mysql索引总结: 索引(Index)是帮助MySQL高效获取数据的数据结构. 下边是自己整理的资料与自己的学习总结,,做一个汇总. 一.真的有必要使用索引吗? 不是每一个性能 ...

  3. 迁移应用数据库到MySQL Database on Azure

    by Rong Yu 有用户问怎么把他们应用的数据库迁移到MySQL Database on Azure上,有哪些方式,有没有需要注意的地方.今天我们来概括介绍一下迁移应用数据库到MySQL Data ...

  4. Cobar是提供关系型数据库(MySQL)分布式服务的中间件

    简介 Cobar是提供关系型数据库(MySQL)分布式服务的中间件,它可以让传统的数据库得到良好的线性扩展,并看上去还是一个数据库,对应用保持透明. 产品在阿里巴巴稳定运行3年以上. 接管了3000+ ...

  5. Mysql数据库的mysql Schema 究竟有哪些东西& 手工注入的基础要领

    #查看数据库版本号 mysql> select @@version; +------------+ | @@version  | +------------+ | 5.5.16-log | +- ...

  6. 2、ABPZero系列教程之拼多多卖家工具 更改数据库为Mysql

    因为要部署项目到云服务器,不想在服务器上装SqlServer,所以需要把项目改为Mysql. 项目初始化 1.下载项目压缩包,前面文章已经说到,可以加群到群文件里下载.解压缩下载的项目源码,使用VS2 ...

  7. 关于数据库管理系统DBMS--关系型数据库(MySQL/MariaDB)

    数据库的结构(3种):层次,网状,关系型(用的最多): DBMS的三层模型: 视图层:面向最终用户: 逻辑层:面向程序员或DBA: 物理层:面向系统管理员: 关系型数据库管理系统——RDBMS: 主要 ...

  8. 数据库【mysql篇】学习笔记

    Windows服务 -- 启动MySQL    net start mysql-- 创建Windows服务    sc create mysql binPath= mysqld_bin_path(注意 ...

  9. 数据库之数据库管理篇[mysql]

    管理数据库 1.mysql开闭使用篇 mariadb在Linux中首次进入mysql(因为此时还没有创建任何用户,mysql的root并不等效于linux中的root用户) sudo mysql 进入 ...

  10. 数据库之mysql篇(1)—— 数据库管理系统简介/mysql的安装、配置

    说mysql之前,还是先说说数据库. 什么是数据库: 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后 ...

随机推荐

  1. 用python语言算π值并且带有进度条

    用python算圆周率π 1.准备第三方库pip 打开cmd 输入代码:pip install requests ,随后就会成功 因为小编已经安装好了,所以就不把图截出来了 2.利用马青公式求π    ...

  2. JavaWeb环境搭建(作业八)

    1.JDK下载配置: (1)在官网下载jdk. (2)安装jdk.双击下载好的jdk,中间会选两次安装路径,一次是装jdk,一次是装jre.记住安装的路径. (3)配置环境变量. 1.在我的电脑右键属 ...

  3. 《mysql必知必会》学习_第16章_20180807_欢

    第16章:创建高级联结. P106 select concat(RTrim(vend_name),'(',RTrim(vend_country),')') as vend_title from ven ...

  4. 在 Linux 上如何挂载 qcow2 磁盘镜像

    1.下载qemu-nbd工具 sudo apt-get install qemu-utils 或者 sudo yum install qemu-img 2.加载nbd模块,然后挂载 sudo modp ...

  5. 一个简单的将Markdown二级标题进行排序的脚本

    我在写博客<Linux的1000个命令>的时候,相对二级标题进行一下排序,方便阅读和查找,于是就有了这个小程序. #! /usr/bin/env python3 import os imp ...

  6. 833. Find And Replace in String

    To some string S, we will perform some replacement operations that replace groups of letters with ne ...

  7. 宽字符wchar_t和窄字符char——putwchar、wprintf

    宽字符wchar_t 与 窄字符char 先说下窄字符char,这个大部分读者应该很清楚,char类型的变量占一个字节(byte)(也就是8个bit(比特)),能表示256个字符,那char的范围有两 ...

  8. Burpsuite常用模块详解以及渗透测试上的运用

    0x00前言 哪有什么前言,大家好,我是浅安.QQ:320229344... 0x01 JDK的安装,以及Burpsuite的成功开启. burpsuite基于JAVA环境才能正常运行的.所以要先安装 ...

  9. 关于 SQL 注入的问题

    拼串 (Statement)方式 1.编译次数多,效率比较低:会出现SQL注入问题(数据安全问题):先传参数再编译. 2.Sql文对应的字符串不一样,需要再次编译.Sql文对应的字符串一样,不会再编译 ...

  10. H264三种码率控制方法(CBR, VBR, CVBR)

    CBR(Constant Bit Rate)是以恒定比特率方式进行编码,有Motion发生时,由于码率恒定,只能通过增大QP来减少码字大小,图像质量变差,当场景静止时,图像质量又变好,因此图像质量不稳 ...