第02课 建库, 建表, 加数据

2019-03-24  本文已影响0人  猫哥的技术博客
第三章_思维导图.png

必会单词

  1. create` 创建
  2. insert 插入
  3. primary key 主键
  4. alter 修改
  5. change 改变/修改
  6. rename 重命名
  7. modify 修改
  8. character 字符
  9. engine 引擎
  10. table 数据表
  11. database 数据库
  12. foreign key 外键
  13. update 更新
  14. delete 删除
  15. drop 扔掉/删除
  16. show 展示
  17. unique 唯一

数据库四门基本功课:增删改查

创建数据库

创建数据库的语法

create database db_name character set character_name

『示例』创建一个名为 bookshop 的数据库,并设置其字符集为gbk。

create database bookshop character set gbk;

结果:

mysql> create database bookshop character set gbk;
query ok, 1 row affected (0.00 sec)

操作数据库

查看数据库

成功创建数据库后,可以使 用show命令查看 mysql 服务器中的所有数据库信息

show  databases;

『示例』shon命令査看 mysql 服务器中的所有数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bookshop           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

选择数据库

虽然成功创建了数据库,但并不表示当前就在操作操作库 bookshop 。可以使用 use 语句选择一个数据库。

use db_name;

例如,选择名称为 bookshop 的数据库,设置其为当前默认的数据库,命令执行结果如下所示

mysql> use bookshop;
Database changed

修改数据库

数据库创建后,如果需要修改数据库的参数,可以使用 alter database 命令。语法如下:

alter database db_name character set character_name;

『示例』将数据库 bookshop所用的字符集修改成 gb2312。

alter database bookshop character set gb2312;

删除数据库

删除数据库的操作可以使用 drop database 语句,语法如下:

drop database db_name;

例如,通过 drop database 语句删除名称为 bookshop 的数据库,如下所示。

mysql> drop database bookshop;
query ok, 0 rows affected (0.03 sec)

数据库存储引擎

如下所示。


111.png

innodb存储引擎

myisam存储引擎

memory存储引擎

如何选择存储引擎

1553474200843.png

掌握数据表的基础知识

表的定义

1553474228031.png

列名

列名是用来访问表中具体域的标识符,列名必须遵循下列规则:

数据类型

数值类型

1553474289406.png

字符串类型

常用的字符串类型主要包括charvarcharbinaryvarbinary 等类型。

1553474306952.png

日期时间类型

在 mysql中,日期时间类型包括 datetimetimetimestampdate等。

1553474417005.png

管理网上书城系统数据库

表的设计步骤

  1. 表的命名方式。

  2. 表中每一列的名称、数据类型及其长度。

  3. 表中的列是否允许空值, 是否唯一, 是否要进行默认设置或添加用户定义约束。

  4. 表间的关系, 即确定哪些列是主键, 哪些是外键

使用sql语句创建数据表

语法

create table tb_name(
    column name1 datatype[列级别约束条件],
    column name2 datatype[列级别约束条件]
    ...
    [表级别约束条件]
);

创建如下数据表的话

1553475040319.png

实际代码

create table customers(
    cid char(6) not null primary key,
    ctruename varchar(50),
    cpassword varchar (50),
    csex char (2),
    caddress varchar(50),
    cmobile varchar(11),
    cemail varchar(50),
    cregisterdate datetime
)engine=innodb;

数据完整性约束

数据完整性概述

什么是数据完整性?

存在你数据库里的数据, 就要符合你数据库的规矩

在 mysql中可以通过 primary key约束、foreign key约束、 unique、空值约束和默认值约束等来实施数据完整性

主健约束

主键(primary key)约束是使用最为频繁的约束
它的作用是唯一标记一条数据

所以:

  1. 主键不能为null
  2. 主键不能重复
  3. 用过的主键, 即便删除来这条记录, 最好也不要再用
  4. 主键不能修改

总结起来就是四不

不为空, 不相同, 不重用, 不改动

单字段主键

『示例』顾客信息表 customers中需要以“顾客编号”作为顾客的唯一标识,在创建数据表 customers时,为cid列设置primary key约束,由于单列组成主键,故该主键可以定义为列级主键。

create table customers(
    cid char(6) not null primary key,
    ctruename varchar (30) not null,
    cpassword varchar (30) not null,
    csex char(2)not null,
    caddress varchar (50) null,
    cmobile varchar (11) not null,
    cemail varchar(50) null,
    cregisterdate datetime not null
);

多字段主键

『示例』如果在订单详情表中不设置编号,则可以将表中“订单编号 + 商品编号”作为订单详情的唯一标识,在创建数据表 orderdetails时, 为oid和gid的组合设置 primary key约束。

1553476242358.png
create table orderdetails(
    oid char(14) not null,
    gid char(6) not null,
    odprice float not null,
    odnumber int not null,
    primary key (oid, gid)
);

外健约束

外键( foreign key )约束标识表之间的关系,用于强制参照完整性,为表中一列或者多列数据提供参照完整性。

简单说, 外键是连接另一个表的锚点

创建外键的基本语法如下:

[constraint<外键名>] foreign key 列名1 [, 列名2, ...] references <主键表> 主键列1 [主键列2...]

看着挺唬人, 其实很简单, 看个例子

『示例』在创建数据表订单表 orders时,表中的cid(客户编号)引用了客户表 customers中的客户编号,需要建立 orders表和 customers 表之间的关系。其中cid为关联列, customers 表为主键表, orders表为外键表。

1553480030204.png
create table orders(
    oid char(14) not null primary key,
    cid char(6) not null,
    odate datetime not null,
    osum float not null,
    ostatus char(1) not null,
    foreign key(cid) references customers(cid)
)engine=innodb;

唯一约束

『示例』为了保证客户信息表表 customers中的手机号不重复,在创建数据表 customers时,为 cmobile设置 unique约

1553480144712.png
-- 如果存在就删除, 防止重复建表而报错
drop table if exists customers; 

create table customers(
    cid char(6) not null primary key,
    ctruename varchar (30) not null,
    cpassword varchar (30) not null,
    csex char(2)not null,
    caddress varchar (50) null,
    cmobile varchar (11) not null unique,
    cemail varchar(50) null,
    cregisterdate datetime not null
);

默认值约束

『示例』在创建客户信息表 customers时,为用户性别csex 字段设置为默认值“男”。

1553480570751.png
create table customers(
    cid char(6) not null primary key,
    ctruename varchar (30) not null,
    cpassword varchar (30) not null,
    csex char(2)not null default '男',
    caddress varchar (50) null,
    cmobile varchar (11) not null unique,
    cemail varchar(50) null,
    cregisterdate datetime not null
);

非空约束

使用sql语句操作数据表

修改数据表

如需在表中添加列,请使用下面的语法:

alter table table_name add column_name datatype;

『示例』在客户表中新增一个客户昵称字段, 变长11位

alter table customers add cnickname varchar(11);

如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):

alter table table_name drop column column_name

『示例』删除用户昵称字段

alter table customers drop cnickname

要改变表中列的数据类型,请使用下面的语法:

alter table table_name modify column column_name datatype

『示例』假设已经在数据库 bookshop中创建了表customers。要把字段 csex 的数据类型改为int类型。

use bookshop;
alter table customers modify csex int not null;

『示例』假设已经在数据库 bookshop中创建了表 customers。添加一个新的字段 state,类型为cha(1),不允许为空,将字段 address列删除。

use bookshop;
alter table customers add state char() not null, drop column address

修改表名

rename table 语句来更改表的名字。其语法形式如下

rename table tb_name to new_tb_name

『示例』假设数据库 bookshop 中存在 customers 表,将 customers 表重命名为 customers2 表。

use bookshop;
rename table customers to customers2;

删除数据表

删除表是指删除数据库中已存在的表。在 mysql 中通过 drop table 语句来删除表。语法如下:

drop table tb_name;

『示例』假设存在 customers,删除 bookshop数据库中 customers 数据表。

use bookshop;
drop table customers;

管理数据表数据

插入记录

  1. 为表的所有字段插入数据

    使用基本的 insert语句插入数据要求指定表名称和插入到新记录中的值。基本语法格式为

    insert into tb_name (col_list) values (val_list);
    insert into tb_name values (val_list);
    

    『示例』向 bookshop数据库的表 customers插入如下的数据。

1553481712468.png
 ```msyql
 insert into customers
      ( cid, 
        truename, 
        cpassword, 
        csex, 
        address, 
        cmobile, 
        cemai, 
        cregisterdate )
 values
      ( 'c0011', 
        '李 平', 
        '123456', 
        '女', 
        '广东中山市', 
        '1351543876', 
        'liping163.com', 
        '2009-9-6' );
 ```
  1. 为表的指定字段插入数据

    『示例』新顾客信息录入,顾客信息地址 address和电子邮箱cemail尚缺,只能将该顾客的部分信息如表所示添 加到 customers表中。

1553481814639.png
 ```sql
 insert into customers
( cid, truename, password, csex, cmobile, cregisterdate )
 values
( c0012, 张先明, 23456, 男, 13513452312, 2009-10-6 );
 ```
  1. 同时插入多条记录

    『示例』如果想一次性插入多条, 可以这样...

    use bookshop;
    insert into customers values
        (
           'c0013', 
           '韩志国', 
           '123456', 
           '男', 
           null, 
           '13512134256', 
           'hanzo', 
           'al63com', 
           '2010-1-16'
           ), (
           'c00141', 
           '张小明', 
           '123456', 
           '男', 
           null, 
           '13613434256', 
           'zma163.com', 
           '2010-2-24');
    

修改记录

修改表中的全部数据

『示例』修改商品信息表 goods中的数据,将全部书籍的价钱九折出售。

update goods;
set price = price * 0.9;

根据条件修改表中的数据

『示例』修改商品信息表gods中的数据,将书籍存量小于100本的图书再增加50本。完成语句如下所示。

update goods;
set number = number + 50 where number <= 100;

删除记录

根据条件删除表中的数据

『示例』商品编号为“010001”的商品已售完,并且以后不考虑再进货,需要在商品信息表中清除该商品的信息。完 成语句如下所示

delete from goods where gid=010001;

删除表中的全部数据

『示例』删除商品信息表中的所有信息。完成语句如下所示。

delete from goods;

切记, update和delete如果没有where条件, 后果会很严重...

上一篇下一篇

猜你喜欢

热点阅读