20170623-sql复习

本文为博主在java实训时记下的sql基础笔记,主要为个人备份查找用,如果能帮助到大家更好,如有错误还望指出

DDL

数据库

创建数据库

create database if not exists 数据库名 character set UTF8

显示所有数据库

show databases

选择数据库

use 数据库名

删除数据库

drop database if exists 数据库名

显示所有表

show tables

创建表:

  • 数据类型:
    int – 整型
    double – 浮点型*(m,n)m长度,n位小数*
    char – 定长字符串
    varchar – 不定长字符串
  • 日期:
    date 年月日
    time 时分秒
    datetime 年月日时分秒
    timestamp 年月日时分秒,范围更小,支持时区
  create table 表名(
  	列名 类型
    id	int,
    sal	double(5,2),
    name varchar(50),
    role char(1),
    birthday datetime
  );

显示表的创建语句:

show create table 表名

显示表结构:

desc 表名

修改表结构:

alter table 表名(前缀)
  • 添加列:
add 列名 列类型
  • 修改列类型:
modify 列名 类型
  • 修改列名:
change 原列名 新列名 列类型
  • 删除列:
drop 列名
  • 修改表名:
rename to 新表名

DML:数据操作语言

insert into 表名 values(,,,)
delete from 表名
truncate table 表名
update 表名 set 列名 列值, ...

DQL:数据查询语言

  1. 查询指定列 select 列名
  2. 条件查询 where
  • 运算符
  • between min and max
  1. 去掉重复值 distinct 列名
  2. 排序
  • 升序 order by 列名 asc
  • 降序 order by 列名 desc
  1. 模糊查询 like
  • _:任意单个字符
  • %:任意0~n个字符
  1. 聚合函数
  • count(列名):不包含列值是null的行数
  • sum
  • avg
  • max
  • min
  1. limit m,n:从第m+1行开始,共显示n行
  • 查询薪资最高的员工
select * from emp
order by sal desc
limit 0,1
  1. 分组查询 group by
  • 建议不要查询单列记录,应该查询组信息
  • 查询每个工作有多少人
select job, count(*) from emp group by job
  • 筛选包含’a’的job,不能用where
having job like '%a%'

约束

  • 主键约束 primary key
  • 主键自增长 auto_increment
  • 非空约束 not null
  • 唯一约束 unique
  • 外键约束 foreign key

概念模型

在创建软件项目时,把实体抽象出来。
user, question
java–>java类
数据库–>表–关系模型
使用外键,产生关系:
一对多 – 外键在多的那张表,
一对一 –
多对多

多表查询

  1. 方言
    查询所有的雇员信息,以及对应的部门名称
select e.*, d.dname from emp e, dept d where e.deptno=d.deptno;
  1. 标准查询语言
select e.*, d.dname from emp e inner join dept d on e.deptno=d.deptno
  1. 右(左)外连接:把右(左)边的表作为主表,主表的所有信息都会被查询出来
select e.*, d.dname from emp e right outer join dept d on e.deptno=d.deptno
  1. 子查询:在from或者where后可以使用另一个查询的结果作为查询源或者条件
select * from emp where sal=(select max(sal) from emp)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值