MySQL数据库 crud语句 ifnull() 创建新账户 备份数据库 一对多关系 多对多(中间表) 外键约束 自关联 子查询注意事项 DML DDL DQL mysql面试题 truncate与delete的区别
DML(data manipulation language):
它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言
DDL(data definition language):
DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
sql crud 基本语句使用
CREATE DATABASE swift_db;
USE swift_db;
SHOW DATABASES; DROP DATABASE swift_db; SHOW CREATE DATABASE swift_db; CREATE TABLE test1(
tid INT PRIMARY KEY,
tdate DATE); DROP TABLE test1;
DESC category; ALTER TABLE category ADD cdesc VARCHAR(20);
ALTER TABLE category MODIFY cdesc VARCHAR(50); ALTER TABLE category DROP description; RENAME TABLE category TO category2; INSERT INTO category
(cid,
cname)
VALUES ('c001',
'电器'); UPDATE category
SET cname = '小明'
WHERE cid = 'c001'; ALTER TABLE p4 DROP INDEX `primary`;
ALTER TABLE `swift_db`.`p5` DROP INDEX `PRIMARY`;
ALTER TABLE p5 ADD CONSTRAINT UNIQUE (NAME);
ALTER TABLE p5 DROP INDEX `name`;
ALTER TABLE p4 ADD CONSTRAINT PRIMARY KEY (id);
ALTER TABLE p4 ADD CONSTRAINT UNIQUE (p3name);
ALTER TABLE p4 ADD age INT;
ALTER TABLE p4 ADD CONSTRAINT UNIQUE (age);
ALTER TABLE p4 DROP INDEX age;
ALTER TABLE p4 DROP INDEX p3name;
ALTER TABLE p4 DROP INDEX `primary`;
ALTER TABLE p4 ADD CONSTRAINT UNIQUE (age);
ALTER TABLE p4 DROP INDEX age;
ALTER TABLE p4 CHANGE p3name p3name VARCHAR(30) NOT NULL; DELETE FROM product WHERE NAME='电视机'; TRUNCATE product;
DELETE FROM product;
判空显示内容
select ifnull(salary,"显示内容"),ifnull(salary,0)*12 年薪 from users;
使用root用户登录,创建新用户rabbit 密码 123
create user rabbit identified by '123';
备份与恢复单个数据库的命令
C:\WINDOWS\system32>mysqldump -uroot -p gjp > d:/gjp.sql
Enter password: ****
C:\WINDOWS\system32>mysql -uroot -p gjp < d:/gjp.sql
Enter password: ****
备份与恢复多个数据库命令
C:\WINDOWS\system32>mysqldump -uroot -p --databases gjp gjj > d:/gjj.sql
Enter password: ****
C:\WINDOWS\system32>mysql -uroot -p < d:/gjj.sql
Enter password: ****
备份所有表
C:\WINDOWS\system32>mysqldump -uroot -p --all-databases > d:/all.sql
Enter password: ****
自关联
--使用--自关联--方式,表达一对多关系
--创建一个AREA,来进行省市的自关联。
CREATE TABLE AREA(
id INT PRIMARY KEY,
NAME VARCHAR(20),
description VARCHAR(20),
parent_id INT
);
-- 要求自关联前,要填入数据
数据准备:(自关联必须有数据才能添加外键约束)
INSERT INTO AREA VALUES (1,'河北省','河北省',NULL);
INSERT INTO AREA VALUES (2,'保定市','保定市',1);
INSERT INTO AREA VALUES (3,'石家庄市','石家庄市',1); --自关联,自我约束
ALTER TABLE AREA ADD CONSTRAINT fk_area FOREIGN KEY (parent_id) REFERENCES AREA (id);
一对多关系
CREATE TABLE category(
cid VARCHAR(32) PRIMARY KEY,#主键ID
cname VARCHAR(20)#分类名称
); INSERT INTO category VALUES('c001','电脑办公');
INSERT INTO category VALUES('c002','服装');
-- 创建商品表: CREATE TABLE product(
pid INT PRIMARY KEY,#主键ID
pname VARCHAR(20),#商品名称
price DOUBLE,#商品价格
category_cid VARCHAR(32)#外键
); -- 为product表 添加外键约束
ALTER TABLE product ADD CONSTRAINT p_fk FOREIGN KEY (category_cid) REFERENCES category(cid);
-- 导入数据
INSERT INTO product(pid,pname,price,category_cid) VALUES(1,'联想电脑',5000,'c001');
INSERT INTO product(pid,pname,price,category_cid) VALUES(2,'海尔电脑',3000,'c001');
INSERT INTO product(pid,pname,price,category_cid) VALUES(3,'雷神电脑',5000,'c001'); INSERT INTO product(pid,pname,price,category_cid) VALUES(4,'JACK JONES',800,'c002');
INSERT INTO product(pid,pname,price,category_cid) VALUES(5,'真维斯',200,'c002');
INSERT INTO product(pid,pname,price,category_cid) VALUES(6,'花花公子',440,'c002');
INSERT INTO product(pid,pname,price,category_cid) VALUES(7,'劲霸',2000,'c002');
中间表 多对多
多对多关系(用户与角色)
--创建用户表
CREATE TABLE USER(
uid INT PRIMARY KEY,
username VARCHAR(30),
PASSWORD VARCHAR(30)
); --创建角色
CREATE TABLE role(
rid INT PRIMARY KEY,
NAME VARCHAR(30)
); --创建中间表
CREATE TABLE user_role(
u_uid INT,
r_rid INT
); --建立关联关系:
--1)为中间表u_uid添加外键
ALTER TABLE user_role ADD CONSTRAINT fk_ur_uid FOREIGN KEY (u_uid) REFERENCES USER (uid);
--2)为中间表r_rid添加外键
ALTER TABLE user_role ADD CONSTRAINT fk_ur_rid FOREIGN KEY (r_rid) REFERENCES role (rid);
多表联查 子查询 内联查 inner join on 左外联查 left outer join on 右外联查 right outer join on (inner 和 outer可以省略)
-- 多表查询练习
-- 创建分类表:
CREATE TABLE category(
cid VARCHAR(32) PRIMARY KEY,#主键ID
cname VARCHAR(20)#分类名称
); INSERT INTO category VALUES('c001','电脑办公');
INSERT INTO category VALUES('c002','服装');
-- 创建商品表: CREATE TABLE product(
pid INT PRIMARY KEY,#主键ID
pname VARCHAR(20),#商品名称
price DOUBLE,#商品价格
category_cid VARCHAR(32)#外键
); -- 为product表 添加外键约束
ALTER TABLE product ADD CONSTRAINT p_fk FOREIGN KEY (category_cid) REFERENCES category(cid);
-- 导入数据
INSERT INTO product(pid,pname,price,category_cid) VALUES(1,'联想电脑',5000,'c001');
INSERT INTO product(pid,pname,price,category_cid) VALUES(2,'海尔电脑',3000,'c001');
INSERT INTO product(pid,pname,price,category_cid) VALUES(3,'雷神电脑',5000,'c001'); INSERT INTO product(pid,pname,price,category_cid) VALUES(4,'JACK JONES',800,'c002');
INSERT INTO product(pid,pname,price,category_cid) VALUES(5,'真维斯',200,'c002');
INSERT INTO product(pid,pname,price,category_cid) VALUES(6,'花花公子',440,'c002');
INSERT INTO product(pid,pname,price,category_cid) VALUES(7,'劲霸',2000,'c002'); -- 写出交叉查询的SQL
-- 答:交叉连接查询(基本不会使用-得到的是两个表的乘积,笛卡尔积)
SELECT * FROM category c , product p; -- 写出两种 内连接查询的SQL (使用的关键字 inner join -- inner可以省略)
-- 隐式内连接:
SELECT * FROM category c, product p WHERE c.cid=p.category_cid;
-- 显示内连接:
SELECT * FROM category c INNER JOIN product p ON c.cid=p.category_cid;
-- 注意:内连接书写极为简单,效率不高,内存占用率偏高 -- 外连接查询(使用的关键字 outer join -- outer可以省略)
-- 左外连接:left outer join
SELECT * FROM product p LEFT OUTER JOIN category c ON p.category_cid=c.cid;
-- 右外连接:right outer join
SELECT * FROM product p RIGHT OUTER JOIN category c ON p.category_cid=c.cid;
-- 子查询 (将其他select的查询结果,作为select的查询条件。)
-- 格式:进行SELECT嵌套。
-- 例如:SELECT 字段 FROM 表名 WHERE (SELECT 字段 FROM 表名…..)…..
-- 例如:SELECT 字段 FROM (SELECT 字段 FROM 表); --#查询最贵的商品信息
SELECT * FROM product WHERE price=(SELECT MAX(price) FROM product);
SELECT PASSWORD FROM sw_user WHERE username = ( SELECT username FROM sw_user WHERE id = );
子查询 只对select直接有效,把查询结果作为条件再次查询
子查询 对delete并不直接有效,需要把查询结果起别名,例如 t,当成1张表,
对这张表中的字段再次select出来的,例如id才可以删除。
子查询中的完整语句不要用“;”结束
mysql面试题 truncate与delete的区别
TRUNCATE TABLE department; 削平 摧毁表,id重新开始
DELETE FROM department; 数据删除,但id继续在原基础上增加
MySQL数据库 crud语句 ifnull() 创建新账户 备份数据库 一对多关系 多对多(中间表) 外键约束 自关联 子查询注意事项 DML DDL DQL mysql面试题 truncate与delete的区别的更多相关文章
- MySQL学习(一)——创建新用户、数据库、授权
一.创建用户 1.登录mysql mysql -u root -p 2.创建本地用户>/font> use mysql; //选择mysql数据库 create user 'test'@' ...
- oracle 创建表 外键约束
create table usertable( id int primary key, username ) not null, birthday date, sex ), address ) ); ...
- MySQL8.0数据库出现的问题——外码创建方式、外键约束两个引用列不兼容问题、check约束问题、用触发器代替check约束、关键字DELIMITER、删除添加索引、删除添加外键约束、和一些数据库方面的操作
一.首先先说一下我们都需要建立那些表 mysql> CREATE TABLE IF NOT EXISTS `student`( -> `sno` CHAR(8) NOT NULL, -&g ...
- 数据库中truncate与delete的区别与联系
昨天被问到truncate与delete的区别,truncate没用过,回去百度了一下,才知道还有这个一种语句. truncate table命令将快速删除数据表中的所有记录(保留数据表结构).这种快 ...
- SQL删除语句DROP、TRUNCATE、 DELETE 的区别
主要介绍了SQL删除语句DROP.TRUNCATE. DELETE 的区别,帮助大家更好的理解和学习sql语句,感兴趣的朋友可以了解下 DROP: 1 DROP TABLE test; 删除表test ...
- drop、truncate和delete的区别 [转载]
drop.truncate和delete的区别 本文转载自: https://www.cnblogs.com/zhizhao/p/7825469.html (1)DELETE语句执行删除的过程 ...
- mysql中 drop、truncate和delete的区别
mysql中drop.truncate和delete的区别 (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNC ...
- mysql之drop、truncate和delete的区别
今天在整理mysql数据库笔记的时候突然想到一个问题,就是drop.truncate和delete的区别,乍一看三者都是有删除的功能,但是具体来看还是有很多区别的.我先把这三个的作用简单说一下,有前辈 ...
- drop与truncate与delete的区别与联系
在mysql和oracle数据库中delete与truncate都是可以用来对数据进行删除操作,但是二者又有些不同. 主要有以下几个区别: 区别一: 根据sql语言分类来说,delete属于DML语言 ...
随机推荐
- Kubernetes基本概念之Name和NameSpace
在Kubernetes中,所有对象都会被指定一个唯一的Name和UID. 用户还可以指定一些不要求唯一性的数据附加到对象上,例如Label和Annotation. 1. Name Name是创建一个K ...
- MacOS下,Python2和Python3完美兼容使用(转)
问题阐述: MacOS默认Python版本是2.7.10,随着Python3的进一步占有市场,Python2.7也将在2020年结束维护,所以在同一台电脑上安装多个Python版本势在必行. 一.py ...
- 安装pywin32出现--Python version 3.x required, which was not found in the registry
这两天安装pywin32时出现了这个问题 双击.exe文件进入安装界面,然后点击下一步,它会自动定位你的python安装在什么地方,但是我的安装过程中未自动定位到python安装位置,并显示显示: 安 ...
- C A Simple Job
题目3 : A Simple Job时间限制:1000ms单点时限:1000ms内存限制:256MB描述Institute of Computational Linguistics (ICL), Pe ...
- (六)Redis主从自动恢复-sentinel
原文地址,转载请注明出处: http://blog.csdn.net/qq_34021712/article/details/72026313 ©王赛超 准备工作:(1个master,2个sl ...
- Cause: java.sql.SQLException: 无法转换为内部表示(Mybatis)
公司开发档案系统使用框架:Spring+Struts2+Mybatis+EasyUI,在开发过程中出现sql异常:“Cause: java.sql.SQLException: 无法转换为内部表示”,错 ...
- cucumber的hooks
引用链接:https://github.com/cucumber/cucumber/wiki/Hooks Hooks Cucumber provides a number of hooks which ...
- jquery中的$(document).ready()
window.onload = function(){ alert("welcome"); } 这样的写法作用是希望在页面加载完,自动执行定义js代码(function). $(d ...
- css中 repeat-x 的简单用法
问repeat-x 00 中: 0 0 是 什么意思,如果改为0 -50呢,不写话默认是什么(不写话和0 0 的效果不一样)- ------<html><head><s ...
- CI框架更新与删除
$this->load->database(); // $query=$this->db->get('t_repayments'); // $res ...