数据库(MySQL)表基本操作
思前想后,最终还是把博客的名字改成了数据库表基本操作,以前叫SQL语句⼤全,感觉⽤“⼤全”这个名词太⼤了,⽽⽂章中介绍的内容有限⽽且也不深。如果您在阅读的过程中发现有不完善的地⽅,欢迎补充说明。
  ⼀提笔就讲创建数据库,感觉好像是从半道上开始的。创建数据库前总得安装数据库吧,不管是SQL Server、mysql、Oracle。但是如果这样写下去,不知道这篇博客还能不能完成,那就默认是安装好数据库了吧,本⽚博客如下都是使⽤mysql数据库,⾸先是登⼊数据库操作(mysql -u root -p)。
1. 查看当前所存在的数据库:show databases;查询结果中的mysql数据库是必须的,⽤来描述⽤户的访问权限;
information_schema数据库提供了访问数据库元数据的⽅式,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等;performance_schema⽤于收集数据库服务器性能参数。
2. 创建新的数据库:create database test_db;test_db为要创建的数据库名称,该名称不能与现有的数据库重名。
3. 查看创建好的数据库定义:show create database test_db;
4. 删除数据库:drop database test_db;test_db为要删除的数据库名称。
5. 查看数据库存储引擎:show engines;Support列为YES表⽰引擎可⽤,DEFAULT表⽰数据库当前默认的引擎。可以通
过my.ini⽂件设置数据库的默认存储引擎。
  在数据库中,数据表是最重要、最基本的操作对象,数据存储的基本单位。本节将介绍数据表的增、删、改、查操作,使读者能够熟练掌握数据表的基本操作,理解约束、默认和规则的含义。
创建数据表:数据表属于数据库,在创建数据表前,应该使⽤use test_db;指定在哪个数据库(test_db)下进⾏操作,如果没有指定数据库会抛出No database selected错误。创建数据表的语法规则如下:
create table <;表名>(
字段名数据类型 [列级别约束条件] [默认值],
...
[表级别约束条件]
);
1. 没有任何约束员⼯表的创建:create table user(id int(11), name varchar(20), sex tinyint, age tinyint, salary float);执⾏该
语句后,会创建⼀个名称为user的数据表。
2. 使⽤主键约束创建员⼯表,主键是表中⼀列或多列的组合,主键约束要求主键列的数据唯⼀且不空。主键能够唯⼀地标
识表中的⼀条记录,可以结合外键来定义不同数据表间的关系,并且可以加快数据库查询的速度。主键分为两种:单字段主键和多字段联合主键。
单字段主键: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));
3. 使⽤外键约束:外键⽤来在两个表之间建⽴链接,可以是⼀列或者多列。⼀个表可以有⼀个或者多个外键。外键对应的
是参照完整性,⼀个表的外键可以为空,若不为空,则每个外键值必须等于另⼀个表中主键的某个值。外键可以不是本表的主键,但对应另⼀个表的主键,外键主要作⽤是保证数据引⽤的完整性,定
义外键后,不允许删除在另⼀个表中具有关联关系的⾏。
创建外键规则:[constraint <;外键名>] foreign key 字段名1[,字段名2,...] references<;主表名> 主键列1[,主键列
2,...],外键名为定义的外键约束的名称,⼀个表中不能有相同名称的外键。如下以学⽣表、班级表、课程表、成绩表为例说明。
kate bush创建班级表: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));
创建成绩表:create table tb_score(sID int, cID int, score float, primary key(sID,cID), constraint fk_student foreign key(sID) references tb_student(id), constraint fk_course foreign key(cID) references tb_course(id));
4. 使⽤⾮空约束:⾮空约束指字段的值不为空,对于指定⾮空约束的字段,如果⽤户在添加数据时没有指定值,数据库系
满满的年味的句子
统会报错。约束规则为:字段名数据类型 not null,语句:create table user2(id int primary key, name varchar(20) not null);
5. 使⽤唯⼀性约束:唯⼀性约束要求该列唯⼀,允许为空,但只能出现⼀个空值,唯⼀性约束可以确保⼀列或者⼏列不出
现重复值。约束规则:字段名数据类型 unique,语句:create table user3(id int primary key, name varchar(22)
unique);⼀个表中可以有多个字段声明为unique,但只能有⼀个为primary key,primary key的列不允许为空,⽽unique 可以存在⼀个null。
6. 使⽤默认约束:指定某列的默认值。默认约束的语法规则:字段名数据类型 default 默认值,默认约束语句:create
table user4(id int primary key, name varchar(22), salary float default 3000.00);指定员⼯默认薪⽔为3000元。
7. 设置表的属性值⾃动增加,通过为表的主键添加auto_increment关键字来实现。默认mysql中auto_increment的初始值
为1,每增加⼀条新记录,字段值⾃动加1,⼀个表只能有⼀个字段使⽤auto_increment约束,且该字段必须为主键的⼀部分。auto_increment约束的字段可以是任何整数类型(tinyint、smallint、int、bigint等)。语法规则:字段名数据类型 auto_increment。sql语句:create table user5(id int primary key auto_increment, name varchar(20), salary float);
  使⽤sql语句创建数据库表之后,可以查看表结构的定义,以确认表的定义是否正确,在mysql中可以使⽤describe和show create table语句,本节将对两个语句分别进⾏介绍。
乔一成和叶小朗怎么离婚的查看表基本结构语句describe
describe 表名;或者desc 表名;
Null:表⽰该列是否可以存储null值
那英老公是谁
key:表⽰该列是否已编制索引,PRI表⽰该列是表主键的⼀部分,MUL表⽰在列中某个给定值允许出现多次
Default:如果该字段为null,表⽰该没有默认值
Extra:表⽰可以获取的与给定列有关的附加信息,例如auto_increment等。
查看表详细结构语句show create table
语法格式:show create table 表名\G;
  修改表是指修改数据库中已经存在的数据表的结构。mysql使⽤alter table语句修改表。常⽤的修改表操作有:修改表名、修改字段数据类型、或字段名、增加或删除字段、修改字段的排列位置、更改表的存储引擎、删除表的外键约束等。本节将对和修改表相关的操作进⾏说明。
修改表名
mysql通过alter table语句来实现表名的修改,具体语法规则:alter table <;旧表名> rename [to] <;新表名>;其中to为可选参数。
修改字段的数据类型
把字段的数据类型转换成另⼀种数据类型,mysql中的语法规则:alter table <;表名> modify <;字段名> <;数据类型>;
修改字段名
mysql中修改字段名的语法规则为:alter table <;表名> change <;旧字段名><;新字段名><;新数据类型>;其中旧字段名指修改前的字段名,新数据类型为修改后的数据类型,如果不需要修改字段的数据类型,可以将新数据类型设置成原来⼀样即可,但数据类型不能为空。同时需要注意该语句不能修改主键的字段名。
添加字段
  随着业务需求的变化,可能需要在已经存在的表中添加新的字段,⼀个完整的字段包括字段名、数据类型、完整性约束,添加字段的语法格式如下:
  alter table <;表名> add <;新字段名> <;数据类型> [约束条件][first|after 以存在字段名];
  新字段名为需要添加的字段名称,first为可选参数,其作⽤是将新添加的字段设置为表的第⼀个字段,after为可选参数,其作⽤是将新添加的字段添加到指定的“已存在字段名”的后⾯,如果没有这两个参数,则默认将新添加的字段设置为数据表的最后列。
删除字段
删除字段是将数据表中的某个字段从表中删除,语法格式为:alter table <;表名> drop <;字段名>;
修改字段的排列位置
  在数据表创建完成之后,字段在表中的排列顺序就已经确定了,但表的结构并不是完全不可变的,可以通过alter table来改变表中字段的相对位置,语法格式如下:
alter table<;表名>modify<;字段1><;数据类型>first|after<;字段2>;
  字段1指要修改位置的字段,数据类型指字段1的数据类型,first为可选参数,指将字段1修改为表的第⼀个字段,after<;字段2>指将字段1插⼊到字段2的后⾯。
删除表的外键约束
  对于数据库中定义的外键,如果不在需要,可以将其删除。外键⼀旦删除,就会解除主表和从表之间的关联关系,外键删除语法为:
领导祝酒词>演员童谣照片
alter table <;表名> drop foreign key <;外键约束名>;
  外键约束名是在定义表时constraint关键字后⾯的参数,详细见创建数据表章节。