#DML 语言:
/*数据操作语言:
插入 insert
修改 update
删除 delete
(1)插入语句
语法:insert into 表名(列名,……) value(值1,……)
注意:
(1)插入的值的类型要与列的类型一致或兼容,字段列数与值列数必须一致
(2)不可以为null的列 必须插入值,可以为null的列,如何插入值?
1)赋值为null
2)字段去掉不写
(3)列的顺序可以与原表不同
(4)可以省略列名,此时默认为所有列,且列的顺序和表中所有列的顺序一致,需要注意值的顺序和个数
*/
#删除没有男朋友的女生
DELETE
FROM `beauty`
WHERE `boyfriend_id` = 8;
/*
truncate 和delete的区别
(1)只能删除全部表--可以删除指定行
(2)前者效率更高
(3)假如要删除的表有自增长列,再插入数据,自增长列值delete从断点处开始,而truncate从1开始
(4)truncate删除没有返回值,delete删除有返回值---共xx行受到影响
(5)truncate删除不能回滚,delete可以回滚
*/
#DDL 语言
/*
数据定义语言
一、库的管理
创建、修改、删除
二、表的管理
创建、修改、删除
创建:create
修改:alter
删除:drop
1、库的创建
creat database (if not exists)库名
2、库的修改
更改库的字符集
alter database books character set bgk
3、库的删除
drop database books
*/
#DML语言
#1、插入 insert
/* (1)方式1
insert int 表名(列名。。。)
value(值。。。)(值。。。)
(2)方式2
insert int 表名(列名)
value 列名=值。。。
比较:
(1)方式1支持子查询,方式2不支持
(2)方式1支持插入多行,方式2不支持
*/
INSERT INTO `departments`(`department_id`,`department_name`)
VALUE(13,'liu');
#使用子查询
INSERT INTO `departments`(`department_id`,`department_name`)
SELECT 14,'77';
#2、修改
/* (1)修改单表的记录**
语法:update 表名
set 列 = 新值,列 = 新值
where 筛选条件
(2)修改多表的记录
92语法:update 表名
set 列 = 新值,列 = 新值
where 连接条件
and 筛选条件
99语法:update 表1 别名
inner/left|right join 表2 别名
on 连接条件 #先连接,再修改
set 列 = 值
where 筛选
*/
#修改张的手机号为666,要连接女朋友表
UPDATE `boys` bo
INNER JOIN `beauty` be
ON bo.`id` = be.`boyfriend_id`
SET be.``beauty`phone` = "666"
WHERE bo.`boyName` = "张无忌";
#3、删除
#注意:删除整行
#方式1:delete
/* (1)单表删除**
delete from 表名 where 筛选条件
(2)多表的删除
sql 92:
delete 表1的别名 //删除那个就写那个表的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件
sql 99:
delete 表1的别名
from 表1 别名
inner/left /right/ join 表2 别名
on 连接条件
where 筛选条件
方式2:truncate
语法:truncate table 表名; ---删除表中全部内容
*/
#DML语言--总结:表行的操作:insert into(插/增)、update(改)、delete from(删) 表名,表行的操作不加table关键字
/*
(1)插入
插入表行---(新增一行) INSERT INTO ... VALUES
方式1(新增一列或多列):
insert into 表名(列名……)
values(列值)
方式2(新增一列):
insert into 表名
set 列名 = 值
修改表值---(更改某行指定列的数据)UPDATE ... SET
方式1(更改单表的某一行的某列)
update 表名
set 列 = 新值,列 = 新值
where 筛选条件;
方式2(修改多表的记录【补充】)
语法:
sql92
update 表1 别名,表2 别名
set 列 = 值
where 连接条件
and 筛选条件
sql99
update 表1 别名
inner join 表2 别名
on 连接条件
set 列 = 值
where 筛选条件
删除表行---删除行 DELETE FROM
方式1 delete
单表的删除
delete from 表名 筛选信息
方式二 truncate
*/
#DDL语言--总结:表的操作:CREATE(增)、ALTER(改)、delete from(删) 注意table关键字
#即 alter table 表名 关键字 column
/*
(1)新增表
create table 表名(
列名 数值类型(长度)
列名 数值类型(长度)
);
(2)修改表 --- 修改表列名、列类型、新增列、删除列、修改表名
修改列名---顺带修改值类型
alter table 表名 change column旧列名 新列名 新的值类型
修改列类型或约束--- #只能修改为同一类型的其他值
alter table 表名 modify column 列名 新列类型
添加新列---add
alter table 表名 add column 新列名 列类型
删除列---drop
alter table 表名 drop column 列名
修改表名---drop
alter table 表名 rename to 新表名
(3)表的删除
drop table 表名
(4)表的复制
方式1:只复制表的结构
create table 新表 like 旧表
方式2:复制表的结构和内容
create table 新表 select * from 旧表
*/
# 练习:为`myemployees`增加表`my_employees`.练习表中数据的增加、删、改
#(1)创建表
CREATE TABLE `my_employees`(
id INT(10),
First_name VARCHAR(10),
USER_id INT(10),
salary DOUBLE(10,2)
);
#(2)增加表中数据
INSERT INTO `myemployees`.`my_employees`(`id`,`First_name`,`salary`)
VALUES(13,'zhang',-8000),(14,'zhang',-8000),(15,'li',8000);
#(3)修改表中数据(id=13的人的姓名)
UPDATE `myemployees`.`my_employees`
SET `First_name` = 'ZHAO'
WHERE id = 13;
#(4)删除表中数据(行)
DELETE FROM `myemployees`.`my_employees`
WHERE id = 13;
# 继续练习表的操作
#(5)创建新表
CREATE TABLE `my_employees2`(
id INT(10),
First_name VARCHAR(10),
USER_id INT(10),
salary DOUBLE(10,2)
);
#(6)修改表列
# 改列名
ALTER TABLE `myemployees`.`my_employees` CHANGE COLUMN id0 id2 INT;
# 改列属性
ALTER TABLE `myemployees`.`my_employees` MODIFY COLUMN id2 BIGINT; #已有值的表操作列值会报错
ALTER TABLE `myemployees`.`my_employees2` MODIFY COLUMN id BIGINT;
# 添加新列
ALTER TABLE `myemployees`.`my_employees2` ADD COLUMN id2 BIGINT;
#(7)删除表列
ALTER TABLE `myemployees`.`my_employees` DROP COLUMN salary;
# (8)表的重命名
ALTER TABLE `myemployees`.`my_employees` RENAME TO newemployee;
# (9)表的复制
CREATE TABLE copy_employee LIKE `myemployees`.`my_employees2`;
CREATE TABLE copy_employee2 SELECT * FROM `myemployees`.`my_employees2`;
# (10)表的删除
DROP TABLE `myemployees`.copy_employee2;