SQL 操作数据库

概念:结构化查询语言 Structured Quary Language

作用:

 1.是一种数据库的查询的标准,对所有的数据库都支持

 2.不同的数据库SQL语句可能有点不同 (方言),mysql oracle DB2

sql语句分类

 1.DDL:操作数据库、表  数据定义语言 Data Definition Language

 2.DML:增删改表中的记录 数据操作语言 Data Manipulation Language

 3.DQL: 查询表中的记录 数据查询语言 Data Query language

 4.DCL:管理用户与授权  数据控制语言 Data Control language

DDL 语言

1.操作数据库 CRUD操作

 1.创建数据库 方式有很多种: C ---create

  • create database 数据库名;

  • create database if not exists 数据库名;// 创建的时候先判断数据库是否存在

  • create database 数据库名 character set 编码字符集;// 创建数据库的指定编码字符集

-- 分号 一般是sql语句的结束标志
create DATABASE java31;
-- 创建数据库的第二种方式 create database if not exists 数据库名;
create database if not EXISTS apartment;
-- 创建数据库的第三种方式 create database 数据库名 character set 编码字符集;
create database school character set utf8;
-- 三者组合到一起表达
create database if not EXISTS college character set utf8;

 2. 查询 r --->retrieve

  • 查询当前数据库服务器的所有的数据库

    show databases;

  • 查询某个数据库的编码字符集:查询某个创建的数据库的编码字符集

    show create database 数据库名称;

 3.修改 u-->update

  • 修改数据库的编码字符集

    alter database 数据库名称 character set 编码字符集;
-- alter  database 数据库名称 character set 编码字符集;
alter database college character set gbk;

 4. 删除 d -->delete drop

  • 删除数据库

    drop database 数据库名称;

  • 判断数据库是否存在,如果存在删除掉

    drop database if exists 数据库名称;

--  drop database if exists 数据库名称;
drop database if EXISTS school;
  1. 操作表

 1. 创建表 C --> create

  • 语法:

    create table 表名(

    ​ 列名1 数据类型,

    ​ 列名2 数据类型,

    ​ 。。。。。。。

    );

  • 数据类型

    • 整数类型 tinyint(微整形) 8位 smallint(小整形)16位 mediumint(中整形)24位 int(integer) 整形32位

    • 小数类型 double 8个字节 float 4个字节

    • 日期类型 date (年月日) time (时分秒) datetime (年月日时分秒) timestamp 时间戳 年月日时分秒

    时间戳,如果该字段为时间戳类型,没有赋值或者该字段值为null,则默认使用系统当前的时间自动赋值。一般情况一张表中只能有一个字段使用时间戳数据类型。

  - 字符串类型   char(固定长度的字符串)     varchar(可变长度的字符串)  使用几个字符就占几个

  - 二进制类型    tinyblob(允许0~255个字节)   big large  blob(允许0~65535个字节)  longblob(非常大)

  - 文本类型      tinytext (允许长度为0~255个字节)  text(允许0~65535个字节) longtext(非常大)

 2. 查看表 查询 retrieve

  • show tables 查看当前使用的数据库下面的所有的表

  • desc 表名; 描述该表的结构

  • 查看创建的表 show create table 表名;---->查看该表创建使用到的sql语句

  • 快速创建一个表结构相同的表 create table 新表名 like 旧表名;

 3. 修改 update

  • 修改表名 alter

    alter table 旧表名 rename to 新表名;

  • 修改表的字符集

    alter table 表名 character set 编码字符集;

  • 添加一列字段 add

    alter table 表名 add 列名 数据类型;

  • 删除一列 drop

    alter table 表名 drop 列名;

  • 修改列名 数据类型

    • change alter table 表名 change 旧列名 新列名 新数据类型;
    • modify alter table 表名 modify 列名 新数据类型;

 4. 删除 delete

  • 删除表 drop table 表名;

  • 删除判断表是否存在 drop table if exists 表名;

大多数情况下我们是直接借助于图形化管理工具 Navicat直接操作。

DML 增删改数据库中的表的数据

  1. 添加数据:

    • 语法:

      • ​ insert into 表名(列名1,列名2,......列名n) values(值1,值2,......值n);

      • ​ 注意事项:

        • 列名和后面值的类型要保持一致。

        • 如果表名后面没有指定列名,默认为给该表中的所有的列添加对应的值。注意依然是有顺序的。

          insert into 表名 values(值1,值2,......值n);

        • 除了数字类型外(int,double),其他类型一律要使用引号(单引号和双引号都可以)引起来。

  2. 删除数据:

    • 语法: delete

      delete from 表名 [where 条件];

    • 注意事项:

      • 如果后面不跟条件 ,则删除整张表的数据

      • 删除表的所有的记录 delete from student / truncate table 表名;(底层是先把表删除掉,然后再创建一张一模一样的表)

      • 如果条件中的字段值有重复的,凡是符合条件的都删除。

  3. 修改数据:update

    • 语法:

      update 表名 set 列名1 = 替换值1, 列名2 =替换值2,.....列名n = 替换值n [where 条件];

    • 注意:

      • 如果不带条件,则会修改表中的所有记录

DQL 查询表中的记录 select .... from .....

  • 语法

    ​ select 需要查询的信息(列名1,列名2,.......列名n) / * from 表名 [where 条件];

    ​ 完善下:

    ​ select

    ​ 字段列表

    ​ from

    表名列表

    ​ where

    条件列表

    ​ group by

    分组字段

       having
    分组之后的条件

    ​ limit

    分页限定

  • 去重查询 distinct

    • 使用关键字 distinct 去掉重复的记录

    • 语法格式: select distinct 字段名 from 表名;

      例如:

      -- 查询本班同学都来自于哪些地方法?
      select distinct address from student;
  • 查询的结果值可以参与数学运算

  • ifnull表达式 ifnull(表达式1,表达式2)

    ​ 表达式1: 代表那个字段需要判断是否为null

    ​ 表达式2:如果该字段值为null 后面的进行替换

  • 起别名操作

    ​ 语法 as 也可以省略不写

    ​ 表名 as 新的名字

    ​ 查询出来的字段信息 as 新名字

    ​ 当你查询同一张表,并且进行多次查询的时候可以使用起别名来实现

    • 对指定列进行别名操作: select 列名1 as 新名字,列名2 as 新名字,..... from 表名;

    • 对表和列同时进行别名操作: select 列名1 as 新名字,列名2 as 新名字,..... from 表名 as 新表名;

      如:对学生表进行操作:查询学生表的姓名和年龄;

      select
      s.age as 年龄,
      s.name as 姓名
      from
      student as s;
      -- as关键字可以省略不写。

    ​ 注意:

    ​ 起别名 只是在sql语句中方便查询使用的,并不会对数据原来的文件起到任何影响

sql操作数据库(1)-->DDL、DML、DQL的更多相关文章

  1. sql操作数据库(2)--->DQL、数据库备份和还原

    查询 查询表中的所有的行和列的数据 ​ select * from 表名; ​ select * from student; 查询指定列的数据:如果有多个列,中间用逗号隔开. select 列名1,列 ...

  2. SQL语言:DDL/DML/DQL/DCL

    SQL (Structure Query Language)语言是数据库的核心语言. SQL 的发展是从1974年开始的,其发展过程如下: 1974年-----由Boyce和Chamberlin提出, ...

  3. 数据库:DDL/DML/DCL/TCL基本概念

    SQL(Structure Query Language)语言是数据库的核心语言 1. 数据查询语言DQL 数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询块: ...

  4. android: SQLite使用 SQL 操作数据库

    虽然 Android 已经给我们提供了很多非常方便的 API 用于操作数据库,不过总会有一些 人不习惯去使用这些辅助性的方法,而是更加青睐于直接使用 SQL 来操作数据库.这种人 一般都是属于 SQL ...

  5. SQL 函数 排序 等基础操作 DDL DML DQL 用法和<> <=>等

    sql基础汇总 --根据函数别名排序 --排序规则,默认是升序 sleect LENGTH(NAME) nameLength from user ORDER BY nameLength DESC -- ...

  6. MySql用statement实现DDL,DML,DQL的操作Demo

    Demo1 Connection connection=null; Statement stmt=null; int result=-1; try { Class.forName("com. ...

  7. DCL,DDL,DML,DQL

    DCL(Data Control Language)是数据库控制语言. 是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句. 在默认状态下,只有sysadmi ...

  8. 区别 |DCL |DDL |DML |DQL

    DCL(Data Control Language)数据控制语言: 用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句.这个比较少用到. 对于大多数人,在公司一 ...

  9. 数据库中"DDL","DML","DCL"

    sql组成:DDL:数据库模式定义语言,关键字:createDML:数据操纵语言,关键字:Insert.delete.updateDCL:数据库控制语言 ,关键字:grant.removeDQL:数据 ...

随机推荐

  1. 转:【Python3网络爬虫开发实战】6.4-分析Ajax爬取今日头条街拍美图

    [摘要] 本节中,我们以今日头条为例来尝试通过分析Ajax请求来抓取网页数据的方法.这次要抓取的目标是今日头条的街拍美图,抓取完成之后,将每组图片分文件夹下载到本地并保存下来. 1. 准备工作 在本节 ...

  2. 第一章、PyQt的简介、安装与配置

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 第一章.PyQt的简介.安装与配置 一.引言 当朋友向我推荐PyQt时,老猿才知道有这样一个在Pyt ...

  3. 【系统设计】WMS系统中 库存、盘点、移库、拆库功能的设计(库内管理)

    最近负责WMS系统 盘点 移库 两个功能模块的功能及数据库设计. 物流仓储系统的搭建,要基于仓库的实际情况,整理内部员工需求,再参考其他WMS系统,经过长时间的讨论和研究,最终转化为产品需求. 这里先 ...

  4. 小程序setData 修改数组附带索引解决办法

    this.setData({'judge[current]':true}); 以此句进行修改值,会报错 Error: Only digits (0-9) can be put inside [] in ...

  5. html标签和body标签的区别

    首先想要总结这个问题就是因为在开发的过程中,在设置body的高度的时候,在浏览器窗口中并不起作用,一直都会显示是浏览器窗口的大小,所以想要搞清楚这面的原因. 一.前提 在页面的设计中,当我们没有为一个 ...

  6. 一份平民化的MySQL性能优化指南

    前言 近期在重新学习总结MySQL数据库性能优化的相关知识,本文是根据自己学习以及日常性能测试调优过程中总结的经验整理了一份平民化的优化指南,希望对大家在进行MySQL调优分析时有帮助!   MySQ ...

  7. VMware虚拟机下Centos8 设置静态IP地址

    缘起 我们在平时学习Redis.Nginx等分布式微服务的组件的时候,无法避免的需要用到Linux操作系统,而Linux操作系统的主机来源差不多就三种情况: 真实物理机 阿里云等云服务器 利用虚拟机 ...

  8. MySQL函数与存储过程

    一.函数,参考博客:https://www.cnblogs.com/progor/p/8871480.html /* 函数:函数只会返回一个值,不允许返回一个结果集.函数强调返回值,所以不允许返回多个 ...

  9. MySQL 锁(完整版)

    目录 锁总览 锁的作用 加锁流程 锁对数据库的影响 锁等待 死锁 锁类型 锁范围 锁方式 全局锁 全局读锁 全局QC锁 QC锁存在的问题: 备份锁 backup lock MDL锁 MDL锁类型 MD ...

  10. C#知识结构

    C#知识结构 对于一个工作多年的程序员而言,接口.反射.索引器.事件.委托这些耳熟能详的词汇,提起来别说多简单了,但是让老司机坐在那一个人拿起一支笔,把脑海中对C#知识结构进行梳理一下,大抵是写不了多 ...