mysq数据库_定义_基本操作_增删改

数据库:就是一种特殊的文件,其中存储着需要的数据

RDBMS(Relational Database Management System)
当前主要使用两种类型的数据库:关系型数据库、非关系型数据库
所谓的关系型数据库RDBMS,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据

关系型数据库核心元素
  • 数据行(记录)
  • 数据列(字段)
  • 数据表(数据行的集合)
  • 数据库(数据表的集合)

SQL

SQL是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 oracle,sql server,mysql,sqlite 等等
所有的关系型的数据库
SQL 是一门特殊的语言,专门用来操作关系数据库,不区分大小写

MySQL是一个关系型数据库管理系统 开源 免费

mysql操作

启动服务

sudo service mysql start

查看进程中是否存在mysql服务

ps ajx|grep mysql

停止服务

sudo service mysql stop

重启服务

- sudo service mysql restart

配置

    配置文件目录为/etc/mysql/mysql.cnf
    进入conf.d目录,打开mysql.cnf,发现并没有配置
    进入mysql.conf.d目录,打开mysql.cnf,可以看到配置项
    
    主要配置项如下
    bind-address表示服务器绑定的ip,默认为127.0.0.1
    
    port表示端口,默认为3306
    
    datadir表示数据库目录,默认为/var/lib/mysql
    
    general_log_file表示普通日志,默认为/var/log/mysql/mysql.log
    
    log_error表示错误日志,默认为/var/log/mysql/error.log
    命令行客户端
    
    在终端运行如下命令,按提示填写信息
    sudo apt-get install mysql-client
    
    详细连接的命令可以查看帮助文档
    mysql --help
    
    最基本的连接命令如下,输入后回车
    mysql -u root -pmysql
    
    按ctrl+d或输入如下命令退出
	quit 或者 exit

1.数据类型:

  • 整数:int,bit
  • 小数:decimal decimal表示浮点数,如decimal(5,2)表示共存5位数,小数占2位
  • 字符串:varchar,char
tinyint 1 -128~127 0~2551表示字节大小 带负号表示有符号范围Signed)
–smallint 2 0~65535 (无符号范围Unsigned)mediumint 3 0~16777215int/integer 4 0~4294967295bigint 8 0~18446744073709551615
日期时间: date, time, datetimedata 42020-01-01”
–time 312:29:59”
–datetime 82020-01-01 12:29:59”
–year 12017”
–timestamp 41970-01-01 00:00:01” UTC ~2038-01-01 00:00:01” UTC
  • 枚举类型(enum)
char表示固定长度的字符串,如char(3),如果填充’ab’时会补一个空格为’ab ’
–varchar表示可变长度的字符串,如varchar(3),填充’ab’时就会存储’ab’

2. 约束:

  • auto_increment表示自动增长

  • 主键primary key:物理上存储的顺序主键后 表示不能够重复,必须保证有序,但是不一定连续 (12489)

  • 非空not null:此字段不允许填写空值

  • 惟一unique:此字段的值不允许重复

  • 默认default:当不填写此值时会使用默认值,如果填写时以填写为准

  • 有符号Signed 无符号Unsigned

3 数据库操作:

  • 连接数据库 mysql -uroot -pmysql

  • 退出数据库 exit ,quit ,ctrl + d

  • 查看所有数据库: show databases;

  • 使用数据库: use 数据库名;

  • 查看当前使用的数据库: select database();

  • 显示数据库版本: select version();

  • 显示时间: select now();

  • 创建数据库: create database 数据库名 charset=utf8;

例:create database python charset=utf8;
	创建数据库需要制定字符集 如果不指定就会使用默认的拉丁字符集 指定字符集 不是 utf-8
  • 查看数据库的创建语句: show create database 数据库;

  • 删除数据库: drop database 数据库名;
    例:drop database python;

4 数据表操作:

  • 查看当前数据库中所有表: show tables;

  • 查看表结构: desc 表名;

  • 创建表

auto_increment表示自动增长
create table 数据表名字 (字段 类型 约束);  ---约束不分先后顺序
		例:创建学生表
		create table students(
	    id int unsigned primary key auto_increment not null,
	    name varchar(20) default '',
	    age tinyint unsigned default 0,
	    height decimal(5,2),
	    gender enum('男','女','人妖','保密'),
	    cls_id int unsigned default 0
		)
  • 查看表的创建语句:show create table 表名;

  • 查看表结构:desc students;

  • 修改表结构 alter

  • 修改表-添加字段:alter table 表名 add 列名 类型及约束;
> 例:alter table students add birthday datetime default "2011-11-11 11:11:11";                    
> 例:alter table students add birthday datetime;
  • 修改表-修改字段:重命名版 alter table 表名 change 原名 新名 类型及约束;
> 例:alter table students change birthday birth datetime not null;
  • 修改表-修改字段:不重命名版 alter table 表名 modify 列名 类型及约束;
> 例:alter table students modify birth date not null;	
  • 修改表-删除字段:alter table 表名 drop 列名;
>  例:alter table students drop birthday;
  • 删除表:drop table 表名;
> 例:drop table students;

数据增删改查(curd)

±-------±------------------------------------±-----±----±--------±---------------+
| Field | Type | Null | Key | Default | Extra |
±-------±------------------------------------±-----±----±--------±---------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(15) | NO | | NULL | |
| age | tinyint(3) unsigned | YES | | 0 | |
| high | decimal(5,2) | YES | | 0.00 | |
| gender | enum(‘男’,‘女’,‘中性’,‘保密’) | YES | | NULL | |
| cls_id | int(10) unsigned | NO | | NULL | |
±-------±------------------------------------±-----±----±--------±---------------+

1. 增加 insert

  1. 全列插入 :值和表的字段的顺序一一对应
  • insert [into] 表名 {values|value} (值1,…)
  • 主键的占位关键字 NULL DEFAULT 0
  • 枚举的原始值(枚举的哪些性别) 和枚举值(性别对应的标号) 在SQL中枚举值默认从1开始
  • 全列插入在开发中使用的非常少(一旦表结构更新, sql语句就废了)
    >insert into students values (0,"小乔",18,180.00,1,1);
    >insert into students values (NULL,"大桥",18,180.00,2,1);
    >insert into students values (NULL,"李逵",18,180.00,"男生",1);
    > #错误insert into students values (NULL,"李逵",18,180.00,"男生",1);
    >  #错误insert into students values (NULL,"李逵",18,180.00,10,1);
  1. 指定列插入 :值和列一一对应
 insert into 表名 (1,...) values(1,...)
 insert into students (name, gender, cls_id) values ('鲁班',1,2);
  • 多行插入 批量插入
  insert into 表名(1,...) values (1,...),(1,...),...
  insert into students (name, gender, cls_id) values ('李白',1,2), ("陈咬金",1,3);

2.修改

  • where 表示修改的范围
  • update 表名 set 列1=值1,列2=值2… [where 条件]
    不推荐update students set gender = 2;  会全表更新
    update students set gender = 1 where id = 3;
    update students set gender = 1, name = "李黑" where id = 5;
  • sql中 通过一个等于号表示相等

3.删除

  • 物理删除
    DELETE FROM tbname [where 条件判断]
    delete from students;  -- 全表删除 不可逆,mysql从删库到跑路 dba
    delete from students where id = 4; -- 个人中心 -> 我的订单 --> 订单详情 --> 商品详情
  • 逻辑删除(推荐)
    1. 添加一个标识字段
    alter table students add is_delete bit default 0;
    2. 如果要删除某条数据 就设置该字段的值为1 表示删除
    update students set is_delete = 1 where id = 4;
    3. 在查询的时候 就通过标识来判断是否被删除
    -- 查询有哪些学生没有被删除
    select * from students where is_delete = 0;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值