mysql 非空语法_mysql从入门到优化(1)基本操作上

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

一、前提

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

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

二、操作数据库

1、创建数据库1语法:

2    CREATE DATABASE 数据库名 [IF NOT EXISTS];

3实例:

4    mysql> create database test_db;

5    Query OK, 1 row affected (0.02 sec)

6描述:

7    创建一个名为test_db的数据库

2、查看数据库1语法:

2    SHOW DATABASES [LIKE "筛选条件"];

3实例:

4    mysql> show databases like "%test%";

5    +-------------------+

6    | Database (%test%) |

7    +-------------------+

8    | test              |

9    | test1             |

10    | test_db           |

11    +-------------------+

12    3 rows in set (0.00 sec)

13描述:

14    显示所有包含test的数据库

3、修改数据库

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

2    ALTER DATABASE [数据库名] {[DEFAULT] CHARACTER SET };

3实例:

4    mysql> alter database test_db default character set gb2312;

5Query OK, 1 row affected (0.00 sec)

6描述:

7    修改数据库test_db的默认字符集为gb2312

4、删除数据库1语法:

2    DROP DATABASE [IF EXISTS] 数据库名;

3实例:

4    mysql> drop database if exists test_db;

5    Query OK, 0 rows affected (0.18 sec)

6描述:

7    如果数据库test_db存在,那就删除掉

5、使用数据库1语法:

2    USE 数据库名;

3实例:

4    mysql> use test1;

5    Database changed

6描述:

7    进入到当前数据库

三、操作表

1、创建表1语法:

2    CREATE TABLE 表名 (字段名 字段类型, 字段名 字段类型.....);

3实例:

4    mysql> use test_db;

5    Database changed

6    mysql> create table student(

7    -> id int(11),

8    -> name varchar(20),

9    -> class_id int(11),

10    -> score float

11    -> );

12    Query OK, 0 rows affected (0.30 sec)

13描述:

14    首先进入当前数据库test_db,然后创建一个student表

2、查看表1语法:

2    SHOW TABLES [LIKE '筛选条件'];

3实例:

4    mysql> show tables;

5    +-------------------+

6    | Tables_in_test_db |

7    +-------------------+

8    | student           |

9    +-------------------+

10    1 row in set (0.01 sec)

11描述:

12    显示当前数据库素所有的表

3、查看表结构1语法:

2    DESCRIBE 表名;

3实例:

4    mysql> describe student;

5    +----------+-------------+------+-----+---------+-------+

6    | Field    | Type        | Null | Key | Default | Extra |

7    +----------+-------------+------+-----+---------+-------+

8    | id       | int(11)     | YES  |     | NULL    |       |

9    | name     | varchar(20) | YES  |     | NULL    |       |

10    | class_id | int(11)     | YES  |     | NULL    |       |

11    | score    | float       | YES  |     | NULL    |       |

12    +----------+-------------+------+-----+---------+-------+

13    4 rows in set (0.01 sec)

14描述:

15    查看student数据表的结构

4、修改表

(1)添加字段1语法:

2    ALTER TABLE 表名 ADD 字段名称 字段类型;

3实例:

4    mysql> alter table student add age int(11);

5    Query OK, 0 rows affected (0.42 sec)

6    Records: 0  Duplicates: 0  Warnings: 0

7描述:

8    修改数据表student,新增了一个age字段

(2)修改字段类型1语法:

2    ALTER TABLE 表名 MODIFY 字段名 字段类型;

3实例:

4    mysql> alter table student modify age varchar(20);

5    Query OK, 0 rows affected (0.31 sec)

6    Records: 0  Duplicates: 0  Warnings: 0

7描述:

8    修改数据表student,将字段age的类型改为varchar

(3)修改字段名称1语法:

2    ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新字段类型;

3实例:

4    mysql> alter table student change score grade int(11);

5    Query OK, 0 rows affected (0.37 sec)

6    Records: 0  Duplicates: 0  Warnings: 0

7描述:

8    修改数据表student,将score字段改为grade,并设置新的字段类型

(4)删除字段1语法:

2    ALTER TABLE 表名 DROP 字段名;

3实例:

4    mysql> alter table student drop age;

5    Query OK, 0 rows affected (0.25 sec)

6    Records: 0  Duplicates: 0  Warnings: 0

7描述:

8    修改数据表student,删除age字段

(5)修改表名1语法:

2    ALTER TABLE 旧表名 RENAME 新表名;

3实例:

4    mysql> alter table student rename stu;

5    Query OK, 0 rows affected (0.05 sec)

6描述:

7    修改数据表student,重新命名为stu

5、删除表1语法:

2    DROP TABLE [IF EXISTS] 表名;

3实例:

4    mysql> drop table if exists student;

5    Query OK, 0 rows affected (0.05 sec)

6描述:

7    如果表student存在,那就删除掉

四、约束

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

1、主键约束

(1)主键约束1语法:

2    字段名称 字段类型 PRIMARY KEY;

3实例:

4    mysql> create table teacher(

5    -> id int(11) primary key,

6    -> name varchar(20),

7    -> classId int(11),

8    -> socre float

9    -> );

10    Query OK, 0 rows affected (0.15 sec)

11描述:

12    在创建表的同时,设置id为主键

或者是这种新式1    mysql> create table teacher(

2    -> id int(11) ,

3    -> name varchar(20),

4    -> classId int(11),

5    -> socre float,

6    -> primary key(id)

7    -> );

8    Query OK, 0 rows affected (0.15 sec)

(2)复合主键约束1语法:

2    PRIMARY KEY [字段1, 字段2......]

3实例:

4    mysql> create table teacher(

5    -> id int(11) ,

6    -> name varchar(20),

7    -> classId int(11),

8    -> socre float,

9    -> primary key(id,classId)

10    -> );

11    Query OK, 0 rows affected (0.12 sec)

12描述:

13    为表teacher设置多个主键

(3)修改表添加主键约束1语法:

2    ALTER TABLE 表名 ADD PRIMARY KEY (字段名);

3实例:

4    mysql> alter table stu add primary key(id);

5    Query OK, 0 rows affected (0.25 sec)

6    Records: 0  Duplicates: 0  Warnings: 0

7描述:

8    修改表stu,新增一个主键id

2、外键约束

外键用于连接两张表,

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

2    FOREIGN KEY 字段1 字段2..... REFERENCES 主表 字段1 字段2......

3实例:

4    mysql> create table class(

5    -> id int(11) primary key,

6    -> name varchar(25)

7    -> );

8    Query OK, 0 rows affected (0.16 sec)

9

10    mysql> create table stu(

11    -> id int(11),

12    -> name varchar(25),

13    -> class_id int(11),

14    -> score float,

15    -> foreign key(class_id) references class(id)

16    -> );

17    Query OK, 0 rows affected (0.18 sec)

18描述:

19    首先创建一个class表,然后再创建stu表的时候,设置class_id为外键,指向class表

(2)修改表时添加外键约束1语法:

2    ALTER TABLE 表名 ADD FOREIGN KEY 外键字段名 REFERENCES 主表名 主表字段;

3实例:

4    mysql> alter table stu

5    -> add foreign key(class_id)

6    -> references class(id);

7    Query OK, 0 rows affected (0.47 sec)

8    Records: 0  Duplicates: 0  Warnings: 0

9描述:

10    修改表stu,增加一个外键

(3)删除外键约束1语法:

2    ALTER TABLE 表名 DROP FOREIGN KEY 外键字段名

3实例:

4    mysql> alter table stu

5    -> add constraint fk_class_id foreign key(class_id)

6    -> references class(id);

7    Query OK, 0 rows affected (0.39 sec)

8    Records: 0  Duplicates: 0  Warnings: 0

9

10    mysql> alter table stu drop foreign key fk_class_id;

11    Query OK, 0 rows affected (0.05 sec)

12    Records: 0  Duplicates: 0  Warnings: 0

13描述:

14    新增加一个外键,然后删除,注意我们为外键起了个名字fk_class_id

3、唯一约束1语法:

2    字段名 字段类型 UNIQUE;

3实例:

4    mysql> create table stu2(

5    -> id int(11),

6    -> name varchar(25) unique,

7    -> primary key(id)

8    -> );

9    Query OK, 0 rows affected (0.16 sec)

4、默认约束1语法:

2    字段名 字段类型 DEFAULT 默认值;

3实例:

4    mysql> create table stu3(

5    -> id int(11) primary key,

6    -> name varchar(25) unique,

7    -> sex varchar(10) default "women"

8    -> );

9    Query OK, 0 rows affected (0.18 sec)

5、非空约束1语法:

2    字段名 字段类型 NOT NULL;

3实例:

4    mysql> create table stu4(

5    -> id int(11) primary key,

6    -> name varchar(25) unique,

7    -> sex varchar(10) default "women",

8    -> class_id int(11) not null

9    -> );

10    Query OK, 0 rows affected (0.19 sec)

五、函数

1、数值型函数1ABS(X):返回X的绝对值

2MOD(X,Y):返回X被Y除后的余数

3SQRT(X):返回非负数X的二次方根

4SIGN(X):返回X的符号,为正返回1,为负返回-1

5CEIL(X):返回不小于X的最小整数

6SIN(X):返回X的sin值,其他三角函数类似

2、字符串函数1LENGTH(str):返回str的字节长度

2UPPER(str):将str中的每一个字母全部转化为大写

3LOWER(str):将str中的每一个字母全部转化为小写

4LEFT(str,n):返回str中最左边的n个字符

5RIGHT(str,n):返回str中最右边的n个字符

6CONCAT(S1,S2,S3.....):将内部多个字符串拼接

7TRIM(str):删除str两边的空格

8SUNSREING(str,n,len):从位置n开始,返回str的长度为len的字串

9REVERSE(str):将字符串str反转

10REPLACE(s,s1,s2):使用s2,替换掉s中的所有s1字串

3、日期函数1NOW()=SYSDATE():返回当前的系统时间,格式为“2020-10-03 19:35:25”

2CURDATE()=CURRENT_DATE():返回日期,格式为“2020-10-03”

3CURTIME()=CURRENT_TIME():返回系统时间,格式为“19:37:28”

4DAYOFWEEK()=WEEKDAY():返回当天在一周中的索引,weekday("2020-10-03")

5DAYOFMONTH(d)=DAYOFYEAR(d):返回d是一个月的第几天

6MONTH(data)=MONTHNAME(data):返回data对应的月份

7DATEDIFF(date1,date2):返回date1和date2之间的天数

4、聚合函数1MAX():返回指定列中的最大值

2MIN():返回查询列中的最小值

3COUNT(字段名):统计含有字段名的总行数

4SUM():返回指定列的总和值

5AVG():返回指定列的平均值

5、自定义函数

(1)无参数1语法:

2    CREATE FUNCTION 函数名() RETURNS 字段类型

3    RETURN 操作;

4实例:

5    mysql> create function f1() returns varchar(30)

6    -> return now();

7    Query OK, 0 rows affected (0.03 sec)

8调用:

9    mysql> select f1();

10    +---------------------+

11    | f1()                |

12    +---------------------+

13    | 2020-11-05 15:52:24 |

14    +---------------------+

15    1 row in set (0.03 sec)

(2)有参数1语法:

2    CREATE FUNCTION 函数名(参数名 参数类型,参数名 参数类型.....)

3    RETURNS 返回类型

4    RETURN 函数操作

5实例:

6    mysql> create FUNCTION f2(num1 smallint unsigned,num2 smallint unsigned)

7    -> returns float(10,2)

8    -> return (num1+num2)/2;

9    Query OK, 0 rows affected (0.00 sec)

10调用:

11    mysql> select f2(10,20);

12    +-----------+

13    | f2(10,20) |

14    +-----------+

15    |     15.00 |

16    +-----------+

17    1 row in set (0.01 sec)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“凡尔赛文学”疯狂刷屏!数学家们也拼命“装”了起来,哈哈哈哈哈

全世界只有3.14 % 的人关注了爆炸吧知识凡尔赛文学与数学结合起来完美无缺大家好,超模君昨天在写稿时,表妹过来告诉我:“表哥你的科普文章都out了!现在凡尔赛文学才是主流!”超模君很疑惑,凡尔赛文学的画风…

org.hibernate.InvalidMappingException: Could not parse mapping document from resource

在写hibernate时&#xff0c;若运行出现"org.hibernate.InvalidMappingException: Could not parse mapping document from resource"问题&#xff0c;首先确定jar包导入无误; 接下来看 *.hbm.xml文件中的字段&#xff1a; <!DOCTYPE hibernate-mapping PUBLIC &q…

.NET 6新特性试用 | 可空引用类型

前言在查看《隐式using指令》功能时&#xff0c;我们在csproj中发现这样一个属性&#xff1a;那么&#xff0c;Nullable到底是干嘛的&#xff1f;可为空上下文严格来说&#xff0c;这不是新特性&#xff0c;而是C# 8.0引入的特性之一。该特性用于指示引用类型是否接受null值:只…

zabbix JMX监控 tomcat

第一步&#xff1a;需要安装jdk1.# tar xvf jdk-7u21-linux-x64.tar.gz -C /usr/localource /etc/bashrc2.# ln -s /usr/local/jdk1.7.0_21 /usr/local/jdk3.# echo JAVA_HOME/usr/local/jdk >> /etc/bashrc4.# echo PATH$PATH:${JAVA_HOME}/bin/ >> /etc/bashrc5.…

Android之Base64

Base64介绍 Base64是一种基于64个可打印字符来表示二进制数据的表示方法,从本质上看Base64编码就是将三字节转四字节。如将字符串“Man”用Base64编码。 如果数据的长度不是3的整数倍

mysql 1054 42s22_MySQL ERROR 1054(42S22)

修改用户的密码&#xff0c;网上搜到的命令为如下执行后报错  ERROR 1054(42S22) Unknown column password in ‘field list’错误的原因是 5.7版本下的mysql数据库下已经没有password这个字段了&#xff0c;password字段改成了authentication_string所以请使用一下命令>my…

这是不是帮女朋友拍照时的你?哈哈哈哈

1 就跟我房东说&#xff1a;现在打工人压力真大一样▼2 原来&#xff0c;连打工人都不配了吗&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 原来这才是家大叶大▼4 给女朋友拍照时的你&#xff01;&#xff08;via.刘一杭三三 &#xff09;▼5 当法…

linux slub分配器浅析

在《linux内存管理浅析》中提到内核管理自己使用的内存时&#xff0c;使用了SLAB对象池。SLAB确实是比较复杂&#xff0c;所以一直以来都没有深入看一看。不过现在&#xff0c;linux内核中&#xff0c;SLAB已经被它的简化版--SLUB所代替。最近抽时间看了一下SLUB的代码&#xf…

openfire 插件开发例子

2019独角兽企业重金招聘Python工程师标准>>> 好久都没有写东西了。今天总结一下之前开发的一些openfire插件。 这次的插件需要提供一个HTTP的接口。通过HTTP来对openfire做一些操作。 插件的目录结构&#xff1a;项目名称“exampleplugin" src/main/javaorg/ji…

WPF实现一个彩虹按钮

WPF开发者QQ群&#xff1a; 340500857 | 微信群 -> 进入公众号主页 加入组织玩玩彩虹文字&#xff0c;这次用 LinearGradientBrush 并且制作成按钮&#xff0c;虽然没技术含量反而有些实用&#xff0c;这就是返璞归真吗。首先来回忆下 LinearGradientBrush 的用法。LinearG…

设计模式的分类和六大设计原则

学习设计模式我是大学研究《java与模式这本书》1024页&#xff0c;很多没有看懂&#xff0c;并且没有总结起来&#xff0c;这次一定要把设计原则和设计模式总结清楚。 设计模式的分类 设计模式分为三大类&#xff1a;创建型模式&#xff0c;共五种&#xff1a;工厂方法模式、…

Java IO的RandomAccessFile的使用(转)

现有如下的一个需求&#xff0c;向已存在1G数据的txt文本里末尾追加一行文字&#xff0c;内容如下“Lucene是一款非常优秀的全文检索库”。可能大多数朋友会觉得这个需求很easy&#xff0c;说实话&#xff0c;确实easy&#xff0c;然后XXX君开始实现了&#xff0c;直接使用Java…

nvidia控制面板点了没反应win7_为什么没有nvidia控制面板_win7没有nvidia控制面板怎么找回-系统城...

2016-10-31 16:15:46  浏览量&#xff1a;30668如果电脑显卡出现问题会导致屏幕画面不清楚&#xff0c;这时候win7系统自带nvidia控制面板就派上用场了。它能够对显卡进行设置&#xff0c;提升显卡功能&#xff0c;但有用户说win7怎么没有nvidia控制面板&#xff1f;找很久也…

公交车座椅上有个洞,竟是为了…很多人都不知道

全世界只有3.14 % 的人关注了爆炸吧知识坐公交车的时候你有没有发现公交车的座椅上通常来说中间都会有个洞洞的大小基本上刚好够一个手指头穿过那么这个洞到底有什么用呢&#xff1f;小编特意问了一圈同事们的回答真的脑洞大开有的说洞口刚好可以穿过手指是不是乘客无聊的时候可…

C# 如何判断某个 tcp 端口是否被占用?

咨询区 Ali&#xff1a;在 C# 中使用 TcpClient 或者其他通用的方式建立的 Socket&#xff0c;请问我如何判断这个端口是否被占用&#xff1f;比如下面的代码&#xff1a;TcpClient c; //I want to check here if port is free. c new TcpClient(ip, port);回答区 jro&#xf…

C#正则表达式编程(四)转致周公

正则表达式提供了功能强大、灵活而又高效的方法来处理文本。正则表达式的全面模式匹配表示法使您可以快速分析大量文本以找到特定的字符模式&#xff1b;提取、编辑、替换或删除文本子字符串&#xff1b;或将提取的字符串添加到集合以生成报告。对于处理字符串&#xff08;例如…

Quartz 的SB问题 GetNextValidTimeAfter 输出和输出 时区 不同步,好傻的方法?

测试代码如下DateTime kk new DateTime(2012, 6, 4, 15, 0, 0);Quartz.CronExpression cron new Quartz.CronExpression("0 14 15 ? * *");var dt cron.GetNextValidTimeAfter(kk);好傻好伤。dt的时候是 {2012/6/5 7:14:00} 跑出了一个7点来了。正确的期待值应该…

Android之switch控件的用法

在做一个蓝牙开关时候,用到了switch,记一下用法,其实跟Button是几乎一样的. 布局中: <Switch android:id="@+id/open" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOff="蓝牙关闭中&q…

pythonresponse对象的属性_Scrapy中response属性以及内容提取

PythonPython开发Python语言Scrapy中response属性以及内容提取一.属性url &#xff1a;HTTP响应的url地址,str类型status&#xff1a;HTTP响应的状态码, int类型headers &#xff1a;HTTP响应的头部, 类字典类型, 可以调用get或者getlist方法对其进行访问body&#xff1a;HTTP响…

【转】学习apicloud和IOS之间的模块化使用

最近公司有使用APICloud发开的需求&#xff0c;需要我这边提供一些模块包得封装。因为没有也是刚接触APICloud&#xff0c;所以也就在看官方文档 。下面讲一讲我再使用过程中得一点点东西。 首先&#xff0c;下载官方SDK,下载最新版本的模块开发SDK&#xff0c;找到里面的Modul…