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. sqoop加载mysql数据库

    ./bin/sqoop list-databases --connect jdbc:mysql://node-001:3306/ --username root --password hadoop

  2. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax;问题的解决

    哇,时隔两天时间,终于找到这个问题的解决办法,先看问题 这是我最近写的家庭记账本网页版,按顺序输入点击保存,总是弹出添加失败的提示 顺着找原因,把原因锁定在dao层的sql语句上,反复检查,没有找到一 ...

  3. springboot读取properties和yml配置文件

    一.新建maven工程:springboot-configfile-demo,完整工程如下: pom.xml <?xml version="1.0" encoding=&qu ...

  4. 10.18 nslookup:域名查询工具

    功能说明 nslookup命令是常用的域名解析查询工具. 如果系统没有nslookup命令,则需要安装下面的软件包: yum-y inatall bind-otil9   语法格式 nslookup ...

  5. FFmpeg原始帧处理-滤镜API用法详解

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10429145.html 在FFmpeg中,滤镜(filter)处理的是未压缩的原始音视频 ...

  6. Jquery - 添加属性、添加class、添加Css

    一.设置属性: 方式一  jQuery 代码: $("img").attr({ src: "test.jpg", alt: "Test Image&q ...

  7. 用react + redux + router写一个todo

    概述 最近学习redux,打算用redux + router写了一个todo.记录下来,供以后开发时参考,相信对其他人也有用. 注意: 我只实现了Footer组件的router,其它组件的实现方法是类 ...

  8. 使用js做LeetCode

    概述 无意中得知了LeetCode这个刷题网站, 深得我意. 其实作为一个程序员, 我是很看重写基础代码的, 因为这个写熟了, 以后学各种语言就不会太困难. 所以我觉得有必要把这件事记下来, 供以后开 ...

  9. Shell-16--函数

    函数的定义和调用放在一起(同一个shell)的好处是不会存在路径的问题:如果功能复杂,则应分开

  10. Restore database use sql `*.bak` file

    1.第一步: 2.第二步: 3.第三布: 4.第四步: