1.Mysql数据库-初识Mysql
1.1 创建数据库
连接数据库
在操作数据库之前,需要连接
它,输入命令:mysql -u用户名 -p密码。
在头歌平台上连接数据库还需要加上一句-h127.0.0.1
创建数据库
连接上MySQL之后就可以进行数据库的操作了,接下来我们创建
一个数据库,输入命令:create database 数据库名;,创建完数据库之后我们可以通过show databases;命令查看MySQL中已存在的数据库。
1.2 创建表
在指定数据库中创建表
在MySQL数据库中
是不区分大小写
的,不过数据库的名字
是区分大小写
的
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 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) );
|
语句执行后,会将name
和deptId
字段组合成为表的多字段组合主键。
1.4 外键约束
外部关键字叫做外键,外键就是另一张表中的主键。
问:外键有啥用啊?
答:外键的主要作用就是保持数据的一致性,完整性。
如图有两张表,classId
是T_Student
的外键,是T_class
表的主键,如果我们要删除T_class
表中classId
为1
的字段,程序是会报错的,因为t_student
表中有数据和classId
为1
的字段关联了,是不能删除的,这样子就保证了数据的一致性和完整性,需要先删除T_student表中classId为1的两个字段
。
给表添加外部关键字
:
1
| CONSTRAINT 外键名 FOREIGN KEY(字段名) REFERENCES 主表名(主键名);
|
- 外键类型必须和对应主键类型一致,且主表中一定含主键
- 外码约束的名称一般以
“FK_”
为前缀,这是约定俗成的规则
1.5 添加常用约束
添加唯一约束
:
唯一约束:要求该列唯一
,允许为空
,但是只能有一个空值
。唯一约束可以确保一列或者几列不出现重复值。
定义部门表的部门名称唯一
,SQL语句如下:关键词 UNIQUE
。
1 2 3 4 5
| CREATE TABLE t_dept( id INT PRIMARY KEY, name VARCHAR(22) UNIQUE, location VARCHAR(50) );
|
添加非空约束
:
关键词:NOT NULL
1 2 3 4 5
| CREATE TABLE t_dept( id INT PRIMARY KEY, name VARCHAR(22) NOT NULL, location VARCHAR(50) );
|
使用默认约束
:
默认约束
:即给字段一个默认值。
关键词: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
关键字引出的默认值可以是常量
,也可以是一个表达式
。
设置表的属性值自动增加
:
在数据库应用中,经常有个需求就是,在每次插入新纪录时,系统自动生成字段的主键值
,即:
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约束
CHECK约束的定义方法
:
- 如果约束仅涉及单个列,则该约束既可以定义为列约束,也可以定义为表约束,例如:“性别”列的取值仅限从(“男”,“女”)中取值;
- 如果约束涉及表的多个列,则该约束只能定义为表约束,例如:如果职称为“教授”,则它的薪资应当不低于6000元。这个约束涉及到“职称”和“薪资”两个列的内容,故只能用表约束来实现。
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关键字引出的默认值可以是常量,也可以是一个表达式。
字段名称 |
数据类型 |
备注 |
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
| ALTER TABLE 旧表名 RENAME 新表名;
|
3.2 修改字段名与字段数据类型
- 修改字段名
1
| ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型;
|
小提示: 如果不需要修改字段的数据类型,可以把新字段的数据类型设置为和原来一样,但是!千万不要空着它
- 修改字段数据类型
1
| ALTER TABLE 表名 MODIFY 字段名 数据类型;
|
3.3 添加与删除字段
- 添加字段
1
| ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件] [FIRST|AFTER] 已存在字段名;
|
- 删除字段
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 过虑条件;
|
删除表中的所有行
小提示:TRUNCATE TABLE 语句也可以用来删除表中的所有记录。但是与 DELETE 不同的是,TRUNCATE TABLE 语句直接删除的是表,而不是表中的内容,删除结束后还会重新创建一个表。所以它的执行速度会比 DELETE 语句快。 语法为:TRUNCATE TABLE 表名;