数据库-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

智能推荐

显卡+cuda+cudnn+tensorflow安装教程_intel graphics 630能够装conda-程序员宅基地

文章浏览阅读1.5k次。文章目录1. 先修知识1.1 显卡1.2 显卡驱动1.3 Cuda1.4 Cudnn1.5 GPU1.6 **Nouveau**1.7 **GCC是GNU编译器套件**2. 检查本地配置3.NVIDIA显卡驱动安装3.1 官网下载run文件3.2 用指令查看版本3.3 删除旧的显卡驱动3.4 禁止自带的nouveau nvidia驱动3.5 修改bios设置3.6 安装驱动3.7 安装结束后重启电脑,再查看是否安装成功3.8 重新打开桌面3.9 或使用PPA仓库自动化安装**4. 安装CUDA****_intel graphics 630能够装conda

Spring源码之@Import注解解析_@import spring 问题-程序员宅基地

文章浏览阅读376次。Spring中@Import注解以及源码对@Import的解析_@import spring 问题

1497 取余运算-程序员宅基地

文章浏览阅读122次。1497 取余运算时间限制: 1 s空间限制: 128000 KB题目等级 : 钻石 Diamond题解查看运行结果题目描述Description输入b,p,k的值,编程计算bpmodk的值。其中的b,p,k*k为长整型数(2^31范围内)。输入描..._jmeter 取余

phpmyadmin大数据导入问题_phpmyadmin 导入数据较大时,出现apache http server 已停止工作-程序员宅基地

文章浏览阅读435次。使用phpmyadmin数据库导入出错:You probably tried to upload too large file!解决方法The first things to check (or ask your host provider to check) are the values ofupload_max_filesize,memory_limit and post_max__phpmyadmin 导入数据较大时,出现apache http server 已停止工作

GoogleMap(通过输入地址,查询显示在google 地图上)-程序员宅基地

文章浏览阅读268次。主Activity:[code="java"]package net.blogjava.mobile.map;import java.util.List;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import ..._google maps 根据输入地址,返回对应的地址组

数据库MySQL-查询练习2_查询选修“3105”课程的成绩高于“109”号同学成绩的所有同学的记录。-程序员宅基地

文章浏览阅读3.6k次。11.查询每门课的平均成绩关键字 avg()单门课: SELECT c_no,AVG(sc_degree) FROM SCORE where c_no = '3-105';每门课:SELECT c_no,AVG(sc_degree) FROM SCORE GROUP BY c_no;_查询选修“3105”课程的成绩高于“109”号同学成绩的所有同学的记录。

随便推点

GPS开发、定位修改_virtualposition-程序员宅基地

文章浏览阅读7.4k次。GPS开发、定位修改修改于AOSPandroid7.1.1_r1NMF26Fopenjdk8.0Mint-linuxnexus5x原作者:https://blog.csdn.net/aggresss/article/details/54323034指出文中错误(自己编译时候遇到的)并修正固件共享出来是不可能的,谁知道我的固件里有没有后门,还是用源码自己编译的比较放心新鲜的源码..._virtualposition

Ionic 创建自定义模块(module)_ionicmodule-程序员宅基地

文章浏览阅读903次。在Angular中组件和组件之间可以实现通信,而在 Ionic中每个page是一个模块,而模块里面的组件和其他 page 模块中的组件是无法直接通信的,此时就可以使用自定义模块间接的实现模块之间的通信,类似ng中的模块配置过程,把需要把 page(模块module)暴露出来给其他外部page(模块module)使用,实现步骤如【ionic自定义模块】所示。..._ionicmodule

Java从入门到入坟_Day01_java 从入门到入坟-程序员宅基地

文章浏览阅读263次。个人Java学习请求 —— 协议—— ip—— 端口号—— 资源路径端口号:运行时端口号才回被占用,未运行时端口号可以被其他使用是约束浏览器和服务的请求与响应,是特定数据交互格式,是一个超文本传输协议。作用:写一个美观的呈现程序且能交互的页面,html:书写静态的页面css:美化页面js:让页面能进行交互作用:给前端提供数据的,Java编程:让计算机帮人做事情程序:计算机能识别的是二进制,开发者不能使用二进制开发,使用字母,汉字,标点符号组成的高级语言进行编写虚拟机:Jvm将编写好的代码转换为计算机能看懂的_java 从入门到入坟

React生命周期详解-程序员宅基地

文章浏览阅读1.1w次,点赞3次,收藏31次。整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析_react生命周期

Qt5入门教程--模板库、对话框_学qt需要学模版吗-程序员宅基地

文章浏览阅读512次。Qt5 study1.QT5模板库1.1 字符串类 QString(传递const char*类型的ASCII字符串)操作字符串QString 提供+ ,+=的操作符QString::append()函数用于追加字符串,使用:str1.append(str2)QString::sprintf(): str.sprintf("%s,%s","welcome ",“to you”) 相..._学qt需要学模版吗

(4-1)Unity3D/工具:6步学会在Unity中读取Excel配置文件_excelresolutionforunity-程序员宅基地

文章浏览阅读5.9k次,点赞6次,收藏26次。第一步:下载Unity3D读取Excel工具【ExcelResolutionForUnity】并解压,下载地址:这里写链接内容 下载解压后文件目录如下: 第二步:把这3个文件导入到你的Unity项目目录中(也可以直接把整个文件夹拖拽进项目目录中): 第三步:新建一个Excel文件(这里命名为test),打开并编辑一些测试内容,其中第一行是设计的字段,其余行是数据内容: 第四步:将这个Exce_excelresolutionforunity

推荐文章

热门文章

相关标签