Mysql数据库-初识Mysql

创建数据库

  1. 连接数据库
    在操作数据库之前,需要连接它,输入命令:mysql -u用户名 -p密码

在头歌平台上连接数据库还需要加上一句-h127.0.0.1

  1. 创建数据库
    连接上MySQL之后就可以进行数据库的操作了,接下来我们创建一个数据库,输入命令:create database 数据库名;,创建完数据库之后我们可以通过show databases;命令查看MySQL中已存在的数据库。

创建表

  1. 在指定数据库中创建表
  • 首先创建数据库
1
CREATE DATABASE 数据库名;

MySQL数据库中不区分大小写的,不过数据库的名字区分大小写

  • 然后选择数据库
1
USE 数据库名;
  • 最后创建表
1
2
3
4
5
CREATE TABLE 表名(
字段名,数据类型,
字段名,数据类型,
.....
);

表创建好之后可以使用如下语句查看表的基本结构,用来验证是否创建成功

1
2
3
DESCRIBE 表名;
简写:
DESC 表名;
字段名称 数据类型 备注
id INT 员工编号
name VARCHAR(32) 员工名称
deptId INT 所在部门标号
salary FLOAT 工资
1
2
3
4
5
6
CREATE TABLE 表名(
id INT,
name VARCHAR(32),
deptId INT,
salary FLOAT
);

表创建好之后可以使用show tables;语句列出所有的表。

使用主键约束

主键: 是表中一列或者多列的组合,主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空,主键能够唯一的标识表中的每一条记录,可以结合外键来定义与不同数据表之间的关系。

理解主键,数据库中的表可以存放很多数据,如果把表中的每一个数据比作一个人的话,那么表的主键就可以看做是人的身份证

  1. 添加主键约束
  • 在定义列的同时指定主键
1
2
3
4
CREATE TABLE 表名(
id INT PRIMARY KEY,
name VARCHAR(32)
);
  • 在定义完所有列之后指定主键
1
2
3
4
5
CREATE TABLE 表名(
id INT ,
name VARCHAR(32),
PRIMARY KEY(id)
);
  • 多字段联合主键(将几个字段联合在一起作为主键)
1
2
3
4
5
6
CREATE TABLE 表名(
name VARCHAR(32),
deptId INT,
salary FLOAT,
PRIMARY KEY(name,deptId)
);

语句执行后,会将namedeptId字段组合成为表的多字段组合主键。

输入 drop table 表名;可以删除表。

外键约束

  1. 外部关键字叫做外键,外键就是另一张表中的主键。
  • 问:外键有啥用啊?
    答:外键的主要作用就是保持数据的一致性,完整性。
    code
    如图有两张表,classIdT_Student的外键,是T_class表的主键,如果我们要删除T_class表中classId1的字段,程序是会报错的,因为t_student表中有数据和classId1的字段关联了,是不能删除的,这样子就保证了数据的一致性和完整性,需要先删除T_student表中classId为1的两个字段
  1. 给表添加外部关键字
1
CONSTRAINT 外键名 FOREIGN KEY(字段名) REFERENCES 主表名(主键名);
  1. 外键类型必须和对应主键类型一致,且主表中一定含主键
  2. 外码约束的名称一般以“FK_”为前缀,这是约定俗成的规则

添加常用约束

  1. 添加唯一约束:
    唯一约束:要求该列唯一允许为空,但是只能有一个空值。唯一约束可以确保一列或者几列不出现重复值。
    定义部门表的部门名称唯一,SQL语句如下:关键词 UNIQUE
1
2
3
4
5
CREATE TABLE t_dept(
id INT PRIMARY KEY,
name VARCHAR(22) UNIQUE,
location VARCHAR(50)
);
  1. 添加非空约束:
    关键词:NOT NULL
1
2
3
4
5
CREATE TABLE t_dept(
id INT PRIMARY KEY,
name VARCHAR(22) NOT NULL,
location VARCHAR(50)
);
  1. 使用默认约束
    默认约束:即给字段一个默认值。
    关键词:DEFAULT
1
2
3
4
5
CREATE TABLE t_emp(
id INT PRIMARY KEY,
name VARCHAR(22),
sex VARCHAR(2) DEFAULT '男'
) DEFAULT CHARSET=utf8;
  • 如果是添加字符串型默认值要使用单引号,如果是整型则不需要加任何符号。
  • 如果要添加的是中文默认值,则需要加上DEFAULT CHARSET=utf8;使用英文字符则不需要。
  • DEFAULT关键字引出的默认值可以是常量,也可以是一个表达式
  1. 设置表的属性值自动增加
    在数据库应用中,经常有个需求就是,在每次插入新纪录时,系统自动生成字段的主键值,即:
id name
1 tom
2 jerry
ID 每次自动加1 姓名
…… XXX
10 XXX

关键词:AUTO_INCREMENT,默认情况下初始值和增量都为1

1
2
3
4
5
CREATE TABLE t_tmp
(
id int PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32)
);
  • 想删掉表重新创建,使用DROP TABLE 表名;删除表
  • AUTO_INCREMENT约束仅用于整数列;
  • DEFAULT约束指定默认值为表达式时,表达式要写在一对括弧里;
  • curdate()是MySQL的系统函数,其功能是取当前日期;
  • 语句中,当表名或列名与关键字冲突时,名称前后必须加’号。

Mysql-数据库、表与完整性约束的定义(Create)

CHECK约束

  1. CHECK约束的定义方法
    • 如果约束仅涉及单个列,则该约束既可以定义为列约束,也可以定义为表约束,例如:“性别”列的取值仅限从(“男”,“女”)中取值;
    • 如果约束涉及表的多个列,则该约束只能定义为表约束,例如:如果职称为“教授”,则它的薪资应当不低于6000元。这个约束涉及到“职称”和“薪资”两个列的内容,故只能用表约束来实现。
  2. CHECK约束的语法

CHECK约束作列约束时,紧跟在列定义之后定义(即跟在列名,列数据类型之后申明);CHECK约束作表约束时,单独申明

1
CHECK(条件表达式)
1
2
3
4
5
6
create table student(
sid char(12) primary key,
name varchar(32),
sex char(1) constraint CK_student_sex CHECK(sex in ('M','F')),
dob date
);
1
2
3
4
5
6
7
create table student(
sid char(12) primary key,
name varchar(32),
sex char(1),
dob date,
constraint CK_student_sex CHECK(sex in ('M','F'))
)