day34总结

目录

昨天回顾

1. 什么是数据库?
        存储数据的仓库

2. 为啥使用数据库?

3. 数据库的分类?
    - 关系型数据库
            MySQL, maridb, oracle,SQLServer, DB2, sqllite

    - 非关系型数据库 ({key:value}) value可以是任何 的数据类型
            redis,mongodb,memcache
4. 架构:
        mysql的客户端   mysql的服务端

5. 安装:
        windows的安装
            a.解压
            b.初始化数据
            c.启动
            d.将mysqld的服务制作成window的服务
    linux的安装

6. 初是MySQL:

    数据库(文件夹):
        增
            create database 数据库名 charset utf8;
        删
            drop database 数据库名;
        改

        查
            show databases;
        使用:
            use 数据库名
    数据表(文件):
        增删改查

    数据行(记录):
        增删改查

操作表


#       增
#           语法:
#               create table 表名(
#                   字段名  列类型 [可选的参数],  ### 记住加逗号
#                   字段名  列类型 [可选的参数],  ### 记住加逗号
#                   字段名  列类型 [可选的参数]  ### 最后一行不加逗号
#                   .....
#               )charset=utf8;  #### 后面加分号
#
#           列约束:(*********************)
#
#                   auto_increment :  自增 1
#                   primary key : 主键索引,加快查询速度, 列的值不能重复
#                   NOT NULL    标识该字段不能为空
#                   DEFAULT    为该字段设置默认值
#
#                   例子1:
#                       create table t1(
#                           id int,
#                           name char(5)
#                       )charset=utf8;
#
#                       Query OK, 0 rows affected (0.72 sec)   #### 如果回显是queryok,代表创建成功
#
#                       增加数据:
#                           语法:
#                               insert into 表名 (列1, 列2) values (值1,'值2');
#                           例子:
#                               insert into t1 (id, name) values (1, 'zekai');
#                               insert into t1 (id, name) values (1, 'zekai2');
#                       查询数据:
#                           语法:
#                               select 列1, 列2 from 表名;  (*代表查询所有的列)
#                           例子:
#                           mysql> select * from t1;
#                           +------+-------+
#                           | id   | name  |
#                           +------+-------+
#                           |    1 | zekai |
#                           +------+-------+
#                           1 row in set (0.00 sec)
#
#                   例子2:
#
#                       create table t2(
#                           id int auto_increment primary key,
#                           name char(10)
#                       )charset=utf8;
#
#
#
#
#                           insert into t2 (name) values ('zekai1');
#
#                   例子3: (推荐)
#                       create table t3(
#                           id  int unsigned auto_increment primary key,
#                           name char(10) not null default 'xxx',
#                           age int not null default 0
#                       )charset=utf8;
#
#                       mysql> insert into t3 (age) values (10);
#                       Query OK, 1 row affected (0.05 sec)
#
#                       mysql> select * from t3;
#                       +----+------+-----+
#                       | id | name | age |
#                       +----+------+-----+
#                       |  1 | xxx  |  10 |
#                       +----+------+-----+
#
#
#           列类型: (********************)
#
#               create table 表名(
#                   字段名  列类型 unsigned [可选的参数],  ### 记住加逗号
#                   字段名  列类型 [可选的参数],  ### 记住加逗号
#                   字段名  列类型 [可选的参数]  ### 最后一行不加逗号
#                   .....
#               )charset=utf8;  #### 后面加分号
#
#               - 数字
#                   - 整型
#                       tinyint
#                       smallint
#                       int   (************************) 推荐使用
#                       mediumint
#                       bigint
#
#                       a.整数类型
#                       b.取值范围
#                       c.unsigned  加上代表不能取负数  只适用于整型
#
#                       应用场景:
#                           根据公司业务的场景,来选取合适的类型
#
#                   - 浮点型 (***********)
#                       create table t5(
#                           id int auto_increment primary key,
#                           salary decimal(16,10),
#                           num float
#                       )charset=utf8;
#
#                       float:  不一定精确
#                       decimal: 非常的精确的数字 (5000.23)  decimal(6, 2) m是数字总个数(负号不算),d是小数点后个数。
#
#                       正好 10 位:
#                       mysql> insert into t5 (salary, num) values (500023.2312345678, 5000.2374837284783274832);
#                       Query OK, 1 row affected (0.04 sec)
#
#                       mysql> select * from t5;
#                       +----+-------------------+---------+
#                       | id | salary            | num     |
#                       +----+-------------------+---------+
#                       |  1 | 500023.2312345678 | 5000.24 |
#                       +----+-------------------+---------+
#                       1 row in set (0.00 sec)
#
#                       少于10位:
#                       mysql> insert into t5 (salary, num) values (500023.231234567, 5000.2374837284783274832);
#                       Query OK, 1 row affected (0.04 sec)
#
#                       mysql> select * from t5;
#                       +----+-------------------+---------+
#                       | id | salary            | num     |
#                       +----+-------------------+---------+
#                       |  1 | 500023.2312345678 | 5000.24 |
#                       |  2 | 500023.2312345670 | 5000.24 |
#                       +----+-------------------+---------+
#
#                       多于10位:
#                       mysql> insert into t5 (salary, num) values (500023.23123456789, 5000.2374837284783274832);
#                       Query OK, 1 row affected, 1 warning (0.03 sec)
#
#                       mysql> select * from t5;
#                       +----+-------------------+---------+
#                       | id | salary            | num     |
#                       +----+-------------------+---------+
#                       |  1 | 500023.2312345678 | 5000.24 |
#                       |  2 | 500023.2312345670 | 5000.24 |
#                       |  3 | 500023.2312345679 | 5000.24 |
#                       +----+-------------------+---------+
#
#               - 字符串
#
#                   - 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.03 sec)
#
#                   mysql> select * from t6;
#                   +----+-------+
#                   | id | name  |
#                   +----+-------+
#                   |  1 | hello |
#                   +----+-------+
#                   1 row in set (0.00 sec)
#
#                   mysql> insert into t6 (name) values ('hellodbsabdsjabjdsa');
#                   ERROR 1406 (22001): Data too long for column 'name' at row 1
#
#                   区别:
#                       char: 定长, 无论插入的字符是多少个,永远固定占规定的长度
#                       场景:
#                           1. 身份证
#                           2. 手机号 char(11)
#                           3. md5加密之后的值,比如密码 等 char(32)
#
#                       varchar: 变长, 根据插入的字符串的长度来计算所占的字节数,但是有一个字节是用来保存字符串的大小的
#
#                       注意:如果, 不能确定插入的数据的大小, 一般建议使用 varchar(255)
#
#               - 时间日期类型
#                   YEAR
#                       YYYY(1901/2155)
#
#                   DATE
#                       YYYY-MM-DD(1000-01-01/9999-12-31)
#
#                   TIME
#                       HH:MM:SS('-838:59:59'/'838:59:59')
#
#                   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 年某时)
#
#                   例子:
#                       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.08 sec)
#
#                       mysql> select * from t8;
#                       +------------+----------+---------------------+
#                       | d          | t        | dt                  |
#                       +------------+----------+---------------------+
#                       | 2019-10-29 | 10:49:51 | 2019-10-29 10:49:51 |
#                       +------------+----------+---------------------+
#                       1 row in set (0.00 sec)
#                       insert into t8 values(now(),now(),now());
#
#               - 枚举
#                   列出所有的选项
#
#                   create table t9 (
#                       id int auto_increment primary key,
#                       gender enum('male','female')
#                   )charset utf8;
#
#                   mysql> insert into t9 (gender) values ('male');
#                   Query OK, 1 row affected (0.04 sec)
#
#                   mysql> insert into t9 (gender) values ('female');
#                   Query OK, 1 row affected (0.03 sec)
#
#                   mysql> insert into t9 (gender) values ('dshajjdsja');
#
#
#
#       改
#           1. 修改表名
#               ALTER TABLE 旧表名 RENAME 新表名;
#
#               mysql> alter table t8 rename t88;
#               Query OK, 0 rows affected (0.19 sec)
#
#           2. 增加字段
#               ALTER TABLE 表名
#               ADD 字段名 列类型 [可选的参数],
#               ADD 字段名 列类型 [可选的参数];
#
#               mysql> alter table t88 add name varchar(32) not null default '';
#               Query OK, 0 rows affected (0.82 sec)
#               Records: 0  Duplicates: 0  Warnings: 0
#
#               上面添加的列永远是添加在最后一列之后
#

#               ALTER TABLE 表名
#               ADD 字段名 列类型 [可选的参数] FIRST;
#
#               mysql> alter table t88 add name3 varchar(32) not null default '' first;
#               Query OK, 0 rows affected (0.83 sec)
#               Records: 0  Duplicates: 0  Warnings: 0
#
#
#               ALTER TABLE 表名
#               ADD 字段名 列类型 [可选的参数] AFTER 字段名;
#               mysql> alter table t88 add name4 varchar(32) not null default '' after d;
#               Query OK, 0 rows affected (0.68 sec)
#               Records: 0  Duplicates: 0  Warnings: 0
#
#           3. 删除字段
#               ALTER TABLE 表名  DROP 字段名;
#
#               mysql> alter table t88 drop name4;
#               Query OK, 0 rows affected (0.66 sec)
#               Records: 0  Duplicates: 0  Warnings: 0
#
#           4. 修改字段
#               ALTER TABLE 表名 MODIFY 字段名 数据类型 [完整性约束条件…];
#
#               mysql> alter table t88 modify name2 char(20);
#               Query OK, 1 row affected (0.88 sec)
#               Records: 1  Duplicates: 0  Warnings: 0
#
#
#               ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
#
#               mysql> alter table t88 change name2 name22 varchar(32) not null default '';
#               Query OK, 1 row affected (0.82 sec)
#               Records: 1  Duplicates: 0  Warnings: 0
#
#               mysql> alter table t88 change name22 name23;
#               ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
#
#       删
#           drop table 表名;  #### 线上禁用
#           mysql> drop table t9;
#           Query OK, 0 rows affected (0.18 sec)
#       查
#           mysql> show tables;
#           +----------------+
#           | Tables_in_test |
#           +----------------+
#           | t1             |
#           +----------------+
#           1 row in set (0.00 sec)
#
#       复制表结构:
#           mysql> ## 1. 查看t88表的创建语句
#           mysql> show create table t88;
#           +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
#           | Table | Create Table                                                                                                                                                                                                                                                              |
#           +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
#           | t88   | CREATE TABLE `t88` (
#             `name3` varchar(32) NOT NULL DEFAULT '',
#             `d` date DEFAULT NULL,
#             `t` time DEFAULT NULL,
#             `dt` datetime DEFAULT NULL,
#             `name` varchar(32) NOT NULL DEFAULT '',
#             `name22` varchar(32) NOT NULL DEFAULT ''
#           ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
#           +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
#           1 row in set (0.01 sec)
#
#           mysql> ## 2. like
#           mysql> create table t89 like t88;
#           Query OK, 0 rows affected (0.33 sec)

操作表数据行

#       增
#           增加数据:
#               语法:
#                   insert into 表名 (列1, 列2) values (值1,'值2');
#               例子:
#                   insert into t1 (id, name) values (1, 'zekai');
#                   insert into t1 (id, name) values (1, 'zekai2');
#                   insert into t1 (id, name) values (1, 'zekai2'),(2, 'zekai3'),(3,'zekai4');
#
#                   mysql> insert into t66 (name) select name from t6;
#                   Query OK, 4 rows affected (0.09 sec)
#                   Records: 4  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删除的速度是高于delete的
#
#
#
#       改
#           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%';
#
#                   不让用

猜你喜欢

转载自www.cnblogs.com/zhm-cyt/p/11761049.html