通过sql语句对MySql数据库的基本操作

一、数据库的基本操作

1    CREATE DATABASE  mybookstore;
2      DROP DATABASE  mybookstore;

二、表的基本操作

  1、创建表

      insert into 表名(字段名1,字段名2) values(值1,值2);

1    CREATE TABLE student(
2          id INT,
3          `name` VARCHAR(50)
4     );

  2、删除表

      delete from 表名 where语句;

    DROP TABLE student;

  3、修改表

      update 表名 set 字段名1=字段值,字段名2=字段值 where语句

    update dept set dept_name='人事部门' where id=4

  4、查询表

      select 字段名1,字段名2 from 表名 where语句

    SELECT * FROM stu WHERE id=3;

三、表查询关键字

  1、关键字使用及SQL语句顺序

      select 列名1,列名2...

      from 表1

      join 表2

      on 连接条件

      where 过滤条件

      group by 分组条件1,分组条件2

      having 聚合函数过滤

      order by 排序列1,排序列2

      limit 分页

  2、执行顺序:from—>on—>join—>where—>group by—>with—>having—>select—>distinct—>order by —>limit

四、约束

  1、主键[primary key ]:可以唯一的表示一行数据,可以快捷的检索到一条数据!(唯一、非空、可以被引用

  2、自增:auto_increment:自增仅仅适用于数值类型的值!

  3、非空:not null :表示当前字段值不能为null

  4、唯一:unique:表示当前字段值必须是唯一的

  5、注意一点:约束必须放在列名类型后面,至于多个约束的顺序无所谓!

  6、外键:

    外键关联指的是将一个表中的列和另一个表的主键进行关联!    

      1)一对一
        经典案例:夫妻

 1 /*一对一:夫妻*/
 2 CREATE TABLE husband(
 3     id INT PRIMARY KEY AUTO_INCREMENT,
 4     `name` VARCHAR(20) NOT NULL
 5 );
 6 
 7 INSERT INTO husband VALUES(1,'张三');
 8 INSERT INTO husband VALUES(2,'王五');
 9 
10 CREATE TABLE wife(
11     id INT PRIMARY KEY AUTO_INCREMENT,
12     `name` VARCHAR(20) NOT NULL,
13     FOREIGN KEY(id) REFERENCES husband(id)
14 );
15 INSERT INTO wife VALUES(1,'李四');
16 INSERT INTO wife VALUES(2,'赵六');
17 INSERT INTO wife VALUES(1,'李静');   /*由于一对一约束,此行插入失败*/

       2)一对多[多对一]

        通常是在多的一端关联一的主键!通常将外键建在多的一端!

        经典案例:部门表与员工表 dept& emp

 1 /*一对多:员工-部门*/
 2 DROP TABLE dept;
 3 CREATE TABLE dept(
 4     id INT PRIMARY KEY AUTO_INCREMENT,
 5     dept_name VARCHAR(10) NOT NULL UNIQUE
 6 );
 7 INSERT INTO dept VALUES(NULL,'开发部门');
 8 
 9 DROP TABLE emp;
10 CREATE TABLE emp(
11     id INT PRIMARY KEY AUTO_INCREMENT,
12     `name` VARCHAR(30) NOT NULL UNIQUE,
13     dept_id INT ,
14     FOREIGN KEY(dept_id) REFERENCES dept(id)
15 );
16 INSERT INTO emp VALUES(NULL,'张三',1);
17 INSERT INTO emp VALUES(NULL,'李四',1);
18 INSERT INTO emp VALUES(NULL,'王五',1);

 

       3)多对多 

        经典案例:教师 学生

 1 /*多对多:教师-学生*/
 2  CREATE TABLE teacher(
 3     id INT PRIMARY KEY AUTO_INCREMENT,
 4     `name` VARCHAR(20) NOT NULL
 5  );
 6 INSERT INTO teacher VALUES(NULL,'李老师');
 7 INSERT INTO teacher VALUES(NULL,'刘老师');
 8 INSERT INTO teacher VALUES(NULL,'王老师');
 9  
10  CREATE TABLE student(
11     id INT PRIMARY KEY AUTO_INCREMENT,
12     `name` VARCHAR(20) NOT NULL
13  );
14 INSERT INTO student VALUES(NULL,'严涛');
15 INSERT INTO student VALUES(NULL,'杨涛');
16 INSERT INTO student VALUES(NULL,'邹梦洁');
17  
18  CREATE TABLE tea_stu(
19     tea_id INT,
20     stu_id INT,
21     FOREIGN KEY(tea_id) REFERENCES teacher(id),
22     FOREIGN KEY(stu_id) REFERENCES student(id)
23  );
24 INSERT INTO tea_stu VALUES(1,1);
25 INSERT INTO tea_stu VALUES(1,2);
26 INSERT INTO tea_stu VALUES(1,3);
27 INSERT INTO tea_stu VALUES(2,1);
28 INSERT INTO tea_stu VALUES(2,1);

 五、连接方式

  横向连接:join on

  纵向连接:union、union all,对应的字段列数、类型必须一致

        union all不包含去重功能,而union会自动去重

posted @ 2017-11-16 21:28  咕噜噜zmj  阅读(383)  评论(0编辑  收藏  举报