zoukankan      html  css  js  c++  java
  • day 34小结

    1.操作表

    ​ 增:

    create table 表名(
    
        字段名		列类型	[可选的参数],
        字段名		列类型	[可选的参数],
        字段名		列类型	[可选的参数]
        
    )charset = utf8;
    
    例子1:
    	create table t1(
        
            id int ,
            name char(5)
            
        )charset = utf8;
        
    Query OK, 0 rows affected (0.41 sec)  # 表示创建成功
    增加数据语法:
    	语法: insert into 表名 (列1,列2) values (值1,'值2');
    	例子:	insert into t1 (id,name) values (1,'zekai');
    		 
    	
    例子2:
    	create table t1(
        
            id int auto_increment primary key,
            name char(5) not null default 'xxx',
            age int not null default 0
            
        )charset = utf8;
        
        表的约束:
        	auto_increment : 自增 1
        	primary key : 主键索引,加快查询速度
        	not null : 标识该字段不能为空
        	default : 为该字段设置默认值
    

    ​ 列类型:

    • 数字

      • 整型

        tinyint

        smallint

        int

        mediumint

        bigint

        a.整数类型
        b.取值范围
        c.unsigned 加上代表不能取负数 只适用于整型

      应用场景: 根据公司业务的场景,来选取合适的类型

      • 浮点型

        float: 不一定精确

        cecimal: 非常精确的数字(5000.23) decimal(6.2) m是数字总数(符号不算) , d是小数点后个数

        mysql> create table t5(
            -> id int auto_increment primary key,
            -> salary decimal(16,10),
            -> num float
            -> )charset=utf8;
        Query OK, 0 rows affected (0.55 sec)                                                    
        
      • 字符串

        • char(长度): 定长

          create table t6(
          	id unsigned int auto_increment primary key,
              name char(10) not null default 'xxx'
          )charset=utf8;
          
        • varchar(长度): 变长

          create table t6(
          	id int auto_increment primary key,
              name varchar(10) not null default 'xxx'
          )charset=utf8;
          
          mysql> insert into t6 (name) values ('hello');
          Query OK, 1 row affected (0.05 sec)
          
          mysql> select * from t6;
          +----+-------+
          | id | name  |
          +----+-------+
          |  1 | hello |
          +----+-------+
          1 row in set (0.00 sec)
          
          mysql> insert into t6 (name) values ('helloworldimthegod');
          ERROR 1406 (22001): Data too long for column 'name' at row 1 # 超过约定长度会报错
          

      ​ 区别:

      ​ char: 定长, 无论插入的字符是多少,永远固定占规定的长度

      ​ 应用场景: 1.身份证
      ​ 2.手机号
      ​ 3.md5加密后的值,如密码 等

      ​ varchar : 变长, 根据插入的字符串的长度来计算所占的字节数,但是有一个

    • 时间日期类型

      • time
        HH:MM:SS ('-838:59:59'/'838:59:59')
      • date
        YYYY-MM-DD(1000-01-01/9999-12-31)
      • datetime(************************)
        YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y)
      • timestamp
        YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)
      • year
        YYYY(1901/2155)

      例子:

      create table t8(
      	d date,
          t time,
          dt datetime
      
      );
      mysql> insert into t8 values(now(),now(),now());
      Query OK, 1 row affected, 1 warning (0.06 sec)
      
      mysql> select * from t8;
      +------------+----------+---------------------+
      | d          | t        | dt                  |
      +------------+----------+---------------------+
      | 2019-10-29 | 16:13:52 | 2019-10-29 16:13:52 |
      +------------+----------+---------------------+
      1 row in set (0.00 sec)
      
      
    • 枚举
      列出所有的选项

      create table t9(
      	id int auto_increment primary key,
          grnder enum('male','female')
      )charset utf8;
      
      mysql> insert into t9 (grnder) values ('male');
      Query OK, 1 row affected (0.13 sec)
      
      mysql> insert into t9 (grnder) values ('female');
      Query OK, 1 row affected (0.05 sec)
      
      mysql> insert into t9 (grnder) values ('asdgsadgkag');
      ERROR 1265 (01000): Data truncated for column 'grnder' at row 1
      

    • 修改表名

      alter table 旧表名 rename 新表名;
      
    • 增加字段

      alter table 表名
      add 字段名  列类型 [可选参数],
      add 字段名  列类型 [可选参数];
      
      mysql> alter table t5 add name varchar(32) not null default '';
      Query OK, 0 rows affected (0.53 sec)
      Records: 0  Duplicates: 0  Warnings: 0
      上面添加的永远在最后一列之后
      
      
      alter table 表名
      add 字段名  列类型  [可选的参数] first;
      
      mysql> alter table t5 add name2 varchar(32) not null default '' first;
      Query OK, 0 rows affected (0.46 sec)
      Records: 0  Duplicates: 0  Warnings: 0
      
      
      alter table 表名
      add 字段名  列类型  [可选参数]  after 字段名;
      mysql> alter table t5 add name4 varchar(32) not null default '' after name;
      Query OK, 0 rows affected (0.45 sec)
      Records: 0  Duplicates: 0  Warnings: 0
      
    • 删除字段

      alter table 表名 drop 字段名;
      mysql> alter table t5 drop name;
      Query OK, 0 rows affected (0.41 sec)
      Records: 0  Duplicates: 0  Warnings: 0
      
    • 修改字段

      alter table 表名 modify 字段名 数据类型 [完整性约束条件...];
      mysql> alter table t5 modify name2 char(11);
      Query OK, 1 row affected (0.82 sec)
      Records: 1  Duplicates: 0  Warnings: 0
      
      
      alter table 表名  change  旧字段名  新字段名  新数据类型  [完整性约束条件...];
      mysql> alter table t5 change name22 hobby varchar(32);
      Query OK, 0 rows affected (0.46 sec)
      Records: 0  Duplicates: 0  Warnings:
      
      # 注意:如将varchar类型转成int类型,原字段必须是数字,
      # 而且int的最大值是4294967295,原字段的值需要小于等于int的最大值才可以。
      
    • drop table 表名;  ### 线上禁用
      mysql> drop table t8;
      Query OK, 0 rows affected (0.23 sec)
      
    • mysql> show tables;
      +-----------------+
      | Tables_in_staff |
      +-----------------+
      | t1              |
      | t2              |
      | t5              |
      | t6              |
      | t9              |
      +-----------------+
      5 rows in set (0.00 sec)
      
    • 复制表结构:

      show create table t2;
      +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      | Table | Create Table                                                                                                                                                                                     |
      +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      | t2    | CREATE TABLE `t2` (
        `id` int(11) DEFAULT NULL,
        `name` varchar(50) DEFAULT NULL,
        `sex` enum('male','female') DEFAULT NULL,
        `age` int(3) DEFAULT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
      +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      1 row in set (0.00 sec)
      
      mysql> create table t10 like t5;
      Query OK, 0 rows affected (0.41 sec)
      
      

    操作表数据行

    ​ 增

    • 增加数据

      语法:
      	insert into 表名 (列1,列2) values ('值1','值2');
      	
      例子:
      	insert into t1 (id,name) values (1,'zekai');
      	
      	mysql> insert into t1 (name) select (name4) from t5;
      	Query OK, 1 row affected (0.06 sec)
      	Records: 1  Duplicates: 0  Warnings: 0
      
    • delete from 表名 where 条件;
      	mysql> delete from t5 where id=1;
      	mysql> delete from t5 where id>1;
      	mysql> delete from t5 where id>=1;
      	mysql> delete from t5 where id<1;
      	mysql> delete from t5 where id<=1;
      	mysql> delete from t5 where id>=1 and id<10;
      	Query OK, 1 row affected (0.06 sec)
      
      delete from 表名; 删除表中所有的数据
      
      mysql> insert into t5 (salary, num) values (500023.2312345679,  5000.24);
      Query OK, 1 row affected (0.08 sec)
      
      
      mysql> select * from t5;
      +----+-------------------+---------+
      | id | salary            | num     |
      +----+-------------------+---------+
      |  4 | 500023.2312345679 | 5000.24 |
      +----+-------------------+---------+
      1 row in set (0.00 sec)
      
      truncate 表名; #### 没有where条件的
      	mysql> truncate t5;
      	Query OK, 0 rows affected (0.25 sec)
      
      
      mysql> select * from t5;
       				Empty set (0.00 sec)
      
       				mysql> insert into t5 (salary, num) values (500023.2312345679,  5000.24);
       				Query OK, 1 row affected (0.06 sec)
      
       				mysql> select * from t5;
       				+----+-------------------+---------+
       				| id | salary            | num     |
       				+----+-------------------+---------+
       				|  1 | 500023.2312345679 | 5000.24 |
       				+----+-------------------+---------+
       				1 row in set (0.00 sec)
      

      区别:

      1. delete之后,插入数据从上一次主键自增加1开始, truncate则是从1开始
      2. delete删除, 是一行一行的删除, truncate:全选删除 truncate删除的速度是高于deleted
    • update 表名 set 列名1=新值1,列名2=新值2 where 条件;
       				mysql> update t66 set name='xxxx' where id=30;
       				Query OK, 1 row affected (0.04 sec)
       				Rows matched: 1  Changed: 1  Warnings: 0
      
       				mysql> update t66 set name='xxxx' where id<30;
       				mysql> update t66 set name='xxxx' where id<=30;
       				mysql> update t66 set name='xxxx' where id>=30;
       				mysql> update t66 set name='xxxx' where id>30;
       				mysql> update t66 set name='xxxx' where id>20 and id<32;
       				mysql> update t66 set name='xxxx' where id>20 or name='zekai';
      
       				Query OK, 1 row affected (0.04 sec)
       				Rows matched: 1  Changed: 1  Warnings: 0
      
    • 语法:
       				select 列1, 列2 from 表名;  (*代表查询所有的列)
       				select * from 表名;  (*代表查询所有的列)
       				select * from t66 where id>30 and id<40;
       				select * from t66 where id>30;
       				select * from t66 where id<30;
       				select * from t66 where id<=30;
       				select * from t66 where id>=30;
       				select * from t66 where id!=30;
       				select * from t66 where id<>30;
       					mysql> select * from t1;
       					+------+-------+
       					| id   | name  |
       					+------+-------+
       					|    1 | zekai |
       					+------+-------+
       					1 row in set (0.00 sec)
      
       				between..and...: 取值范围是闭区间
      
       					select * from t66 where id between 30 and 40;
       					mysql> select * from t66 where id between 31 and 33;
       					+----+--------+
       					| id | name   |
       					+----+--------+
       					| 31 | dsadsa |
       					| 32 | dsadsa |
       					| 33 | dsadsa |
       					+----+--------+
      
       				避免重复DISTINCT
       					mysql> select distinct name from t66;
       					+--------+
       					| name   |
       					+--------+
       					| xxxx   |
       					| hds    |
       					| dsadsa |
       					+--------+
       					3 rows in set (0.00 sec)
      
       				通过四则运算查询 (不要用)
       					mysql> select name, age*10 from t3;
       					+------+--------+
       					| name | age*10 |
       					+------+--------+
       					| xxx  |    100 |
       					+------+--------+
       					1 row in set (0.01 sec)
      
       					mysql> select name, age*10 as age from t3;
       					+------+-----+
       					| name | age |
       					+------+-----+
       					| xxx  | 100 |
       					+------+-----+
       					1 row in set (0.02 sec)
      
       				in(80,90,100):
      
       					mysql> select * from t66 where id in (23,34,11);
       					+----+------+
       					| id | name |
       					+----+------+
       					| 11 | xxxx |
       					| 23 | hds  |
       					+----+------+
       					2 rows in set (0.04 sec)
      
       				like : 模糊查询
       					以x开头:
       						mysql> select * from t66 where name like 'x%';
       						+----+------+
       						| id | name |
       						+----+------+
       						|  1 | xxxx |
       						|  2 | xxxx |
       						|  3 | xxxx |
       						|  4 | xxxx |
       						|  8 | xxxx |
       						|  9 | xxxx |
       						| 10 | xxxx |
       						| 11 | xxxx |
       						| 15 | xxxx |
       						| 16 | xxxx |
       						| 17 | xxxx |
       						| 18 | xxxx |
       						| 30 | xxxx |
       						+----+------+
       						13 rows in set (0.05 sec)
      
       					以x结尾:
       						mysql> select * from t66 where name like '%x';
       						+----+------+
       						| id | name |
       						+----+------+
       						|  1 | xxxx |
       						|  2 | xxxx |
       						|  3 | xxxx |
       						|  4 | xxxx |
       						|  8 | xxxx |
       						|  9 | xxxx |
       						| 10 | xxxx |
       						| 11 | xxxx |
       						| 15 | xxxx |
       						| 16 | xxxx |
       						| 17 | xxxx |
       						| 18 | xxxx |
       						| 30 | xxxx |
       						+----+------+
       						13 rows in set (0.00 sec)
      
       					包含x的:
       						mysql> select * from t66 where name like '%x%';
      

  • 相关阅读:
    凤凰网CEO刘爽称鄙视微博连说20个屁示不齿
    科技创业网站
    梦想,在路上
    小本创业
    rails relevent
    MBA = married but available
    把UTF8编码转换为GB2312编码[转]
    FSFS和VDFS存储方式的区别
    如何让phpmyadmin输入密码再进入
    dede后台登陆后一片空白的解决办法汇总
  • 原文地址:https://www.cnblogs.com/LZF-190903/p/11762599.html
Copyright © 2011-2022 走看看