1.Mysql数据库-初识Mysql

1.1 创建数据库

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

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

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

1.2 创建表

  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;语句列出所有的表。

1.3 使用主键约束

主键: 是表中一列或者多列的组合,主键约束(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.4 外键约束

  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.5 添加常用约束

  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的系统函数,其功能是取当前日期;
  • 语句中,当表名或列名与关键字冲突时,名称前后必须加’号。

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

2.1 CHECK约束

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

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

1
constraint 约束名 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'))
)

2.2 DEFAULT约束

Default约束:用于给表中的字段指定默认值,DEFAULT关键字引出的默认值可以是常量,也可以是一个表达式。

1
DEFAULT 默认值or表达式
字段名称 数据类型 备注
sno char(10) 学号,主码
name varchar(32) 姓名,不允许为空值
sex char(2) 性别,缺省值为’男’
DOB date 出生日期
1
2
3
4
5
6
create table student(
sno char(10) primary key,
name varchar(32) NOT NULL,
sex char(2) default '男',
DOB date
);

2.3 UNIQUE约束

UNIQUE约束:用于保证表中某一列的每一行数据都是唯一的。

1
2
data_type UNIQUE 
CONSTRAINT [约束名] UNIQUE(列1, 列2, ...)
字段名称 数据类型 备注
dno char(10) 院系编号,主码
dname varchar(32) 院系名称,非空,且不允许两个院系重名
1
2
3
4
create table department(
dno char(10) primary key,
dname varchar(32) NOT NULL UNIQUE
);

3.MySQL数据库-数据库和表的基本操作(一)

3.1 查看表结构与修改表名

  1. 查看数据表基本结构
1
DESCRIBE 表名;
  1. 查看数据表详细结构
1
SHOW CREATE TABLE 表名;
  1. 修改表名
1
ALTER TABLE 旧表名 RENAME 新表名;

3.2 修改字段名与字段数据类型

  1. 修改字段名
1
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型;

小提示: 如果不需要修改字段的数据类型,可以把新字段的数据类型设置为和原来一样,但是!千万不要空着它

  1. 修改字段数据类型
1
ALTER TABLE 表名 MODIFY 字段名 数据类型;

3.3 添加与删除字段

  1. 添加字段
1
ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件] [FIRST|AFTER] 已存在字段名;
  1. 删除字段
1
ALTER TABLE 表名 DROP 字段名;

3.4 修改字段顺序

1
ALTER TABLE 表名 MODIFY 字段名 数据类型 FIRST|AFTER 已存在字段名;

3.5 删除表的外键约束

1
ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名;

4.MySQL数据库-数据库和表的基本操作(二)

4.1 插入数据

1
INSERT INTO 表名(字段名) VALUES (内容);
1
insert into MyUser(name,age) values('zhnagsan',18);
1
insert into MyUser(name) values('lisi'),('fawaikuangtu'),('zhangsan');

4.2 更新数据

1
UPDATE 表名 SET 字段名1 = 内容1, 字段名2 = 内容2, 字段名3 = 内容3 WHERE 过滤条件;

4.3 删除数据

1
DELETE FROM 表名 WHERE 过虑条件;

删除表中的所有行

1
DELETE FROM 表名;

小提示:TRUNCATE TABLE 语句也可以用来删除表中的所有记录。但是与 DELETE 不同的是,TRUNCATE TABLE 语句直接删除的是表,而不是表中的内容,删除结束后还会重新创建一个表。所以它的执行速度会比 DELETE 语句快。 语法为:TRUNCATE TABLE 表名;