MySql的基操勿六
2018/12/6 星期四 19:34:07
authot by dabaine
数据库注释;
-- 这就是注释
/*.....*/ 这也是注释
创建库;
create databse [if not exists] dabaine [character set "utf8"];
查看所有数据库;
show databses;
查看数据库结构:
show create database dabaine;
查看当前数据库;
select database();
修改数据库;
alter database dabaine [character set "gbk"];
删除数据库;
drop database [if exists] dabaine;
使用数据库;
use database;
创建表;
create table dabaine(
id smallint(10) primary key not null auto_increment,
name varchar(25) not null,
gender boolean not null
);
删除表;
drop table dabaine;
查看表结构;
eg1:show create table dabaine;
eg2:show columns from dabaine;
查看表的全部信息;
desc dabaine;
修改表结构;
增加字段:
alter table dabaine add [column],add [column]......;
修改类型:
alter table dabaine modify colum_name attribute [first|after column_name] colum_name;
修改列名:
alter table dabaine change column_name new_column_name type [约束条件];
删除字段:
alter table dabaine drop [column];
重命名:
rename table table_name to new_table_name;
修改表内容;
插入:
eg1:insert into dabaine (id, name) values(1,"dabaine");
eg2:insert into dabaine set id = 2,name="dabaine";
更新:
update dabaine set name="cody" where name="dabaine";
删除:
eg1:delete from dabaine where name = "cody";
eg2:truncate table dabaine; --把表摧毁,重新创建一张新表;
查询顺序;
select [distinct] *|field ... from dabaine
where (不分组筛选)
group by field
having (分组后筛选)
order by field
limit
查询别名;
selct distinct id + 10 as id from dabaine;
执行顺序;
from,where,select,group by,having, order by
聚合函数;
select name, sum(grade) from dabaine group by name;
ifnull(grade,0) --如果grade为空,则给它定为0;
外键约束;
创建主表:
create table class(
id int(10) primary key auto_increment,
name varchar(20),
age int(5)
);
主表添加数据(多条):
insert into class(name,age) values
("cody",18),
("solider",19),
("guan",21),
("lee",22),
("strong",28),
("pig",38);
创建子表:
create table student(
id int(10) primary key auto_increment,
name varchar(20),
age int(5),
teacher_id int(10), --绑定外键的字段要和主表中的字段类型保持一致;
constraint dabaine --给外键命名大白讷
foreign key (teacher_id) --给子表的属性选择外键绑定
references class(id) --映射主表的属性(追随主表的id字段)
);
子表添加数据:
insert into student(name,age,teacher_id) values
("cody",18,1),
("solider",19,2),
("guan",21,3),
("lee",22,4),
("strong",28,5),
("pig",38,6);
这时,主表和子表已经有关联了,不可以随便删除主表的记录;
增加外键:
alter table son_table_name add constraint cody
foreign key(son_table_field)
references primary_table(field);
删除外键:
alter table son_table_name drop foreign key cody;
级联删除(cascade);
create table studentNew(
id int(10) primary key auto_increment,
name varchar(20),
age int(5),
teacher_id int(10),
constraint cody foreign key (teacher_id)
references class(id)
on delete cascade --级联删除
);
constraint cody foreign key (teacher_id)
references class(id)
on delete set null --主表删除后,子表记录设置为空值,且子表的字段属性不能设置为not null;
on delete restrict --拒绝对主表进行更新删除操作;
on delete no action --类似于restrict
多表查询;
笛卡尔积连接:
A表中的全部数据m条 * B表中的全部数据n条;
连接查询~内连接:
inner join
eg1:select tableA.id,tableA.name,tableB.name from
tableA,tableB where tableA.id = tableB.tableA_id
eg2:select tableA.id,tableA.name,tableB.name from tableA
inner join tableB on tableA.id = tableB.tableA_id
+---------+----+---------+
| name | id | name |
+---------+----+---------+
| cody | 1 | cody |
| solider | 2 | solider |
| guan | 3 | guan |
| cody | 4 | lee |
| strong | 5 | strong |
| lee | 6 | pig |
+---------+----+---------+
连接查询~左外连接(左连接):
left join
select tableA.id,tableA.name,tableB.name from tableA
left join tableB on tableA.id = tableB.tableA_id
--左连接以左表为主,select所选择的字段,左表中的记录会全部显示,而右表会去匹配左表里的记录,没有的则显示空值;
+----+---------+---------+
| id | name | name |
+----+---------+---------+
| 1 | cody | cody |
| 2 | solider | solider |
| 3 | guan | guan |
| 4 | lee | cody |
| 5 | strong | strong |
| 6 | pig | lee |
+----+---------+---------+
连接查询~右外连接(右连接):
right join
类似左连接,以右表为主;
+------+---------+---------+
| id | name | name |
+------+---------+---------+
| 1 | cody | cody |
| 4 | lee | cody |
| 2 | solider | solider |
| 3 | guan | guan |
| 6 | pig | lee |
| 5 | strong | strong |
| NULL | NULL | pig |
+------+---------+---------+
嵌套;
查询嵌套:
select * from table_name where field in (select field from table_name);
复制表:
create table new_table(select * from old_table); --原表中的约束不会复制过来,需要重新添加
selcet * from table_name where exists
(selcet field from table_name where....)
--exists 后面的语句会返回一个布尔值,true则执行前面的select语句,
flase 则返回空值;
索引;
unique(唯一索引),fulltext(全局索引),spatial(空间索引),index|key(普通索引)
添加索引:
eg1:create
[unique|fulltext|spatial] index|key
index_name on table_name (字段名[(长度)] [asc|desc]);
eg2:alter table table_name
add [unique|fulltext|spatial] index|key index_name (字段名[(长度)] [asc|desc]);
删除索引:
drop index index_name on table_name;
unique:唯一索引的字段不能重复;
多列索引:给多个字段添加索引 (field1,field2...)
事务;
start transaction; --开启事务
Rollback; --回滚事务(撤销)
Commit; --提交事务;
savepoint; 保留点,事务处理中的临时占位符;
savepoint name;
rollback to svaepoint_name;
存储过程;
MySql的基操勿六的更多相关文章
- Mysql的基操
创建一个数据库 (myschool是数据库名) create database myschool; 删除数据库 drop database myschool 创建一个表:(Student是 表名) ...
- 我的MYSQL学习心得(十六) 优化
我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- mysql基操
创建数据表: create table tt1( id int, name varchar(20), age int,sex boolean ); insert into tt1 values(1,& ...
- 替小白整理的 linux基操命令 切勿扣6 不用感谢
Linux --------小白必会的基本命令 命令行提示字符[root@localhost ~]#[当前登录系统的用户@主机名称 当前所在的目录]## 表示为管理员登录$ 表示为普通用户登录 切 ...
- MySQL数据库学习笔记(六)----MySQL多表查询之外键、表连接、子查询、索引
本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...
- MySql:SELECT 语句(六) CONCAT() 函数的使用
一.计算字段 为什么要用计算字段? 1)想要在一个字段中既显示公司地址,又显示公司名称,但是往往这两个都不在一个字段中 2)列数据是大小写混合的,但是报表程序需要把他们全部按大写形式展示出来 3)需要 ...
- MySQL高级知识(十六)——小表驱动大表
前言:本来小表驱动大表的知识应该在前面就讲解的,但是由于之前并没有学习数据批量插入,因此将其放在这里.在查询的优化中永远小表驱动大表. 1.为什么要小表驱动大表呢 类似循环嵌套 for(int i=5 ...
- Redis基操
Redis key-value类型的缓存数据库 指定IP和端口连接redis: ./redis-cli -h ip -p port Redis基本操作命令 命令 返回值 简介 ping PONG 测试 ...
- MongoDB基操
基本概念 database 数据库 包含多个collection collection 集合 包含多个文档document(类JSON对象) document 文档 一个文档对象中包含多个key-va ...
随机推荐
- Luogu P4892 GodFly的寻宝之旅【状压dp】By cellur925
题目传送门 又是一道状压+计数类好题hh(真香).数据范围非常友好,告诉我们\(n<=18\),非常符合状压的性质. 其实感觉和\(Hamilton\)路径那题还是有些相似的,我们可以类似地设计 ...
- B - Dungeon Master POJ - 2251
//纯bfs #include <iostream> #include <algorithm> #include <cstring> #include <cs ...
- 14.PTD与的基址
0xC0300000就是页目录的基址. 随便找一个软件测试下 通过0xC0300000找到的物理页就是页目录表这个物理页即是页目录表本身也是页表页目录表是一张特殊的页表,每一项PTE指向的不是普通的物 ...
- java简单操作redis数据库
package RedisTest; import redis.clients.jedis.Jedis; public class RedisTest { private static String ...
- python文件实现增删改查操作
# coding = utf-8 import os import json import re ''' 本程序旨在将练习基础知识部分,包括: 列表,元组,字典,文件,函数,字符串等知识 实现的功能: ...
- python 基础(十四) 正则表达式
正则表达式 概念: 正则匹配就是一个模糊的匹配 只要符合我的匹配规则 就会认为是正确的数据(精确的匹配) 1.[] #代表原子表把想要匹配的内容写入原子表中 匹配包含的任意一位字符 [a] ...
- IIS7开启目录浏览功能
IIS7开启目录浏览功能: 在右侧操作中点击启用,并在左侧面板中勾选显示字段.
- vs2013缺少Mvc 怎么办?
命名空间System.Web中不存在类型或命名空间名称Mvc是否缺少程序集引用? 以前vs2010或2012以前的引用一下就有了,为何现在vs2013没有,该这么处理呢?? 解决方案: 打开PCM: ...
- 539 Minimum Time Difference 最小时间差
给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并已分钟数表示.示例 1:输入: ["23:59","00:00"]输出: 1 ...
- File "<stdin>" , line 1
写了一个hello.py,仅有一句,print 'hello world', 运行 Python hello.py 出错,提示: File "<stdin>" , li ...