MySql02

复习

数据库相关

  1. 连接数据库的命令

    mysql -uroot -p 
  2. 创建数据库

    create database db2;
  3. 查询所有的数据库

    show databases;
  4. 查询单个数据库的信息

    show create database db2;
  5. 删除数据库

    drop database db2;
  6. 创建数据库时指定字符集

    create database db2 character set utf8;
  7. 使用数据库

    use db2;

表相关的SQL

  1. 创建表student

    ));
  2. 查看所有的表

    show tables;
  3. 查看表属性 数据库表的引擎 和 编码

    show create table student;
  4. 查看表结构

    desc student;
  5. 创建表 指定引擎和编码

    )) engine=innodb charset=utf8;
  6. 修改表的名字

    rename table student to stu;
  7. 给表添加字段

    -在最后

    alter table stu add age int;

    -在最前端添加

    alter table stu add age int first;

    -在某个字段的后面

    alter table stu add age int after id;
  8. 删除表字段

    alter table stu drop age;
  9. 修改表的属性

    alter table stu engine=myisam charset=utf8;
  10. 修改字段的名称和类型

    alter table stu change age fatherAge int;
  11. 修改字段的类型和位置

    alter table stu modify fatherAge double after name;
  12. 删除表

    drop table stu;

数据相关

-创建商品表:

    create table t_item(
        id int,
        title ),
        num int,
        price double,
        category ),
        createDate date
    );
  1. 插入数据 -全表插入 insert into t_item values(1,'毛巾',89,4.5,'日用品','1985-06-23'); -指定字段插入

    insert into t_item (title,price,category)
    values
    ('香皂',1.5,'日用品');

    -批量插入数据

    insert into t_item values
    (,,,'电脑配件','2008-12-21'),
    (,,,'电脑配件','2018-11-25'),
    (,,,'电脑配件','2006-10-28');
  2. 修改数据

    update t_item set title='双飞燕鼠标' where title='鼠标';

    -修改多条数据

     where title='双飞燕鼠标';
  3. 删除数据

    delete from t_item where id is null;
    
    delete from t_item where title='键盘';

查询数据

-查询sql 后面也可以添加where 条件

select title from t_item where category='日用品';

练习:

1.创建newdb数据库创建表emp(员工表)字段有:id name、salary(工资)、dept(部门名称)、joinDate(入职日期)

), salary ), joinDate date );

2.插入刘关张和唐僧四人组 7个人 刘关张部门为:三国部 唐僧它们部门为取经部

,,,,,,,,,,,,,,'取经部','2007-12-10')

3.修改刘备的工资为2000

 ;

4.修改唐僧名称为唐长老

;

5.给表添加一个年龄字段 在name字段的后面

 alter table emp add age int after name;

6.修改三国部的年龄为45

 where dept='三国部';

7.修改取经部的日期为今天日期

 update emp set joinDate='2018-2-26' where dept='取经部';

8.修改工资小于5000的年龄为18 update emp set age=18 where salary<5000; 9.删除三国部门所有员工 delete from emp where dept='三国部'; 10.删除全表

  delete from emp;
  drop table emp;

eclipse自定义代码块 自定义模板代码

-添加方式:window->最后一个->data management->sql Develepment->sql Editor->templates->new

name:是简化后的代码
description:描述
pattern:简化前的代码

应用场景:代码比较复杂 并且频繁使用的时候可用自定义代码块

主键及自增

每一张表通常会有一个且只有一个主键 来表示每条数据的唯一性
主键其实是对某一个字段的 约束
-主键特性:1.值不能重复 2.非空(不能赋值为null)
-主键约束写法:
 create table student (id int primary key,age int); 

-主键+自增的写法:
 create table student (id int primary key auto_increment,age int); 

非空

-非空约束 not null
create table student (id int primary key auto_increment, age int not null);

表字段的注释

-表字段的注释关键字:comment
 create table user (
        id int comment '用户的id',
        age int comment '用户的年龄'
    );

单引号和`的区别

单引号:用于给字符串赋值
`:用于给表名 和 字段名赋值 可以省略不写

表设计

-在设计表字段的时候,如果某个字段有可能出现大量的重复(称为数据冗余),需要把该字段单独提出创建一张新表,把可能重复的放到新表内,在原表只需要使用新表的id即可

练习:

-创建员工表(emp) 和 部门表(dept) 分别在两个表中插入几条数据 id要进行主键约束并且自增 部门名称不能为null
 create table emp (
        id int primary key auto_increment,
        name ),
        detpId int,
        joinDate date
    );
 create table dept (
        id int primary key auto_increment,
        name ) not null
    );
 insert into dept (name) values ('财务');
    insert into dept (name) values ('市场');
    ),(),(),();  

事务

-事务是数据库中的执行单元
-事务能够保证事务内部的sql语句要么都成功,要么都失败
-mysql 客户端(终端、命令行)事务是默认提交的
-修改mysql事务的自动提交
    -查看当前数据库是否自动提交事务
show variables like '%autocommit%';

    -给自动提交参数赋值为0 是关闭 1是开启
  ;


-演示事务:
创建User表 有id 和money字段
插入一条数据  id=1  money=100;
1.开启两个终端A、B,在A里面 执行
;
 然后修改表中的某个数据
此时去B终端查看,因为A开启了事务此时并没有提交,则A的操作是在内存中操作所以此时B终端看不到数据的改变,直到A执行Commit才把内存中的操作执行到数据库,如果在执行Commit之前执行了Rollback 则A窗口 会回到修改之前的状态
begin:开启事务
commit:提交事务
rollback:回滚

SQL分类

数据定义语言 DDL

data Definition language -DDL不支持事务 不能回滚 常见命令有: create alter drop

数据操纵语言 DML

Data Manipulation Language -DDL支持事务 常见命令:insert update delete select属于DML

数据查询语言 DQL

Data Query Language select 是最常用的命令 面试问的最多

TCL

Trainsaction Control Language 事务控制语言 常见命令:begin commit rollback

DCL

Data Control Language 数据控制语言

数据库数据类型

整数

-常用类型为 int(m) bigint(m) -m代表显示的位数 意思是当显示的数据不足m值时在前面补0,前提是必须在字段的声明后面添加zerofill

) zerofill);

注意:有个别公司把这个m 当成数据长度来用

浮点数

float(m,d): 不常用 double(m,d):比float精度高 decimal(m,d):比double精度还要高好多 m代表总长度,的代表小数的位数

当涉及到钱的时候需要用到高精度的类型 会使用decimal

字符串

varchar(20) :可变长度 执行效率低 节省空间 abc 3 :65535 但是建议不超过255如果文本超过255则建议使用text char(20) :固定长度 执行效率高 占空间大 abc 20 长度255 text:长度可变最大65535

日期

date:只能保存日期 time:只能保存时间 datetime:保存日期+时间 如果不赋值默认值为null,最大值9999-12-31 timestamp:保存日期+时间 如果不赋值默认为当前时间,最大值2038-01-19 因为timestamp有默认值当前时间所以平时使用较多

案例:创建表t,字段d1 date,d2 time,d3 datetime,d4 timestamp

   create table t (d1 date,d2 time,d3 datetime, d4 timestamp);

    insert into t (d1,d2) values ('2018-12-21','12:22:38');

    insert into t values ('2018-12-21','12:22:38','9898-12-10 12:06:38','2028-05-06 11:11:11');

timestamp如果插入数据超出取值范围则报错

回顾

1.主键 primary key 唯一 不能为null

2.自增 auto_increment

3.非空 not null

4.注释 comment

5.'区别字段名和表名 '字符串的值的时候

6.事务 数据库的执行单元

7.begin 开启事务 commit 提交事务 rollback 回滚事务 查看当前数据库是否自动提交 show variables like '%autocommit%'; 关闭自动提交 开启为1 set autocommit=0;

8.SQL分类 ddl 数据定义语言 不支持事务 create drop alter dml 数据操作语言 支持事务 insert update delete select(也属于dql) dql 数据查询语言 select tcl 事务控制语言 begin commit rollback dcl 数据控制语言 控制权限分配

9.数据类型 整数:int bigint 浮点数:float double decimal(m,d) m总长度 d小数点后面的位数 字符串: char(20) varchar(20) text char 固定长度 text长度65535 日期:date time datetime timestamp

作业: 创建 员工表 emp 部门表 dept

    商品表 t_item 商品分类 t_item_category

最新文章

  1. 一小时包教会 —— webpack 入门指南
  2. js模块开发(一)
  3. centos6.7下安装mvn 、安装elasticsearch下ik分词
  4. HDU-统计难题
  5. javaWeb 使用jsp开发 foreach 标签
  6. css+div网页设计(二)--布局与定位
  7. Android处理Bitmap使其能够不失真等比缩放裁剪后显示在ImageView上
  8. Zendframework 模块加载事件触发顺序。
  9. jquery中json数据转换为字典
  10. Python核心编程2第五章课后练习
  11. PLSQL Developer过期要注冊表
  12. [使用]Git--命令行
  13. 企业架构研究总结(38)——TOGAF架构能力框架之架构能力建设和架构治理
  14. html 5 本地数据库(Web Sql Database)核心方法openDatabase、transaction、executeSql 详解
  15. TensorFlow框架(5)之机器学习实践
  16. shell脚本进阶之条件测试与条件语句
  17. ThreadPool.QueueUserWorkItem引发的血案,线程池异步非正确姿势导致程序闪退的问题
  18. Spring扩展自定义的XML标签
  19. http://ctf.bugku.com/challenges#love:bugku--love
  20. Python中的几种矩阵乘法(转)

热门文章

  1. 牛客练习赛34-C-little w and Segment Coverage(差分数组)
  2. 【ACM】括号配对问题 - 栈
  3. 【Linux】让Ubuntu 支持 GBK等字符集,解决中文乱码
  4. 10 - EmbeddedChannel-测试ChannelHandler链
  5. Dedecms标签arclistsg调用单表模型出错的解决方法
  6. 禁止form重复提交
  7. 2019年我的nodejs项目选型
  8. border实现矩形中斜线分割 切换按钮
  9. Miner3D Developer 开发工具
  10. Miner3D Professional专业版