数据库学习二sql语言笔记

1.  mysql命令使用
# 展示所有数据库
show databases;

# 使用某个数据库
use database_name

# 选中数据库后,展示所有表
show tables;

 

2.   创建数据库,并进入数据库
Create database Fizz;
Use Fizz;

 

3.建表

3.1.建表语句
# 建立学生表stu,Fizz为数据库名
# check语句检查列的值
create table Fizz.stu(
    sno int  auto_increment, 
    sname char(15) ,
    ssex char(2)  not null,
    spro char(15) not null,
    primary key(sno),
    check(ssex = '' or ssex = '')
    )engine = 'InnoDB';
 
#建立课程表course
#cpre为外键
create table fizz.course( cno int auto_increment, cname char(20), cpre int, ccredit float, primary key(cno), foreign key(cpre) references fizz.course(cno) )engine ='InnoDB';

 

 
3.3.保留字
  3.3.1.null 为空
  3.3.2.auto_increment 自增
  3.3.3.default 设置默认值
3.4.引擎
 对于相互关联的表必须使用innodb引擎,
要使用全文搜索,使用myisam
 
 
3.5 外键关联的字段必须拥有索引,可以在建表时使用index函数,也可以create index s on table_name(column)
 
4.插入数据以便后面操作
  单行插入 insert into tabl_name values();按照 列的顺序插入;
                 insert into tabl_name(column1, column2, column3) values(v1,v2,v3);
  多行插入     insert into tabl_name(column1, column2, column3)
                       values(v1,v2,v3),(v4,v5,v6), (v7,v8,v9);
   多行插入效率更高
 
5.删除操作
  级联删除 
  
# (10) 删除书号为D001701的书籍信息

# 删除作者,删除书的信息。设涉及到多表删除,建立级联删除。

set foreign_key_checks=0;#解除外键约束
delete bookinfo, authorinfo from bookinfo left join authorinfo on  
bookinfo.BookID = authorinfo.BookID where bookinfo.BookID = '2';# 连接删除,此

处我们采用外连接,考虑到了可能有的书没有作者。
set foreign_key_checks=1;#开启外键约束

 

6.更新操作
        级联更新
 
7.查询数据
   1. 单表查询:    
         1.1.select 列 from table_name;
  2.多表查询
       select * from ta1,ta2; 对ta1 ta2做笛卡尔积
   
  内连接:select * from 表1 inner join 表2 on 连接条件 或者采用select * from 表1,表2  where 筛选条件。将表1和表2利用外键关联起来。表1中未参与关联的记录将不会被组合在一起。
  外连接:select * from 表1 left outer join on 表2,join左边的表1中未参与关联的记录也会被选中。
  `select FirstName,LastName,City,State from Person  left outer join Address  on
Person.PersonId = Address.PersonId;`
      
  并运算:Union 连接select 
       嵌套查询:
                  不相关子查询:外层与内层的查询不关联
                  相关子查询:内层查询需要外层查询的结果
       in 运算:实现交运算
       not in 运算:实现差运算
                  相关子查询:内层要用到外层的查询结果
      exists : 内层查询为空,外层不返回结果,内层查询不为空,外层返回结果。
       not exists: 内层为空,外层返回结果
        除法:一个集合包含另一个集合,exists 实现除法,not exists 小集合 - 大集合如果大集合包含小集合,那么小集合-大集合一定为空,外层返回
  模糊查询:使用like ,通配符 %: 匹配任意个字符任意多次 。  _:匹配英文字符一次
 
8. 汇总数据
需要 对 表中 数据( 而 不是 实际 数据 本身) 汇总。 因此, 返回 实际 表 数据 是对 时间 和 处理 资源 的 一种 浪费( 更不用说 带宽 了)。 重复 一遍, 实际 想 要的 是 汇总 信息。
聚集函数:
AVG() 返回 某 列或者某行 的 平均值,配合select语句使用
只用于 单个 列 AVG() 只能 用来 确定 特定 数值 列 的 平均值, 而且 列名 必须 作为 函数 参数 给出。 为了 获得 多个 列 的 平均值, 必须 使用 多个 AVG() 函数。 NULL 值 AVG() 函数 忽略 列 值 为 NULL 的 行。
COUNT(*) 返回 某 列 的 行数,count(column):返回column列的行数,null不计入其中。 
MAX() 返回 某 列 的 最大值
 MIN() 返回 某 列 的 最小值
SUM() 返回 某 列 值 之和
 
 
 
 
 

 

posted @ 2020-05-14 21:12  FizzPu  阅读(158)  评论(0编辑  收藏  举报