MySQL中常用DDL命令   database definition language  与 DML命令 :  database definition language

操作数据库:

  • 创建数据库 :    create database day1203 ;
  • CREATE DATABASE bank1 CHARACTER SET utf8;
  • 查看数据库: show databases;
  • 查看数据库定义信息: show create database day1203;
  • 将数据库的编码修改为utf8:  alter database study2 character set utf8;
  • 删除数据库: drop database 1day1203;
  • 查看当前使用的数据库:select database();
  • 切换数据库:use day1203;

常用的字段数据类型:

int:整型
double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char:固定长度字符串类型; char(10) 如果不足10位则会自动补足10位:'abc '
varchar:可变长度字符串类型;varchar(10) 如果不足10位不会补足:'abc',性能不如char高
text:字符串类型;适用于大文本内容。
blob:字节类型;
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss

操作表 :

  • 查看数据库中的所有表: show tables;
  • 查看表的创建细节: show create table students;
  • 查看表的字段信息:desc students;
  • 列增加Adress列:   alter table students add Address Varchar(30);
  • 列删除列: ALTER TABLE students DROP adress;
  • 列修改列: alter table students Modify name varchar(32);
  • 列修改列名:alter table emp change username name varchar(20);
  • 表修改表名:rename table emp to NewEmp
  • 表修改字符集:ALTER TABLE user CHARACTER SET gbk;
  • 删除表:     drop table students
  • 添加:INSERT INTO emp(id,NAME,age) VALUES(4,'lisi',23);
  • 批量添加:INSERT INTO emp (id,name,sex,birthday,salary) VALUES (4,'james','male','1985-08-10',50000), (5,'marry','female','1987-06-15',30000);
  • 修改:UPDATE  emp SET NAME = 'lisi' WHERE id = 4;
  • 删除: DELETE FROM emp WHERE id = 4;

DQL查询:

  • 简单查询:select id from emp;
  • 查询全部:select * from emp;
  • 中文显示:SELECT id,NAME,sal*12 AS '年薪' FROM play;
  • 条件查询:语法:SELECT 字段名 FROM 表名 [WHERE –> GROUP BY –>HAVING–> ORDER BY];
  • 不等于SELECT sal FROM play WHERE sal <> 5000;
  • between … and …:SELECT * FROM play WHERE id BETWEEN 7000 AND 7499;
  • is null/not null:SELECT * FROM play WHERE comm IS NULL;
  • 且 and:  SELECT * FROM play WHERE job='manager' AND sal>2500;
  • 或 or : SELECT * FROM play WHERE job='manager' OR sal>2500;
  • in(s1,s2) 满足其一就可以:SELECT NAME,sal FROM play WHERE sal NOT IN (1600,3000);
  • 模糊查询,在数据量较大的情况下,使用like会影响性能。
  • _表示单个,%表示多个
  • 查询姓名以M开头的所有员工:
  • select ename from emp where ename like 'M%';
  • 查询姓名以N结尾的所有员工:
  • select ename from emp where ename like '%N';
  • 查询姓名中包含O的所有员工:
  • select ename from emp where ename like '%O%';
  • 查询姓名中第二个字母是A的所有员工:
  • select ename from emp where ename like '_A%';
  • 排序:ORDER BY,默认采用升序(asc)
  • SELECT NAME,sal FROM play ORDER BY sal ASC;
  • SELECT NAME,sal FROM play ORDER BY sal DESC;
  • 分组与聚合:聚合函数在计算时会自动忽略空值,不用手动写sql将空值排除,不能直接写在where语句的后面
  • sum()求和函数:SELECT SUM(sal) FROM play;
  • avg()取平均值函数:SELECT AVG(sal) FROM play;
  • max()取得最大值函数/min最小值:SELECT MAX(sal) AS maxsal FROM play;
  • count()取得数据总数:SELECT COUNT(id) FROM play;count()函数不会统计数据为null的记录
  • sum、avg、max、min、count这些函数可以一起使用
  • SELECT COUNT(*),SUM(sal),AVG(sal),MAX(sal),MIN(sal) FROM play;
  • distinct去重:distinct 字段名或 distinct字段名1, 字段名2…,只能出现在所有字段最前面,后面如果有多个字段及为多字段联合去重。
  • SELECT COUNT(DISTINCT job) FROM play;
  • group by分组
  • 找出每个职位的最高薪水:SELECT id,job,MAX(sal) AS maxsal FROM play GROUP BY job;
  • 找出每个职位的最高薪水按照薪水逆序排序:SELECT NAME,job,MAX(sal) AS maxsal FROM play  GROUP BY job ORDER BY maxsal DESC;
  • having过滤:如果想对分组的数据进行过滤,需要使用having子句。过滤groupby生成的不符合条件的临时表,放在group后面
  • SELECT job,AVG(sal) AS avgsal FROM play GROUP BY job HAVING avgsal>2000;
  • where和having区别:
  • where和having都是为了完成数据的过滤,它们后面都是添加条件;
  • where是在 group by之前完成过滤;
  • having是在group by之后完成过滤
  • 子查询:select 语句嵌套 select 语句被称为子查询;可出现在select、from、where关键字后面
  • SELECT NAME,sal FROM play WHERE sal>(SELECT AVG(sal) FROM play)

  • 合并查询

    SELECT * FROM emp WHERE id BETWEEN 1 AND 2
    UNION
    SELECT * FROM emp WHERE id >=6;

  • 交叉连接查询
  • 笛卡尔积:查询出来的是两张表的乘积。没有意义。
  • 过滤出有意义的数据:SELECT * FROM product,category WHERE cid=cno;
  • SELECT * FROM product AS p , category AS c WHERE c.`cid`=p.`cno`;(或SELECT * FROM product p , category c WHERE c.`cid` = p.`cno`;)
  • 内连接查询:查交集
  • 隐式内连接:SELECT * FROM product p , category c WHERE c.`cid` = p.`cno`;
  • 显式内连接:JOIN  ON : SELECT * FROM product p JOIN category c ON p.`cno` = c.`cid`;
  • 左外连接:查关于左表的并集
  • SELECT * FROM product p LEFT OUTER JOIN category c ON p.`pid` = c.`cid`;
  • 右外连接:查关于右表的并集
  • SELECT * FROM category c RIGHT OUTER JOIN product p ON c.`cid` = p.`cno`;
  • Limit分页:limit只在MySQL中起作用
  • SELECT * FROM emp WHERE id BETWEEN 1 AND 2
    UNION
    SELECT * FROM emp WHERE id >=6
    ORDER BY id ASC
    LIMIT 0,2;

  • sql语句顺序:
  1. select xxxx
  2. from xxxx
  3. where xxxx
  4. group by xxxx
  5. having xxxx
  6. order by xxxx  desc/asc
  7. limit
  • from 将硬盘上的表文件加载到内存
  • where:将符合条件的数据筛选出来。生成一张新的临时表
  • group by :根据列中的数据种类,将当前临时表划分成若干个新的临时表
  • having : 可以过滤掉group by生成的不符合条件的临时表
  • select : 对当前临时表进行整列读取
  • order by : 对select生成的临时表,进行重新排序,生成新的临时表
  • limit : 对最终生成的临时表的数据行,进行截取


二 sql语句,常用字段数据类型的更多相关文章

  1. SQL语句修改字段类型与第一次SQLServer试验解答

    SQL语句修改字段类型 mysql中 alert table name modify column name type; 例子:修改user表中的name属性类型为varchar(50) alert ...

  2. sql语句修改字段长度

    sql语句修改字段长度 alter table <表名> alter column <字段名> 新类型名(长度) 例: alter table students alter c ...

  3. sql语句把字段中的某个字符去掉

    sql语句把字段中的某个字符去掉 )),'http://demo.m-school.net','') 例如: )),'http://192.168.2.180','') )),'http://zpzx ...

  4. 用sql 语句给字段添加描述

    用sql 语句给字段添加描述 IF not exists (SELECT * FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', ...

  5. mysql下sql语句 update 字段=字段+字符串

    mysql下sql语句 update 字段=字段+字符串   mysql下sql语句令某字段值等于原值加上一个字符串 update 表明 SET 字段= 'feifei' || 字段; (postgr ...

  6. Sql 语句添加字段、修改字段类型、默认值语法

    Sql 语句添加字段 ,) not null --修改类型 alter Table bbs ) Sql 语句修改默认值 alter table 表名 drop constraint 约束名字 --删除 ...

  7. sql中有一些保留字,当你的字段名是它的保留字时,这个时候sql语句的字段不加``就会报错

    sql中有一些保留字,当你的字段名是它的保留字时,这个时候sql语句的字段不加``就会报错

  8. Oracle使用SQL语句修改字段类型

    Oracle使用SQL语句修改字段类型 1.如果表中没有数据 Sql代码 1 2 3 alter table 表名 modify (字段名1 类型,字段名2 类型,字段名3 类型.....)  alt ...

  9. 数据库学习之二--SQL语句以及数据类型

    一.SQL语句种类: 1. DDL(Data Definition Language,数据定义语言)用来创建或者删除存储数据用的数据库以及数据库中的表;包含以下几种指令: a. CREATE:CREA ...

随机推荐

  1. 安卓之文本视图TextView及跑马灯效果

    一.基本属性和设置方法 二.跑马灯用到的属性与方法说明 三.省略方式的取值说明 四.跑马灯效果案例代码   (1)布局xml文件 <?xml version="1.0" en ...

  2. C语言:假定输入的字符串只包含字母和*号,fun函数:除了尾部的*号以外,将字符的其他*号进行全部删除,形参p已经指向字符串中最后一个字母。-利用折半查找整数m在有序数组中的位置,若找到,返回下标值,否则返回-1。

    //假定输入的字符串只包含字母和*号,fun函数:除了尾部的*号以外,将字符的其他*号进行全部删除,形参p已经指向字符串中最后一个字母. #include <stdio.h> void f ...

  3. NET在64位系統使用32位oracle客户端访问数据库

    客户在win7 64位系统中安装32位的ora客户端,NET 安装后连线数据库 引发BadImageFomatException. 按客户机安装64位ora客户端也不现实,可能会影响其他应用的正常使用 ...

  4. VBA 学习笔记 - 输入框

    学习资料 https://www.yiibai.com/vba/vba_input_box.html 输入框 InputBox 函数说明 提示用户输入值.当输入值后,如果用户单击确定 按钮或按下键盘上 ...

  5. python数组冒号取值操作

    1.冒号的用法 1.1 一个冒号 a[i:j] 这里的i指起始位置,默认为0:j是终止位置,默认为len(a),在取出数组中的值时就会从数组下标i(包括)一直取到下标j(不包括j) 在一个冒号的情况下 ...

  6. vue.js 强行赋值、刷新数组或者对象 方法之 $.set()

    实际开发过程中,数据交互的的时候需要赋值,刷新,但是不可能每次赋值之后都刷新整个页面,所以就要用到 vue.js方法 $.set(),能实现赋值对象的局部刷新 语法:Vue.set(object, k ...

  7. 「CF1313C Skyscrapers」

    题目大意 给出一个长度为 \(N\) 的序列 \(a\) 需要构造出一个长度为 \(N\) 的序列 \(h\) 使得 \(\forall i \in \{1,2,\ldots ,N\} h_i \le ...

  8. SpringMVC中在Controller类的每个方法执行前调用某个方法的实现

    在使用SpringMVC做项目的时候,如果想在@Controller类中每个@RequestMapping方法执行前都调用某个方法,要怎么实现呢?答案是使用Spring的@ModelAttribute ...

  9. Vue.js项目的开发环境搭建与运行

    写作背景:手上入一个用Vue框架写的微信公众号项目,根据公司安排,我负责项目源代码的验收工作(当然专业的工作检测会交给web开发人员,我只是想运行起来看一看). 1 开发环境安装步骤: (一)安装no ...

  10. 无法访问Eureka主页

    spring: application: name: 90foodmall-eureka server: port: 8000 eureka: client: #是否将自己注册到Eureka Serv ...