博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1、mysql基本操作上,适合新手和巩固学习
阅读量:4035 次
发布时间:2019-05-24

本文共 7577 字,大约阅读时间需要 25 分钟。

这是数据库系列的第一篇文章,主要是对mysql的基本操作有一个了解。本系列的教程会先从基础出发,逐步过渡到优化。

一、前提

在这里我们不会从如何去安装数据库开始讲起,而是在安装完之后从操作数据库开始,文中所有的代码均在我自己的win10电脑上实现过一遍,确保无误。而且本文是基于mysql5.7.23的版本中实现的。下面就直接开始。

注意,对于数据库在学习的时候,过程都是从增查改删用的顺序来的。

二、操作数据库

1、创建数据库

语法:	CREATE DATABASE 数据库名 [IF NOT EXISTS];实例:	mysql> create database test_db;	Query OK, 1 row affected (0.02 sec)	描述:	创建一个名为test_db的数据库

2、查看数据库

语法:	SHOW DATABASES [LIKE "筛选条件"];实例:	mysql> show databases like "%test%";	+-------------------+	| Database (%test%) |	+-------------------+	| test              |	| test1             |	| test_db           |	+-------------------+	3 rows in set (0.00 sec)描述:	显示所有包含test的数据库

3、修改数据库

说实话一般,不修改数据库,如果有问题直接删除了重建。

语法:	ALTER DATABASE [数据库名] {[DEFAULT] CHARACTER SET 
<字符集>
};实例: mysql> alter database test_db default character set gb2312;Query OK, 1 row affected (0.00 sec)描述: 修改数据库test_db的默认字符集为gb2312

4、删除数据库

语法:	DROP DATABASE [IF EXISTS] 数据库名;实例:	mysql> drop database if exists test_db;	Query OK, 0 rows affected (0.18 sec)描述:	如果数据库test_db存在,那就删除掉

5、使用数据库

语法:	USE 数据库名;实例:	mysql> use test1;	Database changed描述:	进入到当前数据库

三、操作表

1、创建表

语法:	CREATE TABLE 表名 (字段名 字段类型, 字段名 字段类型.....);实例:	mysql> use test_db;	Database changed	mysql> create table student(    -> id int(11),    -> name varchar(20),    -> class_id int(11),    -> score float    -> );	Query OK, 0 rows affected (0.30 sec)描述:	首先进入当前数据库test_db,然后创建一个student表

2、查看表

语法:	SHOW TABLES [LIKE '筛选条件'];实例:	mysql> show tables;	+-------------------+	| Tables_in_test_db |	+-------------------+	| student           |	+-------------------+	1 row in set (0.01 sec)描述:	显示当前数据库素所有的表

3、查看表结构

语法:	DESCRIBE 表名;实例:	mysql> describe student;	+----------+-------------+------+-----+---------+-------+	| Field    | Type        | Null | Key | Default | Extra |	+----------+-------------+------+-----+---------+-------+	| id       | int(11)     | YES  |     | NULL    |       |	| name     | varchar(20) | YES  |     | NULL    |       |	| class_id | int(11)     | YES  |     | NULL    |       |	| score    | float       | YES  |     | NULL    |       |	+----------+-------------+------+-----+---------+-------+	4 rows in set (0.01 sec)描述:	查看student数据表的结构

4、修改表

(1)添加字段

语法:	ALTER TABLE 表名 ADD 字段名称 字段类型;实例:	mysql> alter table student add age int(11);	Query OK, 0 rows affected (0.42 sec)	Records: 0  Duplicates: 0  Warnings: 0描述:	修改数据表student,新增了一个age字段

(2)修改字段类型

语法:	ALTER TABLE 表名 MODIFY 字段名 字段类型;实例:	mysql> alter table student modify age varchar(20);	Query OK, 0 rows affected (0.31 sec)	Records: 0  Duplicates: 0  Warnings: 0描述:	修改数据表student,将字段age的类型改为varchar

(3)修改字段名称

语法:	ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新字段类型;实例:	mysql> alter table student change score grade int(11);	Query OK, 0 rows affected (0.37 sec)	Records: 0  Duplicates: 0  Warnings: 0描述:	修改数据表student,将score字段改为grade,并设置新的字段类型

(4)删除字段

语法:	ALTER TABLE 表名 DROP 字段名;实例:	mysql> alter table student drop age;	Query OK, 0 rows affected (0.25 sec)	Records: 0  Duplicates: 0  Warnings: 0描述:	修改数据表student,删除age字段

(5)修改表名

语法:	ALTER TABLE 旧表名 RENAME 新表名;实例:	mysql> alter table student rename stu;	Query OK, 0 rows affected (0.05 sec)描述:	修改数据表student,重新命名为stu

5、删除表

语法:	DROP TABLE [IF EXISTS] 表名;实例:	mysql> drop table if exists student;	Query OK, 0 rows affected (0.05 sec)描述:	如果表student存在,那就删除掉

四、约束

约束的作用,主要是为了确保数据的一致性和完整性。一般在创建表的时候指定。

1、主键约束

(1)主键约束

语法:	字段名称 字段类型 PRIMARY KEY;实例:	mysql> create table teacher(    -> id int(11) primary key,    -> name varchar(20),    -> classId int(11),    -> socre float    -> );	Query OK, 0 rows affected (0.15 sec)描述:	在创建表的同时,设置id为主键

或者是这种新式

mysql> create table teacher(    -> id int(11) ,    -> name varchar(20),    -> classId int(11),    -> socre float,    -> primary key(id)    -> );	Query OK, 0 rows affected (0.15 sec)

(2)复合主键约束

语法:	PRIMARY KEY [字段1, 字段2......]实例:	mysql> create table teacher(    -> id int(11) ,    -> name varchar(20),    -> classId int(11),    -> socre float,    -> primary key(id,classId)    -> );	Query OK, 0 rows affected (0.12 sec)描述:	为表teacher设置多个主键

(3)修改表添加主键约束

语法:	ALTER TABLE 表名 ADD PRIMARY KEY (字段名);实例:	mysql> alter table stu add primary key(id);	Query OK, 0 rows affected (0.25 sec)	Records: 0  Duplicates: 0  Warnings: 0描述:	修改表stu,新增一个主键id

2、外键约束

外键用于连接两张表,

(1)创建表时添加外键约束

语法:	FOREIGN KEY 字段1 字段2..... REFERENCES 主表 字段1 字段2......实例:	mysql> create table class(    -> id int(11) primary key,    -> name varchar(25)    -> );	Query OK, 0 rows affected (0.16 sec)	mysql> create table stu(    -> id int(11),    -> name varchar(25),    -> class_id int(11),    -> score float,    -> foreign key(class_id) references class(id)    -> );	Query OK, 0 rows affected (0.18 sec)描述:	首先创建一个class表,然后再创建stu表的时候,设置class_id为外键,指向class表

(2)修改表时添加外键约束

语法:	ALTER TABLE 表名 ADD FOREIGN KEY 外键字段名 REFERENCES 主表名 主表字段;实例:	mysql> alter table stu    -> add foreign key(class_id)    -> references class(id);	Query OK, 0 rows affected (0.47 sec)	Records: 0  Duplicates: 0  Warnings: 0描述:	修改表stu,增加一个外键

(3)删除外键约束

语法:	ALTER TABLE 表名 DROP FOREIGN KEY 外键字段名实例:	mysql> alter table stu    -> add constraint fk_class_id foreign key(class_id)    -> references class(id);	Query OK, 0 rows affected (0.39 sec)	Records: 0  Duplicates: 0  Warnings: 0	mysql> alter table stu drop foreign key fk_class_id;	Query OK, 0 rows affected (0.05 sec)	Records: 0  Duplicates: 0  Warnings: 0描述:	新增加一个外键,然后删除,注意我们为外键起了个名字fk_class_id

3、唯一约束

语法:	字段名 字段类型 UNIQUE;实例:	mysql> create table stu2(    -> id int(11),    -> name varchar(25) unique,    -> primary key(id)    -> );	Query OK, 0 rows affected (0.16 sec)

4、默认约束

语法:	字段名 字段类型 DEFAULT 默认值;实例:	mysql> create table stu3(    -> id int(11) primary key,    -> name varchar(25) unique,    -> sex varchar(10) default "women"    -> );	Query OK, 0 rows affected (0.18 sec)

5、非空约束

语法:	字段名 字段类型 NOT NULL;实例:	mysql> create table stu4(    -> id int(11) primary key,    -> name varchar(25) unique,    -> sex varchar(10) default "women",    -> class_id int(11) not null    -> );	Query OK, 0 rows affected (0.19 sec)

五、函数

1、数值型函数

ABS(X):返回X的绝对值MOD(X,Y):返回X被Y除后的余数SQRT(X):返回非负数X的二次方根SIGN(X):返回X的符号,为正返回1,为负返回-1CEIL(X):返回不小于X的最小整数SIN(X):返回X的sin值,其他三角函数类似

2、字符串函数

LENGTH(str):返回str的字节长度UPPER(str):将str中的每一个字母全部转化为大写LOWER(str):将str中的每一个字母全部转化为小写LEFT(str,n):返回str中最左边的n个字符RIGHT(str,n):返回str中最右边的n个字符CONCAT(S1,S2,S3.....):将内部多个字符串拼接TRIM(str):删除str两边的空格SUNSREING(str,n,len):从位置n开始,返回str的长度为len的字串REVERSE(str):将字符串str反转REPLACE(s,s1,s2):使用s2,替换掉s中的所有s1字串

3、日期函数

NOW()=SYSDATE():返回当前的系统时间,格式为“2020-10-03 19:35:25”CURDATE()=CURRENT_DATE():返回日期,格式为“2020-10-03”CURTIME()=CURRENT_TIME():返回系统时间,格式为“19:37:28”DAYOFWEEK()=WEEKDAY():返回当天在一周中的索引,weekday("2020-10-03")DAYOFMONTH(d)=DAYOFYEAR(d):返回d是一个月的第几天MONTH(data)=MONTHNAME(data):返回data对应的月份DATEDIFF(date1,date2):返回date1和date2之间的天数

4、聚合函数

MAX():返回指定列中的最大值MIN():返回查询列中的最小值COUNT(字段名):统计含有字段名的总行数SUM():返回指定列的总和值AVG():返回指定列的平均值

5、自定义函数

(1)无参数

语法:	CREATE FUNCTION 函数名() RETURNS 字段类型	RETURN 操作;实例:	mysql> create function f1() returns varchar(30)    -> return now();	Query OK, 0 rows affected (0.03 sec)调用:	mysql> select f1();	+---------------------+	| f1()                |	+---------------------+	| 2020-11-05 15:52:24 |	+---------------------+	1 row in set (0.03 sec)

(2)有参数

语法:	CREATE FUNCTION	函数名(参数名 参数类型,参数名 参数类型.....)     RETURNS 返回类型    RETURN 函数操作实例:	mysql> create FUNCTION f2(num1 smallint unsigned,num2 smallint unsigned)    -> returns float(10,2)    -> return (num1+num2)/2;	Query OK, 0 rows affected (0.00 sec)调用:	mysql> select f2(10,20);	+-----------+	| f2(10,20) |	+-----------+	|     15.00 |	+-----------+	1 row in set (0.01 sec)

OK,写到这算是把基础知识的上半部分写完了,下一部分主要写对数据表的增删改查操作,因为这个查询操作实在是过于麻烦,因此单开了一篇文章来描述,以上内容适合学过mysql基础的人,进行一个巩固或者是回顾,属于最最基本的知识点范畴了。

在这里插入图片描述

转载地址:http://oibdi.baihongyu.com/

你可能感兴趣的文章
Selenium-Switch与SelectApi接口详解
查看>>
Selenium-Css Selector使用方法
查看>>
Linux常用统计命令之wc
查看>>
测试必会之 Linux 三剑客之 sed
查看>>
Socket请求XML客户端程序
查看>>
Java中数字转大写货币(支持到千亿)
查看>>
Java.nio
查看>>
函数模版类模版和偏特化泛化的总结
查看>>
VMware Workstation Pro虚拟机不可用解决方法
查看>>
最简单的使用redis自带程序实现c程序远程访问redis服务
查看>>
redis学习总结-- 内部数据 字符串 链表 字典 跳跃表
查看>>
iOS 对象序列化与反序列化
查看>>
iOS 序列化与反序列化(runtime) 01
查看>>
iOS AFN 3.0版本前后区别 01
查看>>
iOS ASI和AFN有什么区别
查看>>
iOS QQ侧滑菜单(高仿)
查看>>
iOS 扫一扫功能开发
查看>>
iOS app之间的跳转以及传参数
查看>>
iOS __block和__weak的区别
查看>>
Android(三)数据存储之XML解析技术
查看>>