通过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会自动去重