通过sql语句对MySql数据库的基本操作
一、数据库的基本操作
CREATE DATABASE mybookstore;
DROP DATABASE mybookstore;
二、表的基本操作
1、创建表
insert into 表名(字段名1,字段名2) values(值1,值2);
CREATE TABLE student(
id INT,
`name` VARCHAR(50)
);
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)一对一
经典案例:夫妻
/*一对一:夫妻*/
CREATE TABLE husband(
id INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL
); INSERT INTO husband VALUES(1,'张三');
INSERT INTO husband VALUES(2,'王五'); CREATE TABLE wife(
id INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
FOREIGN KEY(id) REFERENCES husband(id)
);
INSERT INTO wife VALUES(1,'李四');
INSERT INTO wife VALUES(2,'赵六');
INSERT INTO wife VALUES(1,'李静'); /*由于一对一约束,此行插入失败*/
2)一对多[多对一]
通常是在多的一端关联一的主键!通常将外键建在多的一端!
经典案例:部门表与员工表 dept& emp
/*一对多:员工-部门*/
DROP TABLE dept;
CREATE TABLE dept(
id INT PRIMARY KEY AUTO_INCREMENT,
dept_name VARCHAR(10) NOT NULL UNIQUE
);
INSERT INTO dept VALUES(NULL,'开发部门'); DROP TABLE emp;
CREATE TABLE emp(
id INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(30) NOT NULL UNIQUE,
dept_id INT ,
FOREIGN KEY(dept_id) REFERENCES dept(id)
);
INSERT INTO emp VALUES(NULL,'张三',1);
INSERT INTO emp VALUES(NULL,'李四',1);
INSERT INTO emp VALUES(NULL,'王五',1);
3)多对多
经典案例:教师 学生
/*多对多:教师-学生*/
CREATE TABLE teacher(
id INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL
);
INSERT INTO teacher VALUES(NULL,'李老师');
INSERT INTO teacher VALUES(NULL,'刘老师');
INSERT INTO teacher VALUES(NULL,'王老师'); CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL
);
INSERT INTO student VALUES(NULL,'严涛');
INSERT INTO student VALUES(NULL,'杨涛');
INSERT INTO student VALUES(NULL,'邹梦洁'); CREATE TABLE tea_stu(
tea_id INT,
stu_id INT,
FOREIGN KEY(tea_id) REFERENCES teacher(id),
FOREIGN KEY(stu_id) REFERENCES student(id)
);
INSERT INTO tea_stu VALUES(1,1);
INSERT INTO tea_stu VALUES(1,2);
INSERT INTO tea_stu VALUES(1,3);
INSERT INTO tea_stu VALUES(2,1);
INSERT INTO tea_stu VALUES(2,1);
五、连接方式
横向连接:join on
纵向连接:union、union all,对应的字段列数、类型必须一致
union all不包含去重功能,而union会自动去重
通过sql语句对MySql数据库的基本操作的更多相关文章
- 如何用SQL语句实现Mysql数据库的备份与还原
以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...
- 使用SQL语句修改Mysql数据库字符集的方法
使用SQL语句修改Mysql数据库字符集的方法 修改库: alter database [$database] character set [$character_set] collate [$c ...
- Linux centosVMware mysql用户管理、常用sql语句、mysql数据库备份恢复
一.mysql用户管理 grant all on *.* to 'user1'@‘127.0.0.1’ identified by 'mimA123'; 创建user1用户 使用user1登录 /us ...
- sql语句(Mysql数据库)
Mysql数据库的sql语句: 一.基本操作 1.连接数据库 mysql -uroot -proot -hlocalhost -P3306 (-u表示用户名,-p密码,-h主机,-P端口号) 2.选择 ...
- MySQL用户管理、常用sql语句、MySQL数据库备份恢复
1.MySQL用户管理 给远程登陆用户授权:grant all on *.* to 'user1'@'127.0.0.1' identified by '123456' (这里的127.0.0.1是指 ...
- SQL语句对MySQL数据库的操作之对数据库层面的操作
一.数据库内部存储结构 字段->数据表->数据库->MySQL服务器 二.登录及退出数据库 mysql -h服务器地址 -u用户名 -p密码(这样的登录形式并不安全) mysql - ...
- SQL语句,mysql数据库
sql语句,把一张表里的数据,和特定数据(固定常量)新插入另一张表 ,,, from wm_jobpoint INSERT INTO wm_department(departmentcode,depa ...
- Python使用sql语句对mysql数据库多条件模糊查询
1 def find_worldByName(c_name,continent): 2 print(c_name) 3 print(continent) 4 sql = " SELECT * ...
- SQL语句大全(mysql,sqlserver,oracle)
SQL语句大全 --语句功能--数据操作SELECT --从数据库表中检索数据行和列-selectINSERT --向数据库表添加新数据行-insertDELETE --从数据库表中删除数据行-del ...
随机推荐
- Java_注解_异常_01_ElementType cannot be resolved to a variable
一.异常现象: 自定义注解时, @Retention和@Target都能导入进来,但是却报下列错误: RetentionPolicy cannot be resolved to a variable ...
- (转)python调取C/C++的dll生成方法
本文针对Windows平台下,python调取C/C++的dll文件. 1.如果使用C语言,代码如下,文件名为test.c. __declspec(dllexport) int sum(int a,i ...
- VScode 为 *.cu文件 添加高亮及c++ intelligence相关操作的方法
问题:*.cu在VScode不能像*.cc或*.cpp一样在c++及c++ intelligence插件有关键字的高亮以及go to definition等的操作 解决方案:添加*.cu与*.cpp文 ...
- 趣味Shell
Richard M. Stallman大神是谁就不用说了,一时来了兴趣,想看看Linux系统下有多少程序有这位大神参与编写的. 先把所有命令导出到文件中,遍历所有命令,用man手册查一下并过滤Stal ...
- Ffmpeg转码研究一
Ffmpeg是一款功能强大的视频处理工具,那么转码肯定不是问题的,因为项目的需求,对转码进行了研究.刚开始首先去看了ffmpeg源代码中的一个例子transcode.c,但是发现该例子更应该称之为re ...
- 表达式(exp)
题目大意 给定一个逻辑表达式,求每一个数满足$\in[1,n]$的使的表达式为真的方案数. 题解 题目限制较奇怪且数据范围较小,所以可以考虑直接暴力. 考虑枚举每一个变量一共出现了$k$种数值,再枚举 ...
- Uva10366
模拟乱搞 要说算法的话...乱搞算法? #include<iostream> #include<cstring> #include<algorithm> #incl ...
- bzoj 2969: 矩形粉刷 概率期望
题目: 为了庆祝新的一年到来,小M决定要粉刷一个大木板.大木板实际上是一个W*H的方阵.小M得到了一个神奇的工具,这个工具只需要指定方阵中两个格子,就可以把这两格子为对角的,平行于木板边界的一个子矩形 ...
- 问题11:如何进行反向迭代 & 如何实现反向迭代
# 有关列表问题,参考:Python:列表list 案例: 需求:实现一个连续浮点数发生器FloatRange(和range类似),根据给定范围(start,end)和步进值(step),产生一系列连 ...
- 使用 EntityFramework后把一个对象序列化成json字符串引起循环引用的问题
先看一个T4模板生成的model实体类 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:卷猫 链接:http://anneke.cn/ArticleInfo/Detial ...