mysql 学习笔记(二)

mysql之表的增删改查

1.增加一行

  insert into msg

  (id,title,name,content)

  values

  (1,'初来乍到','张三','刚来能不能当老大?');

  默认建表一般用UTF8,而在windows下窗口是GBK的。

  因此,需要声明字符集:set names gbk;

        

注意:在word里会有两种英文单引号,[ ‘ ]与[ ' ]。mysql里用的是单引号[ ' ]。一般在其它里都是[ ' ],如你在笔记本里编写就是[ ' ]。那么如何输出[ ' ],先输出[ ‘ ],然后在其后按ctrl+z即可将[ ‘ ]转换成[ ' ]。

连续插入三条语句

       insert into msg

  (id,title,name,content)

  values

  (3,'3标题','刘备','雌雄双剑'),

  (4,'4标题','关羽','青龙偃月刀'),

  (5,'5标题','张飞','丈八蛇矛');

2.更改一行数据

  update msg

  set

  id = 2,

  content = '偏要当老大'

  where

  name = '李四';

3.删除一行数据

         delete from msg where name = '李四';

4.查看数据

      select id,title from msg;                        (查看整个表的id,title列数据)

  select id,title from msg where id > 2;    (查看id > 2的id,title列数据)

mysql数据库相关知识

 1.

姓名

籍贯

性别

年龄

简介

所谓建表:就是声明列的过程

数据是以文件的形式放在硬盘(也有放在内存里)

列:不同的列类型占的空间不一样

选择的原则:够用,又不浪费

2.

姓名

籍贯

性别

年龄

简介

张三

安徽

23

增加数据是增加行的过程

详解列类型:

         整型

                  tinyint                        1字节     有符号:(-128 – 127)         无符号:(0 - 255)

                  smallint                     2字节     有符号:(-215 –215-1)         无符号:(0 – 216-1)

                  mediumint                3字节    

                  int                             4字节    

                  bigint                         8字节    

        

从数学上来讨论tinyint

  1. 占据空间
  2. 存储空间

  tinyint 微小的列类型,1字节

   测试tinyint

    create table class (

    id int primary key auto_increment,

    name varchar(10),

    age tinyint

    ) charset utf8;

    insert into class

    (name,age)

    values

    ('zhangsan','25');

    insert into class

    (name,age)

    values

    ('zhangsan','128');          //范围超出

    tinyint默认是有符号的(-128-127),强制声明为有符号:

    tinyint(M) unsigned zerofill

    alter table class add age2 tinyint unsigned;    //增加一列age2

    insert into class

    (name,age,age2)

    values

    ('lisi','25',-1);    //范围超出

    insert into class

    (name,age,age2)

    values

    ('lisi','25',129);

  alter table class add age3 tinyint(1);

  unsigned  //无符号,影响存储范围

  M         //代表宽度,(在zerofill时才有意义) 00001 00002 M=5

  zerofill  //零填充 (如果某列为zerofill为无符号)

  列的默认值:alter table class add age4 tinyint(1) not null Default 0;

  查看class表的内容:select * from class;

  小数型/浮点型

         float(M,D)

         M   //精度(总位数,不包含点)

         D    //小数位

  定点型(更精确)

    decimal(M,D)  

  测试:

         建表:

    create table goods (

    name varchar(10) not null default '',

    price float(6,2) not null default 0.00

    )charset utf8;

         插数据:

    insert into goods

    (name,price)

    values

    ('跑步机',688.896);

小知识点:因为是小数点后面保留两位,所以688.896为四舍五入,但是不是平常所以说的四舍五入而是银行所用的四舍五入,即5的前面是1、2、3或4 时舍,5的前面为6、7、8或9时入。一般浮点型不定位数,但mysql除外。

                 

                  字符型:

                          char 定长,char(M),M代表可容纳的字符数

                          varchar 变长,varchar(M),代表宽度,即可容纳的字符数

                          区别:

                                   char定义:M个字符,如果存的小于M个字符,实占M个字符,最后实际有空格时取出会丢失

                                   varchar定义:M字符,如果存的小于M个字符,实占N个字符,N <= M

                          char与varchar型的选择原则

  1. 空间利用效率,四字成语表,char(4)

    个人简历,微博140字,varchar(140)

  1. 速度,用户名:char (char速度快些)

  text  文本串,可以存储大段字符

  日期时间类型:

         //year               年类型:1901-2155  (0000表示错误时选择)

         //date               日期类型:

         //time               时间类型:

         //datetime      时期时间类型:

  年类型:

  创建表y:

    create table y (

    ya year(4)

    );

  插入一行数据:(省去写列时默认为第一列)

    insert into y

    values

    ('1901');

  insert into y values ('97');       //插入1997年

  insert into y values ('12');       //插入2012年

  如果输入2位,00-69 表示2000-2069

              70-99 表示1970-1999

                                           

  日期date类型: 典型格式:1992-08-12

  存储范围:  1000-01-01 — 9999-12-31

  日期date类型测试:

    create table d (

    title varchar(30),

    dt date

    )charset utf8;

    insert into d

    values

    ('开国大典','1949-10-01');

                                                    

  时间time类型:典型格式:hh:mm:ss

  存储范围:  -838:59:59 — 838:59:59

  时间time类型测试:

    create table t (

    tm time

    );

                                                    

  insert into t values ('13:34:56')

                                           

  日期时间类型datetime:典型格式:1989-05-06 14:32:08

  存储范围:  1000-01-01 00:00:00 —9999-12-31 59:59:59

  Datetime类型测试:

    create table user (

    name varchar(20) not null default '',

    regtime datetime not null default '1000-01-01 00:00:00'

    ) charset utf8;

    insert into user

    (name)

    values

    ('张三');

    insert into user

    values

    ('李四','2012-03-22 14:28:36');

注意:在开发中,很少用日期时间类型来表示一个需要的精确到秒的列,原因是虽日期时间类型能精确到秒,而且文件查看,但不方便计算时间间隔,一般用时间戳来表示。

  时间戳:是1970-01-01 00:00:00到当前时间的秒数

                                  

   创建teacher库(枚举类型)

    create table teacher (

    name varchar(20),

    gender tinyint

    );

    insert into teacher values ('张',1);          //('张','男')中 '男'在UTF8中占三个字节,超过了tinyint一个字节,所以用1替代。

    create table t2 (

    gender enum('男','女')   //其实枚举enum类型不符合关系型数据库的理念

    ) charset utf8;

    insert into t2 values ('女');

原文地址:https://www.cnblogs.com/danshui/p/2581600.html