数据库的基本语句(mysql举例)


一、基础的显示、建立、删除命令(对数据库和表)

1.显示数据库列表

show databases;

2.使用此数据库

use mysql;

3.显示库中的数据表

show tables;

4.显示数据表的结构

DESC 表名;-- describe表名

5.建库

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

6.建表:

use库名create table表名(
字段名 数据类型(长度) 属性,
字段名 数据类型(长度) 属性,
...);

7.删库和删表:

drop database 库名drop table表名;
DROP TABLE [ IF EXISTS ] 表名;
-- IF EXISTS 为可选,判断是否存在该数据表,
-- 如果删除不存在的数据表会抛出错误,
-- 加入IF EXISTS后,表不存在不报错

8.将表中记录清空

delete from 表名;

9.显示表中的记录

select *from 表名;

二、数据库注释语句

MySQL支持三种注释方式:

1.从#字符到行尾。

2.从– 序列到行尾。注意–(双破折号)注释,要求第2个破折号后面至少跟一个空格符(例如空格、tab、换行符等等)。

3.从/*序列到后面的*/序列。多行注释。

三、约束

1.主键约束

定义:

主键是用来唯一标识表中记录的,一个或组合的多个字

要求:

1.一个表最多一个主键,主键不能为空,不能重复

2.表中可以没有主键,但是通常情况下建议为表设置主键。

用法:

1.创建表时添加约束

字段定义时加上关键字PRIMARY KEY

CREATE TABLE xs (#学生表
xs_nolNT(6)NOT NULL PRIMARY KEY,xs_name VARCHAR(12),
xs_sex
CHAR(2),
xs_ageTINYINT(3),xs_dateDATE
)CHARSET=UTF8;

2.如何设置主键为自增字段?

指新记录插入表中时自增字段会自动创建值

默认初始值是1,每次插入记录增加1.

方法:

创建表时设置自增

步骤1.列定义时使用AUTO_INCREMENT

CREATE TABLE xs ( #学生表
xs_no INT(6) PRIMARY KEY AUTO_INCREMENT,
xs_name VARCHAR(12),
xs_sex CHAR(2),
xs_age TINYINT(3) ,
xs_idnum VARCHAR(11)
) CHARSET=UTF8;

步骤2.设置自增起始值(默认1)

ALTER TABLE <表名> AUTO_INCREMENT=开始数字
#例如:
ALTER TABLE xs AUTO_INCREMENT=100 #从100开始自增

修改表时设置自增

ALTER TABLE <表名> MODIFY 字段类型 [其他约束] AUTO_INCREMENT;
ALTER TABLE xs MODIFY xs_no INT(6) PRIMARY KEY AUTO_INCREMENT 
#xs_no列是主键列

2.外键约束

定义:

是表中唯一标识另一个或同一个表记录的,一个或组合的多个字段

外键用来强制引用完整性

“从表”中对应于“主表”的列,在从表中称为外键或者引用键

用法:

新建表时加外键:

CONSTRAINT 外键名 
FOREIGN KEY(字段名)
REFERENCES 主表名(主键名);
#例:
CONSTRAINT dept1
FOREIGN KEY(deptId) REFERENCES student(id)

修改时加外键:

ALTER TABLE <数据表名> ADD CONSTRAINT <外键名>
FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);
#例:
ALTER TABLE tb_emp2
ADD CONSTRAINT fk_dept1
FOREIGN KEY(deptId)
REFERENCES student(id);

删除外键约束的语法格式如下所示:

ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;
#例:
ALTER TABLE tb_emp2
DROP FOREIGN KEY fk_tb_dept1;

3.非空(NOT NULL) 约束

定义:

强制字段不接受 NULL 值(强制字段始终包含值)

如果不向字段添加值,就无法插入新记录或者更新记录。

用法:

创建表时添加约束(列级约束)

字段定义时加上关键字NOT NULL表示不可以为空

字段定义时加上NULL表示可以为空

CREATE TABLE xs ( #学生表
xs_no INT(6),
xs_name VARCHAR(12) NOT NULL,
xs_sex CHAR(2),
xs_age TINYINT(3),
xs_idnum VARCHAR(11)
) CHARSET=UTF8;

四、数据库的增删改查基本语句

(一)INSERT语句( 添加语句 )

语法:

INSERT [INTO] 表名 [(列名)] VALUES (值列表);

示例:

INSERT INTO comments 
(cmtId,newsId,cmtContent,cmtDate,cmtIP,cmtAuthor) 
VALUES (1,1,有深度,2018-12-03,192.168.1.2,张三’);

注意事项:

1: 字段名是可选的,如省略则依次插入所有字段

INSERT INTO comments 
VALUES (1,1,有深度,2018-12-03,192.168.1.2’);

2: 插入的数据项,要求符合外键约束

3: 值列表和字段名列表一一对应

4: 具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值

5: 插入的数据项,要求符合主键约束

插入多行数据:

INSERT INTO 新表(字段名列表) VALUES(值列表1),(值列表2),……,(值列表n);

INSERT INTO comments 
(cmtId,newsId,cmtContent,cmtDate,cmtIP,cmtAuthor) 
VALUES (1,1,有深度,2018-12-03,192.168.1.2, 张三) ,
(2,1,有深度,2018-12-03,192.168.1.2,张三’);

为避免表结构发生变化引发的错误,建议插入数据时写明具体字段名!

(二)UPDATE语句( 更新语句 )

语法:

UPDATE 表名 SET 字段1=值1,字段2=值2,…,字段n=值n [WHERE 条件];

示例:

UPDATE comments SET cmtContent= 喜欢邓超, cmtDate=2019-
01-01’ WHERE cmtid=1;

注意:

1、更新多列数据使用逗号隔开

2、勿忘条件限制,以防有效数据的丢失

(三)DELETE语句( 删除语句 )

语法:

DELETE FROM 表名 [WHERE条件];

示例:

DELETE FROM comments WHERE cmtId=1;

注意:

有主外键关联表,先删外键表数据,再删除主键表数据

(四)SELECT语句(查询语句)

语法:

SELECT 列名 FROM 表名;

示例:

SELECT * FROM comments;-- 查询所有comments表格中数据
SELECT cmtId,cmtDate,cmtAuthor FROM comments;

经验:

查询全部列使用*

功能示例:

功能 :给数据列取别名

SELECT cmtId AS 评论编号, cmtAuthor AS 评论者名称 FROM comments;

功能 :给表取别名

SELECT com.newsId,cmtAuthor FROM comments AS com ;

功能 :把经计算或总结的结果用另外一个新名称来代替

SELECT cmtId+1 AS 评论编号 FROM comments ;

功能 :查询值1和值2区间的数据,并且包含值1和值2

SELECT * FROM comments WHERE cmtId BETWEEN 1 AND 10;

五、查询扩展

模糊查询

定义:

模糊查询是使用SQL 通配符替代一个或多个字符的条件查询

通配符:

一类字符,代替一个或多个真正的字符,与LIKE关键字一起使用

语法:

SELECT * FROM 表名 WHERE 字段 like ‘包含通配符的值’;

示例:

SELECT * FROM comments WHERE cmtAuthor LIKE %东%’;
-- 如何查询’张’某的新闻评论信息?
SELECT * FROM comments WHERE cmtAuthor LIKE ‘张_’;

DISTINCT去重

去掉SELECT查询返回的记录结果中重复的记录, 相同记录只返回一条:

SELECT DISTINCT 字段名1, 字段名2… FROM 表名

SELECT DISTINCT cmtContent FROM comments

升序降序

一组数据按照升序或降序排列:

SELECT<字段名列表>FROM<表名> [WHERE<查询条件>] [ORDER BY<排序的列名>[ASC或DESC] DESC表示按倒序排序(即:从大到小排序) —降序排列 ACS表示按正序排序(即:从小到大排序)—升序排列

SELECT * FROM comments ORDER BY newsId,cmtId DESC;

默认不写是升序排列

LIMIT子句限制

MySQL查询语句中使用LIMIT子句限制结果集:

SELECT<字段名列表>FROM<表名> [WHERE<查询条件>] [ORDERBY<排序的列名>[ASC或DESC]] [LIMIT[位置偏移量,]行数];

SELECT * FROM comments LIMIT 2,5;
-- 查询从第三行开始接下来五条数据

NULL

特点:

区别空字符串

只能出现在定义允许为NULL的字段

须使用 IS NULL 或 IS NOT NULL 比较操作符去比较

语法:

SELECT * FROM comments WHERE cmtAuthor IS NULL;

聚合函数

定义:

聚合函数是可以对一组值进行计算,并返回单个值的函数

语法:

SELECT 聚合函数 FROM 表名;

示例:

SELECT COUNT(*) AS 总数 FROM comments;

分组查询

定义:

是按照指定的字段分类汇总结果的查询方式

语法:

SELECT<字段名列表>FROM<表名> [WHERE<查询条件>] [GROUP BY<分组的字段名> [ORDER BY<排序的列名>[ASC或DESC]] [LIMIT[位置偏移量,]行数];

示例:

SELECT newsId 新闻编号,COUNT(*) AS 数量 FROM comments GROUP BY newsId;

注意:

SELECT列表中只能包含: 1、被分组的列 2、为每个分组返回一个值的表达式,如聚合函数

HAVING关键字

功能:

分组后条件筛选

语法:

SELECT<字段名列表>FROM<表名>[WHERE<查询条件>] [GROUP BY<分组的字段名>]HAVING条件 [ORDERBY<排序的列名>[ASC或DESC]][LIMIT[位置偏移量,]行数];

示例:

SELECT newsId 新闻编号,COUNT(*) AS 数量
FROM comments 
GROUP BY newsId
HAVING COUNT(*)<5;

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/database/290667.html

(0)
上一篇 2022年10月6日 00:58
下一篇 2022年10月6日 00:58

相关推荐

发表回复

登录后才能评论