Python学习日志0317 MySQL数据库语法及事例汇总(上)数据库的创建与删除、主键与外键、主表与从表

本文介绍SQL的基础操作,包括数据库和数据表的创建、主键与外键的使用、表结构的显示及修改方法。此外还提供了删除数据库和数据表的指令。

一、创建数据库

语法:create database   数据库名

注:此语法为创建一个具有特定名称的数据库,如果该名称已存在,则语句失败

例:创建student数据库

create database student;

二、创建数据表

语法:create table 表名(

             列名1  列类型  [<列的完整性约束>],

             列名2  列类型  [<列的完整性约束>],

             ... ...);

注:①此语法为在当前数据库下创建一个表

       ②列类型为该列的数据类型

例:建立一个表school,其由两列组成,第一列属性为非空,并做为主键,并自增

create table school(
  school_id  int(10) not null auto_increment primary key,
  school_name varchar(20) 				
);

常见完整性约束: PRIMARY  KEY        主码约束(主键)

                              UNIQUE                    唯一性约束

                              NOT  NULL               非空值约束            

                              AUTO_INCREMENT    用于整数列默认自增1

                             UNSIGNED                无符号整数

                             DEFAULT default_value        默认值约束

                             DEFAULT cur_timestamp 创建新记录时默认保存当前时间(仅适用timestamp数据列)

                             ON UPDATE cur_timestamp 修改记录时默认保存当前时间(仅适用timestamp数据列)

                             CHARACTER SET name 指定字符集(仅适用字符串)

数据表类型:在创建一个新的MySQL数据表时,可以为它设置一个类型

            MyISAM:成熟、稳定和易于管理

            InnoDB:加入事物、数据行级锁定机制、外键约束条件、崩溃恢复等新功能

            HEAP:只存在于内存中,可做临时表

例:

create table tmp(…)ENGINE=MyISAM

三、主键和外键

1.主键(primary key):帮助MySQL以最快的速度找到一条特定的数据

    注:①主键必须是唯一的

           ②主键不能为空

           ③主键的数据应尽可能紧凑,最好为整数类型

           ④尽量选择数据更新少的列作为主键

2.外键(foreign key):用于引用另一张表的某条数据

    注:①外键列类型应尽可能与主键列类型保持一致

           ②外键列最好加上not null

例:

主键
create table student1(
	sid int not null auto_increment,
	name varchar(20) not null,
   gender char(1),
	primary key(sid,gender)
);
外键(自动检查外键是否匹配,仅适用InnoDB)
create table score(
	cid int not null auto_increment primary key,
	score int,
	sid int,
	foreign key(sid) references student(sid)
);

四、主表和从表

两个数据表用外键相关联,被约束的表是从表,约束其他表的是主表,外键设置在从表上。

注:①主表中被参考的列通常设置为主键

       ②当有外键约束的时候,添加数据的顺序:先加主表,再添加副表的数据
       ③当有外键约束的时候,修改数据的顺序:先修改副表,再修改主表的数据
       ④当有外键约束的时候,删除数据的顺序:先删除副表,再删除主表的数据

五、显示表结构

语法:desc 表名;

注:显示表的创建结构

六、删除数据库、数据表

1.删除数据库

  语法:语法:drop  database [if exists] db_name

  注:①需格外小心,数据库一旦删除无法恢复

         ②加入if exists字句后,如果删除的数据库不存在,不会报错

2.删除数据表

  语法:drop  table  [if exists]  tab_name [,tab_name]...

  注:①可同时删除多个数据表

          ②加入if exists字句后,如果删除的数据表不存在,不会报错

七、更改数据表

语法:alter table 表名 + 相关语句;

        ①add 列名 建表语句 [first | after 列名]

           注:如果加入 [first | after 列名]语句,则在指定位置插入列,否则在数据表末尾插入列

        ②add primary key (列名)

           注:将指定列设定为主键,如果主键已存在则报错

         ③add foreign key(列名) references 表名(列名)

           注:为表添加一个外键

         ④alter 列名 set default 默认值

           注:可以更改指定列的默认值

         ⑤change 旧列名 新列名  [first | after 列名]

           注:更改列名和列类型

         ⑥drop 列名     可以删除一列

         ⑦drop primary key      可以删除主键

         ⑧rename as 新表名     可以将表名更改

例:

-- 向people表中添加字段address2,类型为varchar,最大长度为100
alter table people add address2 varchar(100);

-- 将people表中的name列默认值改为100:
alter table people alter name set default 100;

-- 向student表增加“入学时间”列,其数据类型为日期型。
-- 注:无论基本表中原来是否已有数据,新增加的列一律为空值。
 alter table student add scome date;

-- 将年龄的数据类型改为半字长整数。
--注:修改原有的列定义有可能会破坏已有数据
 alter table student modify sage smallint;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值