2018秋招面试问题(十二、MySQL基础(1))

注:面试过程中整理的学习资料,如有侵权联系我即刻删除。

创建数据库test1:CREATE DATABASE test1;

查看数据库:SHOW DATABASES;

选择具体数据库:USE test1;

删除某个数据库:DROP DATABASE test1;

创建表:CREATE TABLE test1(

    -> id INT,

    -> name VARCHAR(20));

查看数据库支持哪些存储引擎:SHOW ENGINES;

或者是SHOW ENGINES \G;

一共有显示9种存储引擎,Support表示数据库是否支持这个存储引擎,Comment表示关于存储引擎的评论,Transactions表示是否存储引擎是否支持事务,XA参数表示存储引擎所支持的分布式是否符合XA规范,Savepoints参数表示存储引擎是否支持事务处理中的保存点。SQL语句中,“;”、“\g”、“\G”,都表示语句结束。

查询默认存储引擎:show variables like '%storage_engine%';

三种主要存储引擎特性的对比:

MyISAM存储引擎:这个不支持事务,也不支持外键,所以访问速度很快,因此对事务完整性没有要求且以访问为主的应用应该适合使用这个。

InnoDB存储引擎:在事务上具有优势,支持具有提交、回滚和崩溃恢复能力的事务安装,因此比MyISAM占更多的磁盘空间。因此如果需要进行频繁的更新、删除操作,同时还对事务的完整性要求比较高,需要实现并发控制,此时适合用这个。

MEMORY存储引擎:这个使用内存来存储数据,因此这个的数据访问速度快,但是安全上没有保障。如果应用中数据比较小,需要进行快速访问,则适合使用这个。

SQL的所有整数类型:

查看文档支持:HELP contents;

FLOAT、DOUBLE存储数据时存储的是近似值,DECIMAL存储的是字符串,因此提供了更高的精度,在需要表示金额等货币时优先选择DECIMAL数据类型

向表中插入数据:

insert into 表名(id,name,price)values(2,'banana',4.5);

查询表:

select * from 表名;

BIT类型的使用:

CREATE TABLE bit_test (id BIT(8));

INSERT INTO bit_test VALUES(11),(b'11');//第一个插入的是11,第二个插入3.

SELECT id+0 FROM bit_test;  //查询出来的值是十进制

SELECT BIN(id+0) FROM bit_test;  //查询出来的是二进制

SQL支持的text类型。

是组成数据库的基本元素,由若干个字段组成。表的操作包括创建表、查看表、删除表、修改表。

表中的数据库对象包括索引触发器、存储过程等等

列是字段,创建表时要指定列的名字和数据类型。

索引提供快速访问数据的途径。

触发器是用户定义的事务命令的结合,当对一个表中的数据进行插入删除或更新时这组命令就会自动执行。

创建表的语法:

CREATE TABLE name(

字段名 数据类型,

字段名 数据类型,

字段名 数据类型,

...............

字段名 数据类型

);

表中的各个字段都是字段,列被称为字段。

查看表的信息:describe table_name;

查看表的详细定义:show create table table_name;

删除表:drop table table_name;(删除完之后,再用describe查看是否还有表的信息)

修改表名:alter table old_name rename new_name;

修改完后用desc old_name;和desc new_name;来查看表信息。

给表增加字段alter table table_name add 字段_name 类型;这是在表的末尾增加字段,如果语句最后加上first,就是在表的第一个位置增加字段。

在表的指定字段后增加字段:alter table table_name add 字段名 类型

after 字段名;

删除表中的字段:alter table 表名drop 字段名;

修改表中字段的数据类型:alter table 表名modify 字段名 数据类型;

修改表中字段名:alter table 表名change 旧字段 新字段 数据类型;

*****************************(约束)

同时修改表中字段名和数据类型:

alter table 表名 change 旧字段 新字段 新数据类型;

调整字段的顺序到第一位:

alter table 表名modify 字段名 数据类型first;

调整字段A到字段B的后面:

alter table 表名modify 字段A 数据类型 after 字段B;

//表已建立时

去掉unique字段

找到约束名id(show create table)

Alter table ...drop key id;

去掉主键字段

Alter table ...drop primary key;

去掉非空字段

Alter table ...modify 字段 数据类型null;/或者是

...change 字段 字段 数据类型 null;

去掉自增字段

Alter table...modify 字段 数据类型;/change 字段 字段 数据类型;

去掉外键字段

找到约束名id

Alter table...drop foreign key id;

//表已建立时

增加unique字段

Alter table...modify 字段 数据类型 unique;(change)

增加主键字段

Alter table... modify 字段 数据类型 primary key;(change)

增加非空字段

Alter table...modify 字段 数据类型 not full;(change)

增加自增字段(只能设置主键自增,且设置后,不管插入是否成功,主键都自增)

Alter table...modify 字段 数据类型 primary key auto_increment;

增加外键字段

Alter table... add foreign key(外键字段) references 主表(主键字段);

设置非空约束:如果希望表上某个字段的内容不能为空,那就在字段后面加上NOT NULL;

设置字段的默认值:在字段后面跟DEFAULT 默认值;

设置唯一约束:在字段后面跟 UNIQUE,保证所有记录中该字段的值不重复。

用constraint 来约束名字:

设置主键PK约束,主键值得是唯一的、非空的:

<单字段主键>:

在字段后面加上 PRIMARY KEY;就是把这个字段设为主键。

<多字段主键>:

constraint pk_num_name primary key(num,name);

字段num和name都被设置为主键,constraint给PK约束设置一个名字。

设置字段值自动增加:在字段后面加 auto_increment.当数据库表中插入新纪录时,字段上的值会生成唯一的ID,一个数据库表中只能有一个字段使用该约束,该字段规定必须为整数类型。经常会设置为PK主键。num int primary key auto_increment,设置num为主键约束且自动增加。

设置外键约束:设置外键约束的两个表之间会有父子关系,即子表中某个字段的取值范围会由父表决定。子表中只能存在父表中对应该字段的范围,向子表插入超过父表范围的别的数是插入不了的。

在子表创建表时加上:

constraint f_num_enum foreign key(子表字段名) references 父表名(父表字段名)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值