MySql的基操勿六

Wesley13
• 阅读 433

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;

存储过程;

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Wesley13 Wesley13
3年前
thinkphp 基本配置
12returnarray(34//定义数据库连接信息5'DB\_TYPE''mysql',//指定数据库是mysql67'DB\_HOST''localhost',89'DB\_NAME''uchome',//数据库名1011'DB\_USER''root
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这