数据库学习记录 - 基本SQL操作

1. 关系型数据库

  • 关系型数据库
  • 非关系型数据库

关系型数据库由关系数据结构、关系操作集合、关系完整性约束三部分组成。

  • 关系数据结构
    指的是数据以什么方式存储,是一种二维表格的形式存储。本质是一个二维表

  • 关系操作集合
    如何来关联和管理对应的存储数据、一般使用SQL指令。

  • 关系完整性约束
    数据内部有对应的关联关系,以及数据与数据之间也有对应的关联关系。
    表内约束:对应的具体列只能放对应的数据(不能乱放)
    表间约束:自然界各实体都是有着对应的关联关系(外键)

2. 典型的关系型数据库

小型的:MicroSoft Access、SQLite
中型的:SQL Server、MySQL
大型的:Oracle、DB2

3. SQL介绍

SQL分类:

  • 数据查询语言,专门用于读数据,代表指令select、show
  • 数据操作语言,专门用于写数据,代表指令insert、update、delete
  • 事务处理语言,专门用于事务安全处理(不是所有的关系型数据库都提供)
  • 数据控制语言,专门用于权限管理,代表指令grant、revoke
  • 数据定义语言,专门用于库、表结构的管理,代表指令create、drop(alter)

4. Windows环境安装MySQL

5. MySQL

服务端:mysqld.exe
客户端:mysql.exe

manjaro环境下安装的mycli

6. SQL库操作

创建数据库

create database 库名字 [可选项]
可选项:

  • 字符集charset. eg:create database mydata charset gbk;
  • 校对集collate

显示数据库

  • 显示全部:show databases;
  • 显示匹配:show databases like '匹配模式';
    匹配模式:’_‘表示当前位置单个字符,’%'表示指定委会多个字符(通配)

选择数据库

use 数据库名;

修改数据库

  • 修改数据库的库选项:alter database 库名 charset = gbk;
  • mysql5.5之前可以修改库的名字。

删除数据库

drop database 库名;

7. SQL表操作

创建表

creat table 表名(字段名 字段类型 [字段属性], 字段名 字段类型 [字段属性],...) [表选项]
因为这里没有指定库,所以在这行命令执行之前,需要先选择一个数据库use 库名;

或者,不选择数据库,直接指定某个库create table 库名.表名(...)...

  • 表选项
    engine:存储引擎(默认是innodb)
    charset:字符集
    collate:校对集

复制已有的表结构

只复制结构,不复制数据。
create table 表名 like 表名;
当然,后边的那个表名,不一定是当前数据库的,可以用库名.表名这种。

显示数据表

与显示数据库类似,有两种

  • 显示所有表
    show tables
  • 显示匹配
    show tables like '匹配模式'

显示表结构

显示表中的字段信息
describe 表名
desc 表名
show columns from 表名

显示表创建时的语句

show create table 表名

修改表的属性

表属性就是表选择项(engine、charset、collate)
alter table 表名 表选项 = 新值
上边的等号也可以不要。

修改表的结构

  • 修改表名rename table 旧表名 to 新表名;
  • 新增字段alter table 表名 add [column] 字段名 字段类型 [插入的位置]
    column 可有可无,插入的位置有first 和 after两种。
  • 修改字段名alter table 表名 change 旧字段名 新字段名 字段类型 [位置]
    这里要注意的是,虽然是修改字段名字,但是必须指定这个修改后的字段类型
  • 修改字段类型(属性)alter table 表名 modify 字段名 新类型 [新属性] [新位置]
  • 删除字段alter table 表名 drop 字段名

删除表

drop table 表名 [, 表名2...] 可以同时删除多个表,但是删除数据库的时候不能这样连续删除。

8. SQl数据操作

插入数据

方式1:指定字段插入数据
insert into 表名 [(字段列表)] values(对应字段列表)

  • 注意,值列表(values)中的值只需要与前边字段列表顺序对应即可。例如
    insert into mt_student(name, age) values('clay', 26);

    insert into my_student(age, name) values(26, 'clay');
    都可以完成插入操作。
  • 命令中的字段列表,不一定非要包含这个表中的所有字段。
    insert into my_student(name) values('clay');

方式2:向所有字段插入数据
insert into 表名 values(对应字段列表)

  • 注意,这里没有方式1中那字段列表对值列表的顺序限制,所以,这里必须要与库表中的顺序一致才可以。

查询数据

  • 查询全部数据的全部字段
    select * from 表名;
    *表示通配符,表示把这个表中的全部数据都取出来。

  • 查询全部数据的部分字段
    select 字段1, 字段2... from 表名;

  • 查询部分数据的部分字段(有条件的查询)
    select 字段列表或者* from 表名 where 字段名 = 值
    这种条件查找,其实是遍历了表中的全部数据,再过滤出来的结果。

删除数据

delete from 表名 [where 条件];
注意,如果没有where条件,会把表中的全部数据都删掉。

修改数据(更新)

更新,通常是修改部分字段数据。

update 表名 set 字段名 = 新值 [where 条件]
注意,如果没有where条件,会把表中这个字段的数据全都修改掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值