关于增删改基础--MySQL系列

补一些最基础最基础的知识。。


mysql -u root -p //linux中进入mysql
net start mysql; //启动mysql服务
net stop mysql; //关闭mysql服务
show databases; //查看已有哪些数据库
use databases; //进入某个数据库
select database()//查看当前use的是哪个database
drop database test; //删除名为test的数据库
drop table  test;//删除名test的表
use test; //进入名为test的数据库

先跳到19章学习数据插入先。


有这么几种使用方法:

  • 插入完整的行
  • 插入行的一部分
  • 插入多行
  • 插入某些查询的结果

可是呢,一通瞎插入的话可能会有安全问题,但是不要紧,我们MySQL有安全机制。后面会学到。

这里都是insert, insert语句一般不会产生输出。

INSERT INTO Customers
VALUES (NULL,
'Pep E. LaPew'
'100 Main Street' ,
'Los Angeles',
'CA',
' 90046'
' USA'
NULL,
NULL);

上述语法简单,但是并不安全,因为这样的句子高度依赖表中列的定义次序。最好按照下面的方式写:

INSERT INTO Customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_email)
VALUES ('Pep E. LaPew',
'100 Main Street' ,
'Los Angeles',
'CA',
' 90046'
' USA'
NULL,
NULL,
NULL);

一一对应很清晰,就是写起来的时候有点麻烦。
这种写法必须给每个列出的列一个值。当然也可以省略几个列。
想要省略列的时候需要满足下面的某一个条件:(|)

  • 该列定义为允许NULL值
  • 在表定义中给出默认值。

INSERT low_priority into
这样写可以降低insert 的优先级,同样适用于update和delete语句。

插入多个行:

insert into customers(name, address) values('a','b' ), values('c','d');

这种插入多个行的方式可以提高数据库处理的性能。因为这种插入较快。

insert into customers(name, address) select name,address from custnew;

这个操作可以把custnew中的数据插入到customers中,并且是有几行就插入几行。没有就不插。

扫描二维码关注公众号,回复: 10301206 查看本文章
关于更新和删除数据
关于更新
  • 更新表中的特定行
  • 更新表中的全部行

很简单

update customers set email = '[email protected]' where name = 'zzh';
update customers set email = '[email protected]', name='zzz' where id=1005;

这里可以使用子查询,关于子查询之后在学
可以用update删除某个列的值, 直接update成NULL就欧克了

update customers set email=NUlL where id = 1005;
关于删除

删除特定的行
删除所有的行

delete from customers where id = 1006;

delete 用来删除整行,而不是列,删除列的话用update,上面记了。

要想删除表中所有数据,还有一个语句

truncate table test;

这个速度更快,因为这个是先删除原来的表再重新创建一个表出来。而不是逐行删除表中的数据。

千万注意:MySQL没有撤销按钮,一定要小心翼翼 的update和delete。

创建和操纵表
表的创建:
create table test if not exist
(
id      int      not NULL      auto_increment,
name     char(50)      not null,
quantity     int      not null  default 1,
primary key(num, item)
)engine=innodb;

注意’'这样的结构(两个单引号中间没有空格)并不是NULL;

关于主键

primary key(num, item)
这样可以设置两个主键,但是要保证num和item的组合需要保持唯一。当然主键只能not NULL

关于auto_increment

这个会自动增量

当然被设置了auto_increment的,也可以被指定数字,只要是唯一的就行,然后接下来的数字都会基于这个指定的数据递增。

可以使用last_insert_id()函数来获取最后一个auto_increment值。

select last_insert_id();

可以使用default 来指定默认值。由上面的test的例子可见。

注意:与大多数DBMS不一样,MySQL不允许使用函数作为默认值!!只能用常量。

关于引擎类型

MySQL有一个具体管理和处理数据的内部引擎,用create table语句时,该引擎创建表,在使用select语句或其他数据处理时,该引擎在内部处理你的请求。多数时候,此引擎都隐藏在DBMS内,无需特别关注。

但是MySQL不一样,它具有多种引擎。这些引擎都隐藏在MySQL服务器内,全部能执行create table 和select 等等命令。

那为什么要发行多种引擎呢?
因为他们各自具有各自不同的功能和特性,为不同的任务选择正确的引擎能获得良好的功能和灵活性。

如果省略engine=语句,那就会使用默认引擎。很可能是MyISAM

列举几个需要知道的引擎:

  • InnoDB是一个可靠的事务处理引擎。但不支持全文本搜索。
  • MEMORY功能上等同于MyISAM,但是数据是储存在内存中而不是硬盘,所以速度很快,因此特别适合于临时表。
  • MyISAM是一个性能极高的引擎,支持全文本搜索,但不支持事务处理。

引擎类型可以混用。
但是注意:外键不能跨引擎。

关于更新表
alter table vendors
add phone char(20);

增加一个列

alter tabke vendors
drop column phone;

删去一个列

alter 还有一种常见的用途是定义外键。

删除表

drop table cust;

重命名表

rename table cust to zzh;

发布了75 篇原创文章 · 获赞 26 · 访问量 7661

猜你喜欢

转载自blog.csdn.net/qq_40962234/article/details/104614804
今日推荐