访问手机版  

招聘|合作 登陆|注册

网络工程师培训

当前位置:网络工程师 > 技术课程 > 数据库 > 热点关注 > 数据库新闻

SQL数据库语法详解,看看你都了解吗?

时间:2018-05-09 16:39:14

  详解:

  一、 创建数据库表

  创建数据库表得先创建或者选择数据库,这样表就包含在当前数据库内,方便后续管理。注意:不要重复创建和选择同一数据库,不然会报错!

  1. 创建表的语法形式

  语法结构:create

  table 表名(字段名1,数据类型 列级别约束条件 默认值,字段名2,数据类型 列级别约束条件 默认值,…表级别约束条件);

  案例:创建数据库db_demo1,在数据库中创建表tb_emploee,表中包含字段:id,name,departmentID,salary。

  命令语句:

  查看当前所有数据库show databases;

  创建数据库:create database db_demo1;

  选择数据库:use db_demo1;

  创建包含字段表:create table tb_employee(id int(11),name varchar(25),departmentIdint(11),salary float);

  2. 查看数据库表

  语法结构:use 数据库名;

  show tables;

  案例:查看数据库db_demp1下所有表,SQL语句及运行结果如下:

  命令语句:use db_demo1;

  show tables;

  执行结果:

  看到在数据库db_demo1下有一张表tb_employee,注意如果没有选择数据库db_demo1,直接输入show tables;是会报错的,因为数据库不知道你要查看哪个数据库中的表。如下图:

  3. 定义主键约束

  主键是唯一能够表示一条记录的字段,他们之间是一一对应的关系,就像身份证号码和人之间的关系一样,通过主键可以定义不同数据表之间的关系。主键分为两种类型:单字段主键和多字段联合主键。

  (1) 单字段主键

  ·同时定义单字段主键

  语法结构:create table 表名(字段名,数据类型 列级别约束条件 默认值 primary key,…);

  案例:定义数据表tb_employee2,主键为id,SQL语句如下:

  命令语句:create table tb_employee2(id int(11) primary key,name varchar (25),departmentId int(11),salary float);

  执行结果:

  ·最后定义单字段主键

  语法结构:create table 表名(字段名,数据类型 列级别约束条件 默认值,…primary

  key (字段名));

  案例:定义数据表tb_employee3,主键为id,SQL语句如下:

  命令语句:create table tb_employee3(id int(11),name varchar(25),departmentId int(11),salary float,primary key(id));

  执行结果:

  (2) 多字段联合主键

  语法结构:create table 表名(字段名,数据类型 列级别约束条件 默认值,…primary

  key (字段1,字段2,…,字段n));

  案例:定义数据表tb_employee4,联合主键为name,department,SQL语句如下:

  命令语句:create table tb_employee4(name varchar(25),departmentId int(11),salary float,primary key(name,departmentId));

  执行结果:

  4. 定义外键约束

  外键是表中的一个字段,它不是本表的主键,但对应另外一个表的主键,一个表可以有一个或多个外键,多个外键字段名称不能相同。外键用来在两个表之间建立连接,它可以是一列或多列。

  外键对应的是参照完整性,一个表的外键可以是空值,如果不为空值,怎每一个外键值必须等于另一个表中主键的某个值。

  语法结构:create table 子表名(字段名,数据类型 列级别约束条件 默认值primary key,…constraint 外键约束名称 foreign key(字段) references 父表名(主键字段));

  先创建部门表tb_department1:

  命令语句:create table tb_department1(id int(11) primary key,name varchar(22) not null,location varchar(50));

  案例:定义数据表tb_employee5,让它的键departmentId作为外键连接到tb_department1表的主键id,使用SQL语句如下:

  命令语句:create table tb_employee5(id int(11) primary key,name varchar(25),departmentId int(11),salary float,constraint fk_employee_department1 foreign key(departmentId) references tb_department1(id));

  执行结果:

  5. 定义非空约束

  非空约束是指字段的值不能为空,对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据系统会报错。

  语法结构:create table 表名(字段1 数据类型 默认值 primary key,字段2 数据类型 默认值 not null,…);

  案例:定义数据表tb_employee6,指定员工的名称不能为空,使用的SQL语句如下:

  命令语句:create table tb_employee6(id int(11) primary key,name varchar(25) not null,departmentId int(11),salary float);

  执行结果如下:

  6. 定义唯一性约束

  唯一性要求该列唯一,允许为空,但只能出现一个空值,唯一性能确保一列或几列值不重复。

  (1) 在定义玩列后直接定义唯一约束,语法如下:

  语法结构:create table 表名(字段1 数据类型 默认值 primary key,字段2 数据类型 默认值 unique,…);

  案例:定义数据表tb_department2,指定部门的名称唯一,SQL语句如下:

  命令语句:create table tb_department2(id int(11) primary key,name varchar(22) unique,location varchar(50));

  执行结果如下:

  (2) 在定义完所有列之后指定唯一约束,语法规则如下:

  语法结构:create table 表名(字段1 数据类型 默认值 primary key,字段2 数据类型默认值 ,…,constraint sth unique(字段1,字段2,…));

  案例:定义数据表tb_department3,指定部门的名称唯一,使用的SQL语句如下:

  命令语句:create table tb_department3(id int(11) primary key,name varchar(22),location varchar(50),constraint sth unique(name));

  执行结果如下:

  7. 定义默认值约束

  默认约束可以指定某列的默认值,如果男性同学较多,性别就可以默认为“男”,不赋值情况下,会自动默认性别为“男”。语法规则如下:

  语法结构:create table 表名(字段1 数据类型 默认值 primary key,字段2 数据类型 default 默认值 ,…);

  案例:定义数据表tb_employee7,指定员工部门编号默认为1111,使用的SQL语句如下:

  命令语句:create table tb_employee7(id int(11) primary key,name varchar(25) not null,departmentId int(11) default 1111,salary float);

  执行结果如下:

  8. 定义表属性值的自动增加

  在数据库应用中,经常希望在每次插入新纪录时,系统会自动生成字段的主键值,这可以通过为主键添加AUTO_INCREMENT关键字来实现。MySQL中它的初始值默认为1。注意,一个表只能有一个一个字段使用自增约束,且该字段为主键的一部分。它可以是任意的整数类型(tinyint,smallint,int,bigint等)。

  语法结构:create table 表名(字段1 数据类型 默认值 primary key auto_increment,字段2 数据类型 默认值 ,…);

  案例:定义数据表tb_employee8,指定员工编号自动递增,使用的SQL语句如下:

  命令语句:create table tb_employee8(id int(11) primary key auto_increment,name varchar(25) not null,departmentId int(11),salary float);

  执行结果如下:

  二、 查看数据表结构

  1. 查看表的基本结构

  用describe/desc查看字段信息,其中包括字段名,字段数据类型,是否为主键、是否有默认值等。

  语法结构:describe表名; 或者 desc 表名;

  案例:用describe/desc语句查看表tb_employee1和tb_department3的结构,使用的SQL语句如下:

  命令语句:describe tb_employee;

  desc tb_department3;

  执行结果如下:

  2. 查看表的详细结构

  语法结构:show create table 表名\G;

  注意:如果不加\G也可以执行,显示结果可能非常混乱,加上\G之后,可以显示的更加直观,更易于查看。

  案例:查看tb_employee2的详细信息。

  命令语句:show create table tb_employee2\G;

  执行结果如下: