-
数据库安装
安装教程:https://jingyan.baidu.com/article/642c9d34aa809a644a46f717.html
-
数据库基本操作
1.开启数据库的命令
net start mysql
2.进入mysql的两种方式
明文进入: mysql -uroot -proot
格式:mysql -u账号 -p密码
密文进入:mysql -uroot -p
按enter会提示你输入密码(Enter pssword:),此时你写的密码就会显示为***这样。
3.查询mysql中所有的数据库
SHOW DATABASES;
前面4个数据库是mysql自带的,也是必须的.
4.创建数据库
格式: CREATE DATABASE 数据库库名;
CREATE DATABASE test_1;
5.删除数据库
格式: DROP DATABASE 数据库名;
DROP DATABASE test_1;
-
数据表基本操作
mysql中可以保存很多数据库,一个数据库中可以保存很多表。创建表之前需要确定使用哪一个数据库。
命令 : USE test_1;
1.创建表
格式:
CREATE TABLE 数据表名(
字段名1 数据类型[列级别约束条件],
字段名2 数据类型[列级别约束条件],
字段名3 数据类型[列级别约束条件]
);
解释:可以写成一行,但是可读性会很差。[]里面的内容表示可选.
实例:
创建没有约束的student表
CREATE TABLE student(
id INT(11),
name VARCHAR(12),
age INT(11)
);
创建有约束的student表
六大约束:主键约束、外键约束、非空约束、唯一约束、默认约束、自动增加。
主键约束:PRIMARY KEY(primary key):独一无二(唯一)和不能为空(非空),通俗的讲,就是在表中增加记录时,在该字段下的数据不能重复,不能为空,比如以上面创建的表为例子,在表中增加两条记录,如果id字段用了主键约束。则id不能一样,并且不能为空。一般每张表中度有一个字段为主键,唯一标识这条记录。以后需要找到该条记录也可以同这个主键来确认记录,因为主键是唯一的,并且非空,一张表中每个记录的主键度不一样,所以根据主键也就能找到对应的记录。而不是多条重复的记录。如果没有主键,那么表中就会存在很多重复的记录,那么即浪费存储空间,在查询时也消耗更多资源。
单字段主键约束:以下两种方式都可以
CREATE TABLE student(
id INT(11),
name VARCHAR(12),
age INT(11),
PRIMARY KEY(id)
);
CREATE TABLE student(
id INT(11) PRIMARY KEY,
name VARCHAR(12),
age INT(11)
);
多字段主键约束(复合主键):这个id和name均为主键,说明在以后增加的插入的记录中,id和name不能同时一样,比如说可以是这样。一条记录为id=1,name=yyy、另一条记录为:id=1,name=zzz。 这样是可以的。并不是你们所理解的两个字段分别不可以相同。
CREATE TABLE student(
id INT(11),
name VARCHAR(12),
age INT(11),
PRIMARY KEY(id,name)
);
CREATE TABLE student(
id INT(11) PRIMARY KEY,
name VARCHAR(12) PRIMARY KEY,
age INT(11),
);
外键约束:什么是外键?举个例子就清楚了,有两张表,一张表是emp(员工)表,另一张表是dept(部门)表,一个员工属于一个部门,那么如何通过员工能让我们自己他在哪个部门呢?那就只能在员工表中增加一个字段,能代表员工所在的部门,那该字段就只能是存储dept中的主键了(因为主键是唯一的,才能确实是哪个部门,进而代表员工所在的部门,如果是部门名称,有些部门的名称可能是同名。就不能区分了),像这样的字段,就符合外键的特点,就可以使用外键约束,使该字段只能够存储另一张表的主键。如果不被外键约束,那么该字段就无法保证存储进来的值就一定是另一张表的主键值。
外键约束的特点:
1、外键约束可以描述任意一个字段(包括主键),可以为空,并且一个表中可以有多个外键。但是外键字段中的值必须是另一张表中的主键。2、这样被外键关联的两种表的关系可以称为父子表或者主从表。子表(从表)拥有外键字段的表,父表(主表)被外键字段所指向的表。3、子表被外键约束修饰的字段必须和父表的主键字段的类型一样。
注意:一个表中有被外键修饰的字段,就称该表有外键(是“有外键”。而不是“是外键”),并会给该表中的外键约束取一个名称,所以我们常说的这个表有没有外键,指的不是被外键约束修饰的字段名,而是指这个表是否有存在外键约束。也就是说,不能说这个表的外键是xxx(该表中被外键约束修饰的字段名),这种说法是错误的,但是大多数人已经习惯了这样,虽然影响不大,但是在很多时候需要理解一个东西时,会造成一定的困扰。
格式:
CONSTRAINT 外键名称 FOREIGN KEY(被外键约束的字段名称) REFERENCES 主表名(主键字段)
CREATE TABLE tableA (
id INT(11),
name VARCHAR(22),
location VARCHAR(50),
PRIMARY KEY(id)
);
CREATE TABLE tableB(
id INT(11),
name VARCHAR(22) NOT NULL,
deptId INT(11),
PRIMARY KEY(id),
CONSTRAINT tableA_tableB_1 FOREIGH KEY(deptId) REFERENCES tableA(id)
);
解释:tableB中有一个名为tableA_tableB_1的外键关联了tableA和tableB两个表,
被外键约束修饰的字段为tableB中的deptId,主键字段为tableA中的id
非空约束:NOT NULL. 被该约束修饰了的字段,就不能为空,主键约束中就包括了这个约束
CREATE TABLE tableA(
id INT(11),
name VARCHAR(22) NOT NULL,
location VARCHAR(50),
PRIMARY KEY(id)
);
唯一约束:UNIQUE 被唯一约束修饰了的字段,表示该字段中的值唯一,不能有相同的值,通俗点讲,就好比插入两条记录,这两条记录中处于该字段的值不能是一样的。
CREATE TABLE tableA (
id INT(11),
name VARCHAR(22) UNIQUE,
location VARCHAR(50),
PRIMARY KEY(id)
);
默认约束:Default 指定这一列的默认值为多少,比如,男性同学比较多,性别就可以设置为默认男,如果插入一行记录时,性别没有填,那么就默认加上男 。
CREATE TABLE table
(
id INT(11) PRIMARY KEY,
name VARCHAR(22) NOT NULL,
deptId INT(11) DEFAULT 1111,
salary FLOAT
);
自动增加:AUTO_INCREMENT 一个表只能一个字段使用AUTO_INCREMENT,并且使用这个约束的字段只能是整数类型(任意的整数类型 TINYINT,SMALLIN,INT,BIGINT),默认值是1,也就是说从1开始增加的。一般就是给主键使用的,自动增加,使每个主键的值度不一样,并且不用我们自己管理,让主键自己自动生成。
CREATE TABLE table(
id INT(11) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(22) NOT NULL
);
2.查询表结构
- 查看表基本结构语句
格式: DESCRIBE 表名
DESC 表名
这两个的功能是一样的,简写了单词describe
DESCRIBE student;
- 查看创建表的语句
格式1:SHOW CREATE TABLE 表名
SHOW CREATE TABLE student;
格式2:SHOW CREATE TABLE 表名\G
SHOW CREATE TABLE student\G;
- 修改数据表
修改数据表包括:对表中字段的增加、删除、修改。 在这个里面用的关键字为 ALTER。
修改表名:
格式:ALTER TABLE<旧表名> RENAME[TO]<新表名>;
将student表名改为student1
ALTER TABLE student RENAME TO student1;
修改表中的字段名:
格式:ALTER TABLE<表名> CHANGE<旧字段名><新字段名><新数据类型>
将student表中的name字段名改为 username
ALTER TABLE student CHANGE name username VARCHAR(30);
修改表中的数据类型:
格式:ALTER TABLE<表名> MODIFY<字段名><数据类型>
ALTER TABLE student MODIFY username VARCHAR(20);
修改字段的排列位置:
方式1:ALTER TABLE<表名> MODIFY<字段1><数据类型> FIRST|AFTER<字段2>
解释:将字段1的位置放到第一,或者放到指定字段2的后面
ALTER TABLE student MODIFY username VARCHAR(20) AFTER age;
方式2:ALTER TABLE<表名> CHANGE<字段1><字段2><数据类型> FIRST|AFTER<字段3>
解释:其实是一样的,将是字段2覆盖字段1,然后在进行排序
ALTER TABLE student CHANGE username username VARCHAR(20) AFTER age;
添加字段:
格式:
ALTER TABLE<表名称> ADD<新字段名><数据类型>[约束条件][FIRST|AFTER<已存在的表名>]
解释:在一个特定位置增加一个新的字段,如果不指定位置,默认是最后一个。
ALTER TABLE student ADD sex VARCHAR(11);
删除字段:
格式:ALTER TABLE<表名称> DROP<字段名>;
ALTER TABLE student DROP sex;
删除表的外键约束:
格式:ALTER TABLE<表名称> DROP FOREIGN KEY<外键约束名>
注意:外键约束名 指的不是被外键约束修饰的字段名,切记,而是我们在创建外键约束关系时取的名字。
更改表的存储引擎:
格式:ALTER TABLE<表名> ENGINE=<更改后的存储引擎名>
-
删除表
删除无关联表:
删除被其他表关联的主表:这个是比较重要的一点,在有外键关联关系的两张表中,如果删除主表,那么是删不掉的,并且会报错。此时两种解决方法:1、先删除你子表,然后在删除父表,这样就达到了删除父表的目的,但是子表也要被删除2、先解除外键关系,然后在删除父表,这样也能达到目的,并且保留了子表,只删除我们不需要的父表。在3.7中就讲解了如何删除外键关系。