【SQL】增删改查操作
重要的 SQL 命令
语句 | 描述 | 备注 |
---|---|---|
SELECT | 从数据库中提取数据 | 选择,通常用来查询数据 |
UPDATE | 更新数据库中的数据 | 更新,通常用来修改数据 |
DELETE | 从数据库中删除数据 | 删除,通常用来删除数据 |
INSERT INTO | 向数据库中插入新数据 | 插入,通常用来增加数据 |
CREATE DATABASE | 创建新数据库 | |
ALTER DATABASE | 修改数据库 | |
CREATE TABLE | 创建新表 | |
ALTER TABLE | 变更(改变)数据库表 | |
DROP TABLE | 删除表 | |
CREATE INDEX | 创建索引(搜索键) | |
DROP INDEX | 删除索引 |
注意:SQL中字符串要用英文的单引号(
''
)引起来。
理解:这是为了让其他语言调用数据库写SQL时,与字符串(""
)区分开,如果SQL中字符串也用(""
)的话到时候其他语言中的(""
)会导致截断,造成不必要的麻烦。
数据库增删改查
增
我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下:
CREATE DATABASE 数据库名;
删
drop 命令格式:
drop database <数据库名>;
改
ALTER DATABASE
查
SHOW DATABASES;
选择数据库
use database_name
数据库表增删改查
NULL
:可以为NULLNOT NULL
:不能为NULLDEFAULT
:在插入时未被指定的字段会被赋默认值。在JPA中一般与@DynamicInsert
配合使用
注意:也就是说在
INSERT
中未指明赋值的字段才会被赋默认值,否则即使指明赋值为NULL
,也不能赋默认值,而是赋值为NULL
。
增
SQL CREATE TABLE 语法
CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);
column_name 参数规定表中列的名称。
data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。
size 参数规定表中列的最大长度。
删
以下为删除MySQL数据表的通用语法:
DROP TABLE table_name ;
改
ALTER TABLE
在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或字段的注释,把同字段属性调整到一块儿。这些操作可以在phpmyadmin或者别的mysql管理工具中完成,但是我们有时为了更方便的管理,会选择写sql语句来实现。
1.增加一个字段
//增加一个字段,默认为空
alter table user add COLUMN new1 VARCHAR(20) DEFAULT NULL;
alter table user add new1 VARCHAR(20) DEFAULT NULL;
//增加一个字段,默认不能为空
alter table user add COLUMN new2 VARCHAR(20) NOT NULL;
alter table user add new2 VARCHAR(20) NOT NULL;
ALTER TABLE character_meta ADD facial_list VARCHAR(max) NOT NULL DEFAULT '' COMMENT 'facial list' AFTER emotion_list
2.批量增加字段
方法一
这里可以使用事务
bagin; //事务开始
alter table em_day_data add f_day_house7 int(11);
alter table em_day_data add f_day_house8 int(11);
alter table em_day_data add f_day_house9 int(11);
alter table em_day_data add f_day_house10 int(11);
commit; //提交事务,事务结束
事务(transaction)是由一系列操作序列构成的程序执行单元,这些操作要么都做,要么都不做,是一个不可分割的工作单位。
方法二
mysql 批量为表添加多个字段
alter table 表名 add (字段1 类型(长度),字段2 类型(长度),字段3 类型(长度));
alter table em_day_data add (f_day_house11 int(11),f_day_house12 int(11),f_day_house13 int(11));
3.删除一个字段
//删除一个字段
alter table user DROP COLUMN new2;
4.修改一个字段
//修改一个字段的类型
alter table user MODIFY COLUMN new1 VARCHAR(10);
//修改一个字段的名称,此时一定要重新指定该字段的类型
alter table user CHANGE COLUMN new1 new4 int;
5.批量修改字段名称
alter table 表 change 修改前字段名 修改后字段名称 int(11) not null,
change 修改前字段名 修改后字段名称 int(11) not null,
change 修改前字段名 修改后字段名称 int(11) not null,
change 修改前字段名 修改后字段名称 int(11) not null,
change 修改前字段名 修改后字段名称 int(11) not null
例子:
alter table em_day_data change f_day_house11 f_day_hour11 int(11) not null,
change f_day_house12 f_day_hour12 int(11) not null,
change f_day_house13 f_day_hour13 int(11) not null,
change f_day_house14 f_day_hour14 int(11) not null,
change f_day_house15 f_day_hour15 int(11) not null,
change f_day_house16 f_day_hour16 int(11) not null,
change f_day_house17 f_day_hour17 int(11) not null
6,添加注释
// 可以为表添加注释
ALTER TABLE `table_name` COMMENT'注释';
// 为字段添加注释,同样适用于修改
ALTER TABLE `table_name` CHANGE COLUMN `column_name` `column_name` type(longth) UNSIGNED NULL DEFAULT NULL COMMENT '注释'
7,调整字段顺序:
alter table 表名 change COLUMN字段名 新字段名 字段类型 默认值 after 字段名(跳到哪个字段之后)
例子:
alter table appstore_souapp_app_androidmarket change getPriceCurrency getPriceCurrency varchar(50) default null AFTER getPrice;
查
SHOW TABLES;
数据库记录增删改查语句
-
增:插入到表table_name中,值是value1,value2,value3,...
INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
-
删:从表table_name中删除,当满足条件some_column=some_value
DELETE FROM table_name WHERE some_column=some_value;
-
改:修改表table_name,设置column1=value1,column2=value2,...,当条件满足some_column=some_value时。
UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value;
-
查:选择列column_name,column_name,从表table_name中。
注意:本查询仅为部分功能,欲知详情可见SELECT语句
SELECT column_name,column_name FROM table_name;
增
语法:插入到表table_name中,值是value1,value2,value3,...
注意:这里面的值与上面的(column1,column2,column3,...)一一对应。
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
下面用一个例子来试试这些语句:
上图这个表呢,是我比较喜欢的几个菜。
- 表名:menu
- 菜名:name
- 好吃程度:degree
- 数量:num
那么我们来试试加一道我不喜欢的菜:苦瓜(因为后面要删掉一个,所以加个不喜欢的方便删掉)
INSERT INTO menu (name,degree,num)
VALUES ('苦瓜','0','100');
程序运行结果:
删
语法:从表table_name中删除,当满足条件some_column=some_value
DELETE FROM table_name
WHERE some_column=some_value;
那么让我们来继续上面的例子,删除这个苦瓜:
DELETE FROM menu
WHERE name='苦瓜';
程序运行结果:
请注意,DROP TABLE会删除表本身以及所有数据,并且此操作无法撤销。如果你只想清空表而保留表结构,请使用TRUNCATE TABLE语句,这个语句通常比DELETE更快,因为它不记录每行的删除动作。
TRUNCATE TABLE table_name;
改
语法:修改表table_name,设置column1=value1,column2=value2,...,当条件满足some_column=some_value时。
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
由于干煸土豆丝太好吃了,被大家吃光了,所以把数量修改为0:
UPDATE menu
SET num=0
WHERE name='干煸土豆丝';
程序运行结果:
需要特别注意的是:状态机在修改某一状态字段的时候,最好不要直接set,而是加上where前一状态。
UPDATE workflow
SET status='已完成'
WHERE status='进行中'
查
语法:选择列column_name,column_name,从表table_name中。
SELECT column_name,column_name
FROM table_name;
新来的人如果想吃东西,只能点那些还有食材能做的菜:
SELECT *
FROM menu
WHERE num!=0;
程序运行结果:
实例
修改字段类型
在Oracle修改user表字段name类型时遇到报错:“ORA-01439:要更改数据类型,则要修改的列必须为空”,是因为要修改字段的新类型和原来的类型不兼容。
如果要修改的字段数据为空时,则不会报这种类型的错误,可以进行字段类型的修改。
ALTER TABLE user MODIFY (name VARCHAR2(20));
要修改字段的新类型和原来的类型不兼容时,可以通过如下方式解决该问题:
1、修改原字段名name为临时字段name_bak(备用backup);
ALTER TABLE user RENAME COLUMN name TO name_bak;
2、添加一个新字段名称和原来字段名相同,name,类型为要修改的新类型;
ALTER TABLE user ADD(name VARCHER2(50));
3、把临时字段name_bak的数据更新到新添加的字段name中;
UPDATE user SET NAME = TRIM(name_bak);
4、删除临时字段name_bak;
ALTER TABLE user DROP COLUMN name_bak;
笔者将不定期更新【考研或就业】的专业相关知识以及自身理解,希望大家能【关注】我。
如果觉得对您有用,请点击左下角的【点赞】按钮,给我一些鼓励,谢谢!
如果有更好的理解或建议,请在【评论】中写出,我会及时修改,谢谢啦!
本文来自博客园,作者:Nemo&
转载请注明原文链接:https://www.cnblogs.com/blknemo/p/12592746.html