1:法:创建数据库create database db1 charset utf8;数据库命名规则:字母数字下划线 @ # $区分大小写唯一性不能使用关键字 2:数据库相关操作:查看数据库:show databasesshow create database db1select database(); 3:选择数据库名use db1 4:删除数据库:drop database db1 5 修改数据库alter database db1 charset utf8 二 表创建表create table db1( id int perimary_key, name varchar(255), ) 改表alter table db1 modify name char(16), 查看show tables查看表的详细信息show create table db1; 查看表结构desc db1 删表drop table db1 w文件的一行内容增:insert into db1.t1 values (1,‘egon‘), (2,"alex") (3,"lxx") 修改表名:alter table 旧表名 rename 新表名;增加字段;alter table 表名 add 字段名 数据类型【完整性约束条件}删除字段 alter table 表名 drop 字段名 数据类型整型:1:作用id号,各种号码, 年龄 等级 浮点型作用:存储身高体重 薪资相同点:对于三者来说, 都能存放30位小数不同点精度的顺序从低到高:float double decimalfloat与 double类型能存放的整数位比decimal更多 整型1:作用:姓名 地址 描述类的信息 2:分类:char 定长varchar 变长 对比:char:优点:存取速度快缺点:浪费空间 varchar:优点:节省空间缺点:节省空间 日期类型:date:1999-01-27time :11:11:11datetime:1999-01-27 11:11:11year:1999 枚举类型与集合类型:enum:单选 只能在给定的范围内选一个值 如 sex 性别,只能选男女set:对选,可以选择多个值 如何:爱好 可以有多个爱好 三: 完整性not null 与 default是否可空 null 表示空 非字符串not null不可空null 可空 default 默认值 创建列时可以指定默认值 unique 设置唯一约束 primary key 主键 不为空且唯一 auto-increment:约束字段为自动增长 被约束的字段必须同时被key 约束 foreign key 外键:foreign key(press_id) references press(id) 多对一:关联方式 foregin key 多对多: 关联方式 foreign key + 一张新的表 一对一 foreign key + unique 四:单表查询语法:select distinct 查询字段1 查询字段2 。。。。 from 表名 where 分组之前的过滤条件 group by 分组 依据 having 分组之后的过滤条件 order by 排序字段 limit 显示的条数 五 多表查询 内连接:把两张表有对应关系的记录链接成一张虚拟表select * from t1 inner join t2 on t1.t2_id =t2.id 左练级:在内连接的基础上保留左边没有对应关系的记录select * from t1 left join t2 on t1.t2_id=t2.id 右链接:在内连接的基础上保留右边没有对应关系的记录select * from t1 right join t2 on t1.t2_id=t2.id 全连接:在内连接的基础上 保留左右边没有对应关系的记录select* from t1 join t2 on t1.t2_id=t2.idunionselect * from right join t2 on t1.t2_id=t2.id; 六 子查询吧一个查询语句用括号括起来,当做另外 一条查询语句的条件去用,称为子查询:select t1.name from t1 inner join t2 on t1.t2_id=t2.id where t2.name="技术": 七:创建视图视图就是通过查询得到一张虚拟表, 然后保存下来 下次可以直接使用这样可以不用重复查询。 语法:create view teacher_view as select tid from teacher where tanme="李萍老师"于是查李萍老师教授的课程名sql 可以改为:create view teacher2course asselect * from teacher inner join course on teacher.tid = course.teacher_id; 强调:在硬盘中,视图自由表结构文件, 没有表数据文件视图用处用于插叙 尽量不要修改视图中的数据、删除: drop viewteacher2course 八:触发器:1:在满足对某张表数据的增删改的情况下 自动触发的功能称之为触发器2:触发器专门针对我们对某一涨表数据增 insert 删delete 改update 的行为 这类行为一旦执行就会触发触发器的执行, 即自动运行另外一段sql代码 3:针对插入create trigger tri_after_insert_t1 after insert on 表名 for each rowbegin sql代码end 针对删除create trigger tri_after_delete_t1 after delete on 表名 for each rowbegin sql 代码。。end 针对修改create trigger tri_after_update_t1 after update on 表名 for each rowbegin sql代码。。。end 04 案例CREATE TABLE cmd ( id INT PRIMARY KEY auto_increment, USER CHAR (32), priv CHAR (10), cmd CHAR (64), sub_time datetime, #提交时间 success enum (‘yes‘, ‘no‘) #0代表执行失败); CREATE TABLE errlog ( id INT PRIMARY KEY auto_increment, err_cmd CHAR (64), err_time datetime); delimiter $$create trigger tri_after_insert_cmd after insert on cmd for each rowbegin if NEW.success = ‘no‘ then insert into errlog(err_cmd,err_time) values(NEW.cmd,NEW.sub_time); end if;end $$delimiter ; drop trigger tri_after_insert_cmd; 九:事务01 什么是事务 开启一个事务可以包含一些sql语句,这些sql语句要么同时成功 要么一个都别想成功,称之为事务的原子性 02 事务的作用 03 如何用create table user(id int primary key auto_increment,name char(32),balance int); insert into user(name,balance)values(‘wsb‘,1000),(‘egon‘,1000),(‘ysb‘,1000); try: update user set balance=900 where name=‘wsb‘; #买支付100元 update user set balance=1010 where name=‘egon‘; #中介拿走10元 update user set balance=1090 where name=‘ysb‘; #卖家拿到90元except 异常: rollback;else: commit;
原文地址:https://www.cnblogs.com/lx3822/p/9163794.html
时间: 2024-10-20 20:53:53