2019-03-21 表格的删改、表格数据的增删改、事务、简单查
2019-03-21 本文已影响0人
北街九条狗
表格的删改
创建表 create table
-- 删除表 drop table
-- 修改表 alter table
-- ①修改列的长度(modify 修改)
create table test1(
id int(5) auto_increment,
name varchar(200) default'张三',
PRIMARY KEY(id)
)
ALTER TABLE test1 MODIFY id int(9);
-- ②修改列的数据类型(前提:修改列全为null和默认值)
ALTER TABLE test1 MODIFY id varchar (9);
-- ③添加删除约束()
ALTER TABLE test1 MODIFY name varchar(200) not null;
create table test2(
id int(5),
name varchar(200)
)
ALTER table test2 add primary key(id);
ALTER table test2 add unique (name);
ALTER table test2 add foreign key ()
-- ④列和表的重命名(改表名rename,改列名change)
-- ⑤添加或删除列(删除 drop)
ALTER table test2 add age int(3) default 0 not null;
ALTER table test2 add (
age1 int(3) default 0 not null,
age2 int(3) default 0 not null
)
ALTER table test2 drop age;
ALTER table test2 drop column age1,drop column age2;
表格数据的增删改
-- DQL 数据查询语言--->查
-- DML 数据操作语言--->增删改
-- DDL 数据定义语言--->create alter drop
-- 插入 insert into 表名(列名列表)values(值列表)
-- 修改 update 表名 set 哪些列[where 修改哪些列]
-- 将student1 表中的所有人age 改为30
update student1 set age =30;
-- 将student1 表中的身高1.9以上的人age 改为30
update student1 set age =20
where height >1.9;
-- 将student1 表中的名字是华安的人age 改为35
update student1 set age =25
where stuname='华安';
-- 将student1 表中的出生在2000年后人age +1
update student1 set age =age+1
where birthday>'2000-1-1';
-- 将student1 表中id>9527的性别改为女 年龄+2
update student1 set age =age+2,gender='女'
where id>9527;
-- 删除
-- delete from 表名[where 哪些行]
delete from student2 where age>10;
-- and or
--
update student1
set age=age+10
where stuname ='华安' or age<37;
事务
-- 事务:一组增删改(经过提交或回滚)
-- 事务有四大特性
-- A:原子性:组成事物的增删改要么全成功,要么全失败
-- C:一致性:一旦事务结束(提交或回滚过),数据保持一致性
-- I:隔离性:事务之间互不影响
-- D:持久性:事物一旦提交,不能回滚
-- navicat 默认是将所有增删改一次一提交
set autocommit =false-- 取消自动提交
commit-- 提交
rollback -- 回滚相当于撤销
-- DML 增删改
-- DDL 自动以commit的方式结束事务
-- truncate 截断表(清空表)因为是DDL,不能回滚数据
truncate table test2
delete from test2
-- 锁
-- 存档点(savepoint s1)和回档点(rollback to s1)
简单查询
-- 简单查询
-- 1.查什么;2.从哪查
-- 可以查列,表达式
select
from
-- 查询emp和dept表中的所有数据
select deptno,loc,dname
from dept
select * -- 代表所有列
-- null值参与运算结果一定为null
-- IFNULL(expr1,expr2) 若第一个参数不为null,返回第一个,否则返回第二个
select ename, sal,sal*1.2
from emp
-- 表达式和函数一定要起列别名
-- 列别名 表达式后+空格+(名字)
-- 或 表达式后+as+(名字)
-- 注意:特殊情况下要加双引号
-- ①别名中有空格
-- ②特殊字符
-- distinct 去重(复)
-- 不显示重复数据,不是删除
select distinct depton
from emp