mysql 基础

mysql学习

安装教程:
https://blog.csdn.net/weixin_38239039/article/details/79629984

https://jingyan.baidu.com/article/fd8044fa10550d5031137adf.html

https://blog.csdn.net/chen97_08/article/details/81484286

https://blog.csdn.net/weixin_43282064/article/details/108284150

https://blog.csdn.net/bobo553443/article/details/81383194

 

----关系型数据库

  1. 终端操作数据库

    --如何登录数据库:mysql -uroot -p123456

    查询数据库中的所有数据库: show databases

    mysql> show databases
      -> ;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql             |
    | performance_schema |
    | test               |
    +--------------------+
    4 rows in set (0.00 sec)

    跳转数据库:use 库名

    查看表:show tables;

    看表字段和内容:describe user;

    如何选中一个数据库进行操作:

    mysql> describe usre;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type       | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id   | int(11)     | NO   | PRI | NULL   |       |
    | name | varchar(20) | YES |     | NULL   |       |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)

     

    select  * from admin;
    select * from admin where id=1;

    --退出数据库:exit;

    1. 如何在数据库中创建我们的数据:create database test;

      --查看数据库表 show tables;

      --如何创建一个数据表:

      CREATE TABLE pet(name VARCHAR(20),owner VARCHAR(20),species VARCHAR(20),sex CHAR(1),brith DATE,death DATE);

      查看创建好的数据表的结构:describe pet;

      -------添加数据

          INSERT INTO pet VALUES('Tinahuan','Dine','hamster','f','1997-01-10',NULL);
      INSERT INTO pet VALUES('wangwang','xiaozhou','gou','g','1996-01-10',NULL);

      --------mysql 常用数据类型:

      类型  大小  范围(有符号) 范围(无符号) 用途
      TINYINT 1 byte (-128,127) (0,255) 小整数值
      SMALLINT 2 bytes (-32 768,32 767) (0,65 535) 大整数值
      MEDIUMINT 3 bytes (-8 388 608,8 388 607) (0,16 777 215) 大整数值
      INT或INTEGER 4 bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
      BIGINT 8 bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
      FLOAT 4 bytes (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度
      浮点数值
      DOUBLE 8 bytes (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度
      浮点数

      类型 大小
      ( bytes) 范围 格式 用途
      DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
      TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
      YEAR 1 1901/2155 YYYY 年份值
      DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
      TIMESTAMP 4
      1970-01-01 00:00:00/2038

      结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

      YYYYMMDD HHMMSS 混合日期和时间值,时间戳


      字符串类型
      字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

      类型 大小 用途
      CHAR 0-255 bytes 定长字符串
      VARCHAR 0-65535 bytes 变长字符串
      TINYBLOB 0-255 bytes 不超过 255 个字符的二进制字符串
      TINYTEXT 0-255 bytes 短文本字符串
      BLOB 0-65 535 bytes 二进制形式的长文本数据
      TEXT 0-65 535 bytes 长文本数据
      MEDIUMBLOB 0-16 777 215 bytes 二进制形式的中等长度文本数据
      MEDIUMTEXT 0-16 777 215 bytes 中等长度文本数据
      LONGBLOB 0-4 294 967 295 bytes 二进制形式的极大文本数据
      LONGTEXT 0-4 294 967 295 bytes 极大文本数据
      注意:char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。

      CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

      BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

      BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。

      4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。

      drop 命令删除数据库

      drop 命令格式:

      drop database <数据库名>;

    使用 mysqladmin 删除数据库

    你也可以使用 mysql mysqladmin 命令在终端来执行删除命令。

    以下实例删除数据库 RUNOOB(该数据库在前一章节已创建)

    [root@host]# mysqladmin -u root -p drop RUNOOB

数据库跳转(选择) use 库名

CREATE TABLE IF NOT EXISTS `runoob_tbl`(
  `runoob_id` INT UNSIGNED AUTO_INCREMENT,
  `runoob_title` VARCHAR(100) NOT NULL,
  `runoob_author` VARCHAR(40) NOT NULL,
  `submission_date` DATE,
  PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

MySQL 删除数据表

MySQL中删除数据表是非常容易操作的,但是你在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。

以下为删除MySQL数据表的通用语法:

DROP TABLE table_name ;

删除数据

----删除数据
delete from pet where name='wangwang';
----修改数据
updata pet set name='wangwang' where name='zhouxingxing'
----------插入数据
INSERT INTO runoob_tbl
  -> (runoob_title, runoob_author, submission_date)
  -> VALUES
  -> ("学习 PHP", "菜鸟教程", NOW());

常用的数据操作

增加:insert
删除:delete
修改:update
查询:select

-----mysql建表的约束

    主键约束
他能够唯一确定一张表中的一条记录,也就是我们通过某个字段添加约束,就可以使得改字段,不重复且不为空。
create table usre(
      id int primary key,
          name varchar(20)
      );
       primary key :不能为空
      联合主键:
      --只要联合的主键值加起来不重复就可以
       create table usre2(
      id int,
          name varchar(20),
           password varchar(20)
           primary key(id,name)
      );
      insert into usre2 values(1,'zhangsan','123');
   insert into usre2 values(2,'zhangsan','123');
        insert into usre2 values(2,'lisi','123');
    以上的输入都为正确
        insert into usre2 values(NULL,'lisi','123');
      这个操作是不可以的
       
自增约束
create table usre3(
id int primary key auto_increment,
  name varchar(20)
);
insert into usre3 (name) values('zhangsna');
mysql> select * from usre3;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsna |
+----+----------+
1 row in set (0.01 sec)

如果创建时忘记创建主键怎么办?
create table usre4(
id int,
  name varchar(20)
);
解决方案
alter table usre4 add primary key (id);
删除主键?
alter table usre4 drop primary key;
修改表结构添加主键:使用modify 来修改
alter table usre4 modify id int primary key;
唯一约束
---- 约束修饰的字段的值不可以重复
create table usre5(
  id int,
      name varchar(20)
  );
   alter table usre5 add unique(name);
create table usre6(
  id int,
      name varchar(20),
       unique(name)
  );
   create table usre7(
  id int,
      name varchar(20) unique(name)
       
  );
    create table usre8(
  id int,
      name varchar(20),
       unique(id,name)
    注意这个需要俩个组合起来不重复就好了  
  );
    如何删除唯一约束
    alter table usre7 drop index name;
    添加唯一约束 modify
    alter table usre7 modify name varchar(20) unique;
    总结:
    1,建表的时候添加约束
    2,可以使用alter ... add ...
    3,alter ....modify ....
    删除约束
    -- alter ... drop ...
   

非空约束
desc 表名 查看表结构
-- 修饰的字段不能为空 NULL
create table usre9(
  id int,
      name varchar(20) not null ,
  );
默认约束  default
---就是当我们插入字段的时候没有值就是用默认值
create table usre10(
id int,
          name varchar(20),
          age int default 10
);

 

外键约束
-- 涉及俩个表 :父表,子表
-- 主表,副表
create table class(
id int primary key,
          name varchar(20)
);
insert into class values (1,'yiban');
insert into class values (2,'erban');
insert into class values (3,'dsnban');
insert into class values (4,'siban');

create table student(
id int primary key,
          name varchar(20),
      class_id int,
      foreign key(class_id) references class(id)
);
insert into student values (1001,'siban',1);
insert into student values (1002,'siban',2);
insert into student values (1003,'siban',3);
insert into student values (1004,'siban',4);

结论:
-- 主表中没有的数据在副表中不可以使用
-- 主表中的记录被副表引用,是不可以被删除的。
删除语句:
delete from class where id=1;
修改表的编码方式:
ALTER TABLE `test` DEFAULT CHARACTER SET utf8;
该命令用于将表test的编码方式改为utf8;
修改字段的编码方式:
ALTER TABLE `test` CHANGE `name` `name` VARCHAR(36) CHARACTER SET utf8 NOT NULL;
该命令用于将表test中name字段的编码方式改为utf8

 

 

 

posted @ 2021-04-01 14:08  mjth  阅读(157)  评论(0)    收藏  举报