首页 > 技术文章 > MySQL操作库和表的记录,供以后查看

ant-xu 2019-08-09 19:29 原文

以下记录都是在cmd窗口中的使用

数据库的基本使用

select version(); 查看数据库当前版本。

select now(); 看时间。

show databases; 查看所有数据库。

create database 数据库名 charset utf8; 创建数据库,并且设置字符集为utf8,这样可以插入中文。

drop database 数据库名; 删除数据库,跑路。

use 数据库名; 切换使用的数据库;

select database(); 查看当前使用的是那个数据库。

表的基本使用

show tables; 查看该数据库中的表都有哪些。

desc 表名; 查看该表的结构。

show create table Customer; 看表的脚本。

drop table 表名; 删除表。

下面是创建表时的例子

create table Corporation(
    id int not null
);

create table Customer(
    id int primary key auto_increment,    #主键约束,这种的约束没见过还能起名的,自增会相对最大的那个自增,也可以指定值覆盖自增
    name varchar(20) not null,    #非空约束
    sex varchar(2) check(sex='' or sex=''),    #在mysql中没有效果,但是不报错
    tel varchar(11) unique,    #唯一约束
    password varchar(20) default '111111',    #默认约束
    createTime timestamp default current_timestamp,    #自动设定时间
    Cid int not null references Corporation(id)    # on delete cascade on update cascade, #on后面的部分可以省略,这样该是不能起名,这种在mysql中无效
    # constraint abc foreign key (Pid) references Person(id) on delete cascade on update cascade    外键也可以这样写
    # constraint 约束名 primary key (id, name) 联合主键的写法,当然可以只写一个
);

alter table 表名 add constraint 约束名 primary key (列名);    #就是在表中的写法加上了选择表和add,多个列名用半角逗号隔开
alter table 表名 add constraint 约束名 foreign key (字段名) references 另一个表(字段名);

#上面的constraint 约束名这段都可以省略,但是之后想在操作该约束会比较麻烦,约束名就是标识符不能用字符串。

经过在MySQL5.7.15中的测试,在表的创建阶段建立外键,即Cid int not null references Corporation(id)这样建立外键mysql不会报错但是无效,经外键查询语句查找并未找到,且添加不存在的外键也不会报错,剩下的两种方式有效。在表创建时的references在SQLServer上有效。

看外键的语句,两个一样。

select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE  where REFERENCED_TABLE_NAME='外键所处的表';

select
TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
from INFORMATION_SCHEMA.KEY_COLUMN_USAGE
where CONSTRAINT_SCHEMA ='使用的数据库' AND
REFERENCED_TABLE_NAME = '外键所处的表';

 

表的修改,没咋用过,以后在加。

 

推荐阅读