主键 sql分类 自增 not null

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

     create table student (id int, name varchar(20));
    
  2. 查看所有的表

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

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

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

     create table teacher (id int, name varchar(10)) 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 varchar(40),
        num int,
        price double,
        category varchar(20),
        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
     (3,'鼠标',200,20,'电脑配件','2008-12-21'),
     (4,'键盘',260,35,'电脑配件','2018-11-25'),
     (3,'写字板',10,120,'电脑配件','2006-10-28');
    
  2. 修改数据

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

    -修改多条数据

     update t_item set title='鼠标',price=38 where title='双飞燕鼠标';
    
  3. 删除数据

     delete from t_item where id is null;
    
     delete from t_item where title='键盘';
    
  4. 查询数据

    -查询sql 后面也可以添加where 条件
    select title from t_item where category='日用品';
    练习:
    1.创建newdb数据库创建表emp(员工表)字段有:id name、salary(工资)、dept(部门名称)、joinDate(入职日期)

    create table emp(
    id int,
    name varchar(10),
    salary double,
    dept varchar(10),
    joinDate date
    );

2.插入刘关张和唐僧四人组 7个人 刘关张部门为:三国部 唐僧它们部门为取经部
insert into emp values(1,'刘备',1800,'三国部','2001-12-10'),(2,'关羽',800,'三国部','2002-12-10'),(3,'张飞',5800,'三国部','2003-12-10'),(4,'唐僧',11800,'取经部','2004-12-10'),(5,'悟空',2800,'取经部','2005-12-10'),(6,'八戒',1800,'取经部','2006-12-10'),(7,'悟净',800,'取经部','2007-12-10')
3.修改刘备的工资为2000

    update emp set salary=2000 where id=1;

4.修改唐僧名称为唐长老
update emp set name='唐长老' where id=4;
5.给表添加一个年龄字段 在name字段的后面

    alter table emp add age int after name;

6.修改三国部的年龄为45
update emp set age=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 varchar(20),
        detpId int,
        joinDate date
    );
    create table dept (
        id int primary key auto_increment,
        name varchar(20) not null
    );

    insert into dept (name) values ('财务');
    insert into dept (name) values ('市场');
    insert into emp (name,deptId) values ('小明',1),('小红',1),('小白',2),('小绿',2);

事务

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

-演示事务:
创建User表 有id 和money字段 
插入一条数据  id=1  money=100;
1.开启两个终端A、B,在A里面 执行
    set autocommit=0; 然后修改表中的某个数据
此时去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

create table t_int (id int(6) 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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,881评论 4 368
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,052评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,598评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,407评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,823评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,872评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,037评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,778评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,505评论 1 247
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,745评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,233评论 1 264
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,568评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,231评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,141评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,939评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,954评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,784评论 2 275

推荐阅读更多精彩内容

  • 数据库概述: 数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用...
    字节码阅读 489评论 0 0
  • 注:1.mysql是一种关系型数据库 2.大小写不敏感 3.字符串用单引号,若字符串里有单引号,则...
    孙浩j阅读 1,260评论 0 2
  • 《盛世流年》目录 下一章 假扮 霍去病,张氏和小雅一起向平阳公主行礼后,平阳公主安排下人上茶,三个人依次在偏殿西侧...
    珍珠琉璃阅读 207评论 0 1
  • 最终还是选择画画,我却没感到后悔过。 毕业后,工作原因,没空画画了,再一次重拾画笔已经为人妻为人母,然而画纸面前却...
    飞儿创意阅读 299评论 1 4
  • 我有好多个渴望 渴望着树叶不再凋零 一年四季 都是一片绿 渴望云可以长在很低很低 这样下起雨来 只会淋湿自己 我真...
    梦一小白阅读 197评论 0 0