数据库-MYSQL-程序员宅基地

技术标签: mysql  数据库  

一、数据库简介

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 

二、专有名词

DBMS: 数据库管理系统(Database Management System是一种操纵和管理数据库的大型软件

DB:(Database)数据库

SQL: 结构化查询语言,(Structure Query Language),专门用来操作、访问数据库的通用语言

三、数据库类别

数据库共有3种类型,为关系数据库、非关系型数据库和键值数据库。

1、关系数据库

MySQL、MariaDB(MySQL的代替品,英文维基百科从MySQL转向MariaDB)、Percona Server(MySQL的代替品·)、PostgreSQL、Microsoft Access、Microsoft SQL Server、Google Fusion Tables、FileMaker、Oracle数据库、Sybase、dBASE、Clipper、FoxPro、foshub。

几乎所有的数据库管理系统都配备了一个开放式数据库连接(ODBC)驱动程序,令各个数据库之间得以互相集成。

2、非关系型数据库(NoSQL)

BigTable(Google)、Cassandra、MongoDB、CouchDB。

3、键值(key-value)数据库

Apache Cassandra(为Facebook所使用):高度可扩展、Dynamo、LevelDB(Google)

四、SQL(Structure Query Language)

可以把 SQL 分为两个部分:

DML(Data Manipulation Language)数据操纵语言:

对数据库中的数据进行一些简单操作,如insert,delete,update,select等.

 

DDL(Data Definition Language)数据定义语言:

对数据库中的某些对象(例如,database,table)进行管理,如Create,Alter和Drop

 

DCL(Data Control Language)(Orcale):

是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL

五、MySQL

MySQL 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统。该数据库系统是由瑞典的 MySQL AB 公司开发、发布并支持,由 MySQL 的初始开发人员 David Axmark 和 Michael Monty Widenius 于 1995 年建立的。

六、DDL(Data Definition Language)操作

对数据库操作

1.显示数据库

show databases;

 

2.创建数据库

create database exercise;

3.删除数据库

 

对表操作

1.创建表

创建表需要指定数据类型,需要了解MySQL数据类型

 

 

 

创建表格式 create  table 表明(列名1 列1的数据类型, 列名2 列2的数据类型 , ...)

create table student(id int, name varchar(100), age int, gender char, score double, birthday date);

2.修改表名

alter table student rename stu;

3.查看表结构

desc 表名;

4.新增一列

alter table 表名 add 新增列名 列数据类型;
alter table users add username varchar(100);

mysql> alter table users add username varchar(100);
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc users;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int(11)      | YES  |     | NULL    |       |
| name     | varchar(100) | YES  |     | NULL    |       |
| age      | int(11)      | YES  |     | NULL    |       |
| username | varchar(100) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

5.更改列名

alter table 表名 change 要更改的列名  列名 数据类型;
alter table users change username password varchar(100);

mysql> alter table users change username password varchar(100);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc users;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int(11)      | YES  |     | NULL    |       |
| name     | varchar(100) | YES  |     | NULL    |       |
| age      | int(11)      | YES  |     | NULL    |       |
| password | varchar(100) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

6.修改列数据类型

alter table 表名 列名 列类型;
alter table users password int;

mysql> alter table users modify password int;
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc users;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int(11)      | YES  |     | NULL    |       |
| name     | varchar(100) | YES  |     | NULL    |       |
| age      | int(11)      | YES  |     | NULL    |       |
| password | int(11)      | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

7.删除一列

alter table 表名 drop 列名;
alter table users drop password;

mysql> alter table users drop password;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc users;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | YES  |     | NULL    |       |
| name  | varchar(100) | YES  |     | NULL    |       |
| age   | int(11)      | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

 

插入数据

insert into 表名(字段) values(数据);
insert into users values(1, 'aa', 18);
insert into users(id,age) values(1, 18);

 

 

查询语句

select * from 表名;
select 字段 from 表名;

修改

update 表名 set 字段修改 where 查询条件;

删除

delete  from 表名; 删除所有数据
delete from 表名 where 条件; 删除条件数据
truncate table 表名;清空表, 这里是直接把表删除,再创建一个同结构的, 不会破坏自增长

DML(Data Manipulation Language)数据操纵语言

对于为null的数据,判断条件需要用 is null 或者 is not null

select 列名 as 名字 from 表名; 对输出结果的列重命名

算数运算符

+ - * 、 %  MOD

比较运算符

> >= < <= = !=  <>

逻辑运算符

与: && and
或 || or
非 ! not

模糊查询

like '模糊信息'

like '田%' %表示0到n个
like '田_' _表示一个

IFNULL 和hive 中的NVL coalesce一个含义

IFNULL(字段, 默认值) 如果字段的值为null, 则取默认值

约束条件和索引

主键约束 : 非空加唯一  

唯一键 不能重复

外键: 多表关联的条件,

主键添加约束

create table student(id int primary key,name varchar(100), age int);
或者
create table student(
    id int,
    name varchar(100), 
    age int
    primary key(id)
);
添加复合主键必须用第二种

复合主键, 多个主键,

后期添加主键约束

alter  table student add primary key(id);

唯一键

create table student(
    id int primary key
    ,name varchar(100) unique key
    , age int);
另一种方式
create table student(
    id int primary key
    ,name varchar(100) 
    , age int
    ,unique key(name, age)
);

alter table student add unique key(name);

非空约束

create table student(
    id int primary key
    ,name varchar(100) not null
    , age int);
只有这一种写法

alter table student modify 字段 字段类型 not null;

默认值

create table student(
    id int primary key
    ,name varchar(100) default '你好'
    , age int);
只有这一种写法

alter table student modify 字段 字段类型 default '你好';

自增长机制

一般加载到主键上

create table student(
    id int primary key auto_increment
    ,name varchar(100) default '你好'
    , age int);

外键

create table emp (
    id int primary key auto_increment
    ,name varchar(100)
    ,age int
    , dept_id 
    ,foreign key(id) references dept(id)
);
,foreign key(id) references dept(id) on 后面跟级别

自带函数

单行函数

mysql> select concat('hello','world');
+-------------------------+
| concat('hello','world') |
+-------------------------+
| helloworld              |
+-------------------------+
1 row in set (0.00 sec)
mysql> select concat_ws('-','hello','world','ni','hao');
+-------------------------------------------+
| concat_ws('-','hello','world','ni','hao') |
+-------------------------------------------+
| hello-world-ni-hao                        |
+-------------------------------------------+
1 row in set (0.00 sec)
mysql> select char_length('mysql数据库');
+----------------------------+
| char_length('mysql数据库') |
+----------------------------+
|                          8 |
+----------------------------+
1 row in set (0.00 sec)

mysql> select length('mysql数据库');
+-----------------------+
| length('mysql数据库') |
+-----------------------+
|                    11 |
+-----------------------+
1 row in set (0.00 sec)
mysql> select insert('helloword',5,2,'aa');
+------------------------------+
| insert('helloword',5,2,'aa') |
+------------------------------+
| hellaaord                    |
+------------------------------+
1 row in set (0.00 sec)
mysql> select left('abcdfg', 2);
+-------------------+
| left('abcdfg', 2) |
+-------------------+
| ab                |
+-------------------+
1 row in set (0.00 sec)

mysql> select right('abcdfg', 2);
+--------------------+
| right('abcdfg', 2) |
+--------------------+
| fg                 |
+--------------------+
1 row in set (0.00 sec)

mysql> select lpad('abc',6, 'dd');
+---------------------+
| lpad('abc',6, 'dd') |
+---------------------+
| dddabc              |
+---------------------+
1 row in set (0.00 sec)

mysql> select rpad('abc',6, 'dd');
+---------------------+
| rpad('abc',6, 'dd') |
+---------------------+
| abcddd              |
+---------------------+
1 row in set (0.00 sec)

 

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2021-03-20 |
+------------+
1 row in set (0.00 sec)

mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 21:51:34  |
+-----------+
1 row in set (0.00 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2021-03-20 21:51:40 |
+---------------------+
1 row in set (0.00 sec)

mysql> select year(now());
+-------------+
| year(now()) |
+-------------+
|        2021 |
+-------------+
1 row in set (0.00 sec)

mysql> select dayofweek(now());
+------------------+
| dayofweek(now()) |
+------------------+
|                7 |
+------------------+
1 row in set (0.01 sec)

mysql> select date_add(now(), interval -2 year);
+-----------------------------------+
| date_add(now(), interval -2 year) |
+-----------------------------------+
| 2019-03-20 22:02:46               |
+-----------------------------------+
1 row in set (0.00 sec)

mysql> select date_add(now(), interval -2 month);
+------------------------------------+
| date_add(now(), interval -2 month) |
+------------------------------------+
| 2021-01-20 22:02:57                |
+------------------------------------+
1 row in set (0.00 sec)

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhihuihelloworld/article/details/115024986

智能推荐

2020车载凯立德懒人包下载_华为HarmonyOS App开发工具DevEco Studio下载安装及第一个HarmonyOS App实战教程...-程序员宅基地

文章浏览阅读234次。2020年9月10日,华为开发者大会发布了鸿蒙(HarmonyOS)2.0。HarmonyOS是一套全场景操作系统。从理论上讲,HarmonyOS可以在任何平台上运行(包括但不限于PC、手机、平板电脑、车载电脑、手表、iot设备等)。那么,想要在如此优秀的操作系统运行App,固然需要我们自己去手动开发。因此,华为也发布了自己的IDE,即HUAWEI DevEco Studio(以下简称D..._deveco studio车载系统在哪

linux kernel 之 工作队列_kernel队列-程序员宅基地

文章浏览阅读2.3k次。1. 什么是workqueueLinux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简单而有效的机制,他显然简化了内核daemon的创建,方便了用户的编程.工作队列(workqueue)是另外一种将工作推后执行的形式.工_kernel队列

API:什么是API?API与interface的区别-程序员宅基地

文章浏览阅读4.4k次。  我们都知道,API就是接口,那是什么鬼呢?  1.什么是API?api接口开发,其实和平时开发逻辑差不多;但是也有略微差异;平时使用mvc开发网站的思路一般是都 由控制器 去 调用模型,模型返回数据,再由控制器把数据放到视图中,展现给用户;api开发是:使用控制器 去调用模型,模型返回数据,在有控制器 输出 json格式字符串 或者 XML 字符串,不用考虑视图,..._api和interface

vue 自定义Loading组件配合axios中使用_vue.prototype.$loading 在axios怎么取-程序员宅基地

文章浏览阅读527次。1.在components中创建Loading文件夹,然后在Loading中新建loading.vue文件<template> <div v-if="loading" class="shade"> <div class="sk-wave"> <div class="sk-rect sk-rect1"></div> <div class="sk-rect sk-rect2"></d_vue.prototype.$loading 在axios怎么取

Postman文件导入YAPI报错:解析数据为空_yapi导入数据时解析数据为空-程序员宅基地

文章浏览阅读672次,点赞4次,收藏3次。导出的postman V2转成V1。_yapi导入数据时解析数据为空

邮件发送与接收,支持163邮箱、outlook邮箱、exchange邮箱_. 集成&自动化中配置发送邮件节点,发件人邮箱账号支持哪些邮箱类型-程序员宅基地

文章浏览阅读2.5k次。邮件发送与接收,支持163邮箱、outlook邮箱、exchange邮箱依赖的jar包邮件收发公共服务层实现package com.example.demo.service.impl;import com.example.demo.model.EmailMessageBO;import com.example.demo.model.EmailSendBO;import com.example.demo.model.FileBean;import com.example.demo.serv_. 集成&自动化中配置发送邮件节点,发件人邮箱账号支持哪些邮箱类型

随便推点

常见的传输线阻抗计算软件(轉自笨笨熊的屋屋)-程序员宅基地

文章浏览阅读605次。1.Polar:http://www.polarinstruments.com/Si6000b是目前广泛使用的阻抗计算软件,Cits25的升级版,功能强大,不仅能正向计算阻抗和延迟,还能根据目标阻抗逆向计算其它参数,支持平面型的传输线和波导,包括:单端 表面微波传输带覆膜表面微波传输带嵌入式微波传输带对称带状线偏移(不对称)带状线差分 表面边缘耦合微波传..._cad design impedance calculator

第26期 Zotero,文献管理类,科研利器,文献收录能力意外惊喜,总之比我10年前在学校用的其他文献软件要方便强大很多。【体验100款文件管理工具】_科研文件管理软件-程序员宅基地

文章浏览阅读963次,点赞21次,收藏16次。Zotero是一款功能强大的免费开源文献管理软件,旨在帮助用户轻松管理和组织各种类型的研究资料。作为一款知识管理工具,Zotero可以帮助用户收集、整理和引用参考文献,从而提高学术写作和研究工作的效率。该软件支持多种操作系统,并提供灵活的文献云存储同步功能,让用户随时随地都能获取到他们需要的信息。通过Zotero,用户可以轻松管理各类参考文献和知识资源,极大地简化了学术研究过程中的信息管理工作。Zotero是一款功能强大的文献管理软件,具有自动化抓取参考文献信息、多种引用格式支持和文献云存储同步等特点。_科研文件管理软件

智能电网中多时段多公司需求响应管理的博弈理论框架 利用博弈论建立了一个考虑公司和消费者之间相互作用的多时期多公司需求响应框架-程序员宅基地

文章浏览阅读63次。为消费者所需的最低预算提供了一个条件,并使用现实数据进行案例研究,其中显示了高达30%的潜在节约和具有低波动性的均衡价格。在Stackelberg博弈中建立了相互作用的模型,公司设定价格,而消费者选择他们的需求作为回应。证明了潜在博弈具有一个独特的均衡,公司的收益最大化而消费者的效用最大化受当地约束。构造了一个具有唯一纯策略纳什均衡的权力分配博弈,并给出了该博弈的封闭形式表达式。也研究在周期的数量(时间范围的细分和消费者的数量变化的影响。给出了所有参与方的最优策略的封闭表达式。

C语言练习(函数指针)计算器的实现-程序员宅基地

文章浏览阅读230次,点赞11次,收藏8次。小小练习

机器人系统开发ros2-基础学习16-使用 rosdep 管理依赖关系

它是一个元包管理器,它使用自己的系统知识和依赖关系来查找要安装在特定平台上的适当包。rosdep通过检索本地计算机上的中央索引来工作,这样它就不必在每次运行时访问网络(在 Debian/Ubuntu 上,它的配置存储在/etc/ros/rosdep/sources.list.d/20-default.list)。上,还有另一个名称类似的软件包,称为python3-rosdep2.如果安装了该软件包,请确保在安装之前将其删除python3-rosdep。这是推荐的获取方式rosdep。

一次违法网站的渗透经历

这种情况为我们的渗透测试提供了一个有利的条件,因为我们可以利用这种关联性来尝试在用户资产网站上发现的漏洞或弱点来渗透目标网站。3. 利用关联性进行攻击:如果在用户资产网站上发现了可利用的漏洞或弱点,尝试利用这些漏洞或弱点来攻击目标网站。1. 识别目标网站和用户资产网站的关联性:通过网络扫描工具或手动查找,确认它们是否使用相同的IP地址范围或者是否有其他关联性,比如共享相同的网络设备或服务。通过利用用户资产网站和目标网站的关联性,我们可以更有效地发现和利用目标网站的安全漏洞,提高攻击成功的可能性。