数据库基础
数据库基础
SQL语言的组成
- 数据定义语言(DDL)
- 数据操纵语言(DML)
- 数据控制语言(DCL)
- 数据查询语言 (DQL)
- 事务控制语言 (TCL)
- 嵌入式SQL语言的使用规定:规定SQL语句在宿主语言的程序中使用的规则。
创建数据库
CREATE DATABASE 数据库名;
CREATE DATABASE test;
查看服务器上所有数据库
SHOW DATABASES;
删除数据库
DROP DATABASE 数据库名;
DROP DATABASE test;
创建表结构
-
使用 USE 数据库名 ; 来进行指定数据库
-
使用SQL语句创建表结构 CREATE TABLE 表名称( 列名 数据类型 列级完整性约束条件 表级完整性约束条件, 列名 数据类型 列级完整性约束条件 表级完整性约束条件, 列名 数据类型 列级完整性约束条件 表级完整性约束条件 ); CREATE TABLE C ( cno char(3) not null primary key, cname char(50) nuique, credit int default 3 );
查看表结构
查看表基本结构语句
DESCRIBE 表名;
或者:
DESC 表名;
查看详细表结构语句
SHOW CREATE TABLE <表名\G>;
这里使用’’\G’参数是为了使得显示结果更加直观。
修改表结构
添加与删除约束
添加主键约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。主键必须包含唯一的值。主键列不能包含 NULL 值。每个表都应该有一个主键,并且每个表只能有一个主键。
第一种情况:(在创建新的表结构时添加主键约束)
方法一:
CREATE TABLE s(
列名 数据类型 列级完整性约束-->(NOT NULL) 主键-->PRIMARY KEY,
列名 数据类型 列级完整性约束
);
方法二:
CREATE TABLE s(
列名1 数据类型,
列名2 数据类型,
PRIMARY KEY(列名1)
)
方法三:
CREATE TABLE s(
列名1 数据类型,
列名2 数据类型,
CONSTRAINT [主键名字] PRIMARY KEY (列名1),
)
第二种情况:(为已经创建好的表结构添加主键约束)
方法一:
ALTER TABLE [表名] ADD CONSTRAINT [主键名] PRIMARY KEY (列名);
方法二:
ALTER TABLE [表名] ADD PRIMARY KEY (列名);
方法三:
ALTER TABLE [表名] MODIFY [列名][数据类型] PRIMARY KEY;
删除主键约束
状况一:
若表结构中有自增auto_increment,先删除自增
ALTER TABLE [表名] change [列名][列名][数据类型];
再删除主键约束 PRIMARY KEY;
ALTER TABLE [表名] DROP PRIMARY KEY;
状况二:
由于主键约束在一个表中只能有一个,因此不需要指定主键名就可以删除一个表中的主键约束。
ALTER TABLE [表名] DROP PRIMARY KEY;
添加外键约束
外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。
外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性
主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。一个表可以有一个或多个外键,外键可以为空值,若不为空值,则每一个外键的值必须等于主表中主键的某个值。
定义外键时,需要遵守下列规则:
- 主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。
- 必须为主表定义主键。
- **主键不能包含空值,但允许在外键中出现空值。**也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。
- 在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。
- 外键中列的数目必须和主表的主键中列的数目相同。
外键中列的数据类型必须和主表主键中对应列的数据类型相同。
第一种情况:(在创建表结构时添加外键)
父表 s:
CREATE TABLE s
(
name VARCHAR(22) PRIMARY KEY,
id INT (11) NOT NULL
);
子表c:
CREATE TABLE c
(
id INT (11) PRIMARY KEY,
name VARCHAR(22),
CONSTRAINT fk_cname
FOREIGN KEY(cname ) REFERENCES s (id)
);
子表c中cname作为外键关联到父表s的主键 name, fk_cname为外键约束名称可以自定义,外键名称为cname,其依赖于表s的主键name。
注意:
从表的外键关联必须是主表的主键,且主键和外键的数据类型必须一致。
第二种情况:(在修改表时添加外键约束)
外键约束也可以在修改表时添加,但是添加外键约束的前提是:从表中外键列的数据必须与主表中主键列中的数据一致或者没有数据。
ALTER TABLE <数据表名> ADD CONSTRAINT <外键名>
FOREIGN KEY <(列名)> REFERENCE <主表名> (<列名>);
删除外键约束
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;
外键名 ≠ 外键约束名
外键名是真正的列名,而外键约束名是一个标示的名字,相当于外键名的别名。
修改表中字段
添加
在末尾添加
ALTER TABLE <表名> ADD <新的字段名> <数据类型>;
在开头添加
ALTER TABLE <表名> ADD <新的字段名> <数据类型> FIRST;
在任意位置添加
ALTER TABLE <表名> ADD <新的字段名称> <数据类型> AFTER <已存在的字段名>;
这里AFTER 的作用是将新字段添加到某个已有字段的后面。
注意:只能在某个已有字段的后面添加新字段,不能在其前面添加新的字段。
删除
ALTER TABLE <表名> DROP <字段名>;
修改
修改字段名称
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
如果不需要修改字段的数据类型,可以将 <新数据类型> 设为原来的数据类型,但是 <新数据类型> 不能为空。
修改字段数据类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型>;
CHANGE也可以只修改数据类型,实现和MODIFY同样的效果。