mysql复习

MySQL复习:

创建表

表约束

对数据的增删改查

表关系的实现

查看有哪些数据库:

SHOW DATABASES;

创建数据库

CREATE  {DATABASE | SCHEMA} [IF NOT EXISTS] db_name;

删除数据库

DROP {DATABASE | SCHEMA} [IF EXISTS] dbname;

打开数据库

USE 数据库名称

查看当前数据库中的数据表

SHOW TABLES

查看mysql这个数据库中的数据表

SHOW TABLES FROM 'mysql'

创建数据表

CREATE TABLE [IF NOT EXISTS] table_name(

  column_name data_type,

)

例:

mysql> CREATE TABLE `tb1`(

   -> `id` INT,

   -> `name` VARCHAR(20)

   -> );

Query OK, 0 rows affected (0.02 sec)

mysql>

查看数据表结构DESCRIBE tb_name;SHOW COLUMNS FROM 'tb_name';

删除数据表

DROP TABLE 'tablename';

表约束

非空约束

唯一约束

主键约束

默认约束

外键约束

例:

mysql> CREATE TABLE tb2(

   -> `id` INT PRIMARY KEY AUTO_INCREMENT,

   -> `name` VARCHAR(20) NOT NULL UNIQUE KEY,

   -> `age` INT DEFAULT 18

   -> );

数据操作

插入数据

INSERT [INTO] table_name [(column_name,...)]

{VALUES|VALUE} ({expr|DEFAULT},...),(...),...;

例:

mysql> INSERT INTO `tb2`(`name`)

   -> VALUES('rose'),

   ->       ('tizi')

   -> ;

Query OK, 2 rows affected (0.08 sec)

Records: 2  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM `tb2`;

+----+-------+------+

| id | name  | age  |

+----+-------+------+

|  1 | rose  |   18 |

|  2 | tizi  |   18 |

+----+-------+------+

2 rows in set (0.00 sec)

mysql> INSERT INTO `tb2` SET `name`='taka';

Query OK, 1 row affected (0.07 sec)

mysql> INSERT INTO `tb2` SET `name`='budong',`age`=24;

Query OK, 1 row affected (0.07 sec)

更新数据

UPDATE  tb_name

SET col_name1={expr1|DEFAULT}[,col_name2={expr2|DEFAULT}]...

[WHERE where_condition];

例:

mysql> UPDATE `tb2` SET `age`=`age`+1;

Query OK, 3 rows affected (0.40 sec)

Rows matched: 3  Changed: 3  Warnings: 0

mysql> UPDATE tb2 SET age=20 WHERE name='taka';

Query OK, 1 row affected (0.39 sec)

Rows matched: 1  Changed: 1  Warnings: 0

删除数据

DELETE FROM tbl_name [WHERE where_conditon];

例:

mysql> DELETE FROM tb2 WHERE id = 3;

Query OK, 1 row affected (0.40 sec)

注:不添加WHERE则会删除全部记录

表关系

外键约束FOREIGN KEY

外键约束FOREIGN KEY,保持数据一致性,完整性实现一对一或一对多关系。

一对多关系

举例,学校中一个学院可以有很多的学生,而一个学生只属于某一个学院(通常情况下),学院与学生之间的关系就是一对多的关系,通过外键关联来实现这种关系。

例:

创建学院表:

mysql> CREATE TABLE `department`(

   -> `id` INT PRIMARY KEY AUTO_INCREMENT,

   -> `name` VARCHAR(15) NOT NULL

   -> );

Query OK, 0 rows affected (0.61 sec)

创建学生表:

mysql> CREATE TABLE `student`(

   -> `id` INT PRIMARY KEY AUTO_INCREMENT,

   -> `name` VARCHAR(20) NOT NULL,

   -> `dept_id` INT,

   -> FOREIGN KEY (`dept_id`) REFERENCES `department`(`id`)

   -> );

Query OK, 0 rows affected (0.51 sec)

插入数据

mysql> INSERT INTO `department`(`name`)

   -> VALUES('A'),

   ->       ('B')

   -> ;

Query OK, 2 rows affected (0.10 sec)

Records: 2  Duplicates: 0  Warnings: 0

mysql> INSERT INTO `student`(`name`,`dept_id`)

   -> VALUES('s1',1),

   ->       ('s2',2),

   ->       ('s3',2)

   -> ;

Query OK, 3 rows affected (0.08 sec)

Records: 3  Duplicates: 0  Warnings: 0

一对一关系

举例,学生表中有学号、姓名、学院,但学生还有些比如电话,家庭住址等比较私密的信息,这些信息不会放在学生表当中,会新建一个学生的详细信息表来存放。这时的学生表和学生的详细信息表两者的关系就是一对一的关系,因为一个学生只有一条详细信息。用外键加主键的方式来实现这种关系。外键+唯一键

例:

学生表:

mysql> DESC `student`;

+---------+-------------+------+-----+---------+----------------+

| Field   | Type        | Null | Key | Default | Extra          |

+---------+-------------+------+-----+---------+----------------+

| id      | int(11)     | NO   | PRI | NULL    | auto_increment |

| name    | varchar(20) | NO   |     | NULL    |                |

| dept_id | int(11)     | YES  | MUL | NULL    |                |

+---------+-------------+------+-----+---------+----------------+

3 rows in set (0.06 sec)

建立详细学生表:

mysql> CREATE TABLE `student_details`(

   -> `id` INT PRIMARY KEY,

   -> `age` INT,

   -> `gender` CHAR(1),

   -> FOREIGN KEY (`id`) REFERENCES `student`(`id`)

   -> );

Query OK, 0 rows affected (0.67 sec)

mysql>

多对多关系

举例,学生要报名选修课,一个学生可以报名多门课程,一个课程有很多的学生报名,那么学生表和课程表两者就形成了多对多关系。对于多对多关系,需要创建第三张关系表,关系表中通过外键加主键的形式实现这种关系。

例:

建立课程表:

mysql> CREATE TABLE `course`(

   -> `id` INT PRIMARY KEY AUTO_INCREMENT,

   -> `name` VARCHAR(20) NOT NULL,

   -> );

Query OK, 0 rows affected (1.18 sec)

学生与课程多对多关系表

mysql> CREATE TABLE `select`(

   -> `s_id` INT,

   -> `crs_id` INT,

   -> PRIMARY KEY (`s_id`,`crs_id`),

   -> FOREIGN KEY (`s_id`) REFERENCES `student` (`id`),

   -> FOREIGN KEY (`crs_id`) REFERENCES `course` (`id`)

   -> );

Query OK, 0 rows affected (0.50 sec)

你可能感兴趣的:(mysql复习)