MySQL自学篇(二)

创建数据表

1、创建数据表的语法格式

数据表属于数据库,在创建数据表之前要使用“USE <数据库名>”指定操作是在哪个数据库中进行的,如果没有选择数据库,将会出现“No database selected”的错误

创建数据表的语句为:

CREATE TABLE ,

语法规则为:

CREATE TABLE <表明>

(

字段1 数据类型 [列级约束条件] [默认值],

字段2 数据类型 [列级约束条件] [默认值],

......

[表级约束条件]

);

使用CREATE TABLE创建表的时候,必须指定以下信息:

(1)要创建的表的名称,不区分大小写,不能使用SQL语言中的关键字,如DROP、ALTER、INSERT等。

(2)创建表中每一列的名称、数据类型时,如果要创建多个列,要使用逗号。

范例:

创建员工表employee。

首先选择创建表的数据库:

USE study

创建employee表的SQL语句:

CREATE TABLE employee

(

id INT(11),

name VARCHAR(25),

deptId INT(11),

salary FLOAT,

);

使用SHOW TABLES;查询数据表是否创建成功。

2、主键约束

主键,又称主码,是表中一列或多列的组合。逐渐约束要求主键列的数据唯一,并且不允许为空。主键能唯一的表示表中的一条数据,可以结合外键来定义不同数据表之间的关系,并且可以加快数据查询的速度。主键分为两种类型:单字段主键和多字段联合主键。

单字段主键

单字段主键是有一个字段组成,SQL语句格式分为以下两种情况:

(1)在定义列的同时指定主键,语法规则如下:

字段名 数据类型 PRIMARY  KEY  [默认值]

范例:

定义数据表employee2,其主键为id

CREATE TABLE employee2

(

id   INT (11)  PRIMARY  KEY,

name  VARCHAR(25),

deptId  INT(11),

salary  FLOAT

);

(2)在定义完所有的列之后指定主键

[CONSTRAINT  <约束名>]  PRIMARY  KEY(字段名)

范例:定义数据表employee3,其主键为id,SQL语句如下

CREATE  TABLE  employee3

(

id   INT(11),

name  VARCHAR(25),

deptId  INT(11),

salary  FLOAT,

PRIMARY  KEY(id)

);

多字段联合主键

多字段联合主键是由多个字段联合组成的,语法规则如下:

PRIMARY  KEY  [字段1,字段2,......字段n]

范例:

定义数据表employee4,假设表中没有主键id,为了唯一确定一个员工,可以把name和deptId联合起来作为主键,SQL语句如下:

CREATE  TABLE  employee4

(

name  VARCHAR(25),

deptId  INT(11),

salary  FLOAT,

PRIMARY  KEY (name,deptId)

);

3、使用外键约束

外键用来在两个表之间建立连接,他可以是一列或多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每个外键值必须等于另一个表中主键的某个值。

外键:

外键是表中的一个字段,外键可以不是本表的主键,但是外键应该是另一个表的主键。外加的主要作用就是保存数据引用的完整性,定义外键后,不允许删除在另一表中具有关联关系的行。外键的作用是保持数据的一致性,完整性。例如:部门表department的主键是id,在员工表employee5中有一个键deptId与这个id关联。

主表(父表):对于两个具有关联关系的表而言,相关连字段中主键所在的那个表即是主表

从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的表即是从表

创建外键的语法格式:

[CONSTRAINT  <外键名>]  FOREIGN  KEY  字段名1  [,字段名2,...]

REFERENCES  <主表名>  主键列1  [,主键列2,....]

“外键名”为定义的外键约束的名称。一个表中不能有相同的外键;“字段名”表示子表需要添加外键约束的字段列;“主表名”即被子表外键所依赖的表的名称;“主键列”表示主表中定义的主键列或列组合

范例:

定义数据表emplpyee5,并在employee5表上创建外键约束。

创建一个部门表department:

CREATE TABLE department

(

id  INT(11)  PRIMARY  KEY,

name  VARCHAR(22)  NOT  NULL;

location  VARCHAR(50)

);

定义数据表employee5,让它的键deptId作为外键关联到deparment的主键:

create table employee5

(

id int(11) primary key,

name varchar(25),

deptId int(11),

salary float,

constraint foreign_key_emy_dept foreign key(deptId) references department(id)

);

以上语句执行成功后,在表emplyee5上添加了名为foreign_key_emy_dept的外键约束。外键名称为的deptId,其依赖于主表department的主键id

4、使用非空约束

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

非空约束的语法规则如下:

字段名  数据类型 not null

范例:

定义数据表employee6,指定员工的名称不能为空:

create table employee6

(

id int(11) primary key,

name varchar(25) not null,

deptId int(11),

salary float,

constraint foreign_key_emy_dept2 foreign key(deptId) references department(id)

);

执行后,在employee6中创建了一个name字段,其插入值不能为空。

5、使用唯一性约束

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

非空约束的语法规则如下:

(1)在定义列之后直接定义唯一性约束。语法规则如下:

字段名 数据类型 UNIQUE

范例:创建department2,指定部门名称唯一:

create table department2

(

id int(11) primary key,

name varchar(22) unique,

location varchar(50)

);

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

[CONSTRAINT<约束名>]  UNIQUE  (<字段名>)

范例:

定义数据表department3,指定部门名称唯一。

create table department3

(

id int(11) not null,

name varchar(22),

location varchar(50),

constraint sth unique(name)

);

UNIQUE和PRIMARY KEY的区别:一个表中可以有多个字段声明为UNIQUE,但是只能有一个PRIMARY KEY声明;声明为PRIMARY KEY 的列不允许有空值,但是声明为UNIQUE的字段可以有空值。

6、使用默认约束

默认约束指定某列的默认值。如男同学较多,性别就可以设置为默认的’男‘。如果插入一条新的记录时没有为这个字段赋值,那么系统会自动将这个字段赋值为’男‘。

默认约束的语法格式:

字段名  数据类型  DEFUALT  默认值

范例:

定义数据表employee7,指定员工的部门编号默认为1111:

create table employee7

(

id int(11) primary key,

name varchar(24) not null,

deptId int(11) default 1111,

salary float,

constraint foreign_key_emp_dept4 foreign key(deptId) references department(id);

);

7、设置表中的属性值自动增加

在数据库中,经常希望在每次插入新纪录时,系统自动生成字段的主键值。可以通过为表的主键添加AUTO_INCREMENT关键字来实现。默认的,在MySQL中,AUTO_INCREMENT的初始值是1,每新增一条记录,字段值自动加1.一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。AUTO_INCRE MENT约束的字段可以是任何的整数类型(TINYINT/SAMLLIN/INT/BIGINTD等)

设置自动增加的语法规则:

字段名  数据类型  AUTO_INCREMENT

范例:

create table employee8

(

id int(11) primary key auto_increment,

name varchar(25) not null,

deptId int(11)

);

时间: 2024-08-14 04:30:35

MySQL自学篇(二)的相关文章

MySQL自学篇(一)

一.启动MySQL服务并登录MySQL数据库 一.启动MySQL服务 1.单机[开始]菜单,在弹出的菜单中选择[运行]命令,打开[运行]对话框 2.在文本框中输入"services.msc",单击[确定]按钮,打开Windows的[服务管理器] 3.DOS下输入"net start mysql"启动服务.输入"net stop mysql"关闭服务 二.登录MySQL数据库 1.以Windows方式登录 点击[开始]->[运行]->c

MySQL自学篇(九)——字符串函数(二)

(8)删除指定字符串的函数TRIM(s1 FROM s) TRIM(s1 FROM s2)删除字符串s中两端所有的子字符串s1.s1是可选向,在未指定情况下,删除空格. select trim('xy' from 'xyxboxyokxxyxy'); (9)重复生成字符串的函数REPEAT(s,n) 返回一个有重复的字符串s组成的字符串,字符串s的个数是n.如果n<0,返回空字符串.如果s或n为NULL,则返回NULL select repeat('MySQL',3); (10)空格函数SPAC

Python学习日记(三十四) Mysql数据库篇 二

外键(Foreign Key) 如果今天有一张表上面有很多职务的信息 我们可以通过使用外键的方式去将两张表产生关联 这样的好处能够节省空间,比方说你今天的职务名称很长,在一张表中就要重复的去写这个职务的名字,很浪费空间;除此之外也能起到一个约束的作用. 像department就是外键. 执行代码: create table t1( uid bigint auto_increment primary key, name varchar(32), department_id int, gender

MySQL自学篇(三)

MySQL数据类型介绍 MySQL支持多种数据类型,主要有数值类型.日期类型.字符串类型 数值类型 MySQL主要提供的整数类型有:TINYINT/SMALLINT/MEDIUMINT/INT(INTEGER)/BIGINT 整数类型的属性字段可以添加AUTO_INCREMENT自增约束条件. 1.MySQL中整数类型 整数类型的取值范围 2.浮点数类型和定点数类型 MySQL中使用浮点数和定点数表示小数.浮点数类型有两种,单精度浮点数(FLOAT)和双精度浮点数(DOUBLE).定点类型只有D

MySQL自学篇(五)

常见运算符介绍 1.算数运算符 运算符 作用 + 加法运算 - 减法运算 * 乘法运算 / 除法运算 % 求余运算 2.比较运算符 运算符 作用 = 等于 <=> 安全的等于.可以用于判断NULL < >   != 不等于 <= 小于等于 >= 大于等于 IS NULL 是否为空 IS NOT NULL 是否不为空 LEAST 返回最小值 GRETEST 最大值 BETWEEN AND 两个值之间 ISNULL 与IS NULL等价 IN 判断一个值是IN列中的任意一个

MySQL自学篇(十)——日期函数

日期和时间函数 (1)获取当前日期的函数和时间的函数 CURDATE()和CURRENT_DATE()函数,获取当前日期 select current_date(),curdate(),curdate()+0; curdate()+0   表示将当前时间转化为数值型 CURTIME()和CURRENT_TIME()获取当前时间 select curtime(),current_time(),current_time()+0; current_time()+0   表示将当前时间转化为数值型 (2

MySQL自学篇(八)

2.字符串函数 (1)计算字符串字符数的函数和字符串长度的函数 CHAR_LENGTH(str)返回字符串str所包含的字符个数.一个多字节字符字符算作一个单字符 select char_length('date'),char_length('egg'),char_length('中国'); (2)合并字符串函数CONCAT(s1,s2...).CONCAT_WS(x,s1,s2...) CONCAT(s1,s2...)函数中,如果任一参数为NULL,则返回NULL: CONCAT_WS(x,s

MySQL自学篇(十一)

数据查询 一.单表查询 1.在select语句中使用"*"表示查询所有字段 首先: 创建一张表,由于测试 create table student(id int primary key not null,name varchar(30),sex varchar(4),class varchar(10)); 其次: 插入数据,用于下面的查询操作 insert into student(id,name,sex,class) values (01,'张三','男','班级1'),(02,'李

mysql数据库 (二) mysql数据库的基本操作

上一次安装好mysql数据库以后并没有登录操作,这次来简单介绍下mysql的基本操作 一.访问mysql数据库(经过安装后的初始化过程,mysql数据库的默认管理员用户名为:"root",密码为空:注意此root并非是linux系统管理员的root账号) 1.登录mysql 未设置密码时,mysql后加"-u"指定用户就可以了 如果root设置了密码,还需要在用户名后面加"-p"选项指定密码 2.执行mysql操作语句 注意:每一条mysql语句