数据库表基本操作
思前想后,最终还是把文章标题改成了数据库表基本操作,以前叫SQL语句大全,感觉用“大全”这个名词太大了,而文章中介绍的内容有限而且也不深。如果您在阅读的过程中发现有不完善的地方,欢迎补充说明。
创建数据库 一提笔就讲创建数据库,感觉好像是从半道上开始的。创建数据库前总得安装数据库吧,不管是SQL Server、MySQL、Oracle。但是如果这样写下去,不知道这篇博客还能不能完成,那就默认是安装好数据库了吧,本文如下都是使用mysql数据库,首先是登入数据库操作(mysql -u root -p)。
查看当前所存在的数据库:show databases;查询结果中的mysql数据库是必须的,用来描述用户的访问权限;information_schema数据库提供了访问数据库元数据的方式,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等;performance_schema用于收集数据库服务器性能参数。
创建新的数据库:create database test_db;test_db为要创建的数据库名称,该名称不能与现有的数据库重名。
查看创建好的数据库定义:show create database test_db;
删除数据库:drop database test_db;test_db为要删除的数据库名称。
查看数据库存储引擎:show engines;Support列为YES表示引擎可用,DEFAULT表示数据库当前默认的引擎。可以通过my.ini文件设置数据库的默认存储引擎。
创建数据表
在数据库中,数据表是最重要、最基本的操作对象,数据存储的基本单位。本节将介绍数据表的增、删、改、查操作,使读者能够熟练掌握数据表的基本操作,理解约束、默认和规则的含义。
创建数据表:数据表属于数据库,在创建数据表前,应该使用use test_db;指定在哪个数据库(test_db)下进行操作,如果没有指定数据库会抛出No database selected错误。创建数据表的语法规则如下:
create table <表名>(
字段名 数据类型 [列级别约束条件] [默认值],
...
[表级别约束条件]
);
没有任何约束员工表的创建:create table user(id int(11), name varchar(20), sex tinyint, age tinyint, salary float);执行该语句后,会创建一个名称为user的数据表。
使用主键约束创建员工表,主键是表中一列或多列的组合,主键约束要求主键列的数据唯一且不空。主键能够唯一地标识表中的一条记录,可以结合外键来定义不同数据表间的关系,并且可以加快数据库查询的速度。主键分为两种:单字段主键和多字段联合主键。
单字段主键:create table user1(id int(11) primary key, name varchar(20), sex tinyint, age tinyint, salary float);同:create table user1(id int(11), name varchar(20), sex tinyint, age tinyint, salary float, primary key(id));
多字段主键:create table user1(name varchar(20), sex tinyint, age tinyint, salary float, primary key(name,age));
使用外键约束:外键用来在两个表之间建立链接,可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性,一个表的外键可以为空,若不为空,则每个外键值必须等于另一个表中主键的某个值。外键可以不是本表的主键,但对应另一个表的主键,外键主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的行。
创建外键规则:[constraint <外键名>] foreign key 字段名1[,字段名2,...] references<主表名> 主键列1[,主键列2,...],外键名为定义的外键约束的名称,一个表中不能有相同名称的外键。如下以学生表、班级表、课程表、成绩表为例说明。
创建班级表:create table tb_class(id int primary key, name varchar(20));
创建课程表:create table tb_course(id int primary key, name varchar(20));
创建学生表:create table tb_student(id int primary key, name varchar(20), classID int, constraint fk_class foreign key(classID) references tb_class(id));