安装MySQL教程:https://www.cnblogs.com/laumians-notes/p/9069498.html#undefined
#创建一个表
CREATE TABLE w3cschool_tbl(
w3cschool_id INT NOT NULL AUTO_INCREMENT,
w3cschool_title VARCHAR(100) NOT NULL,
w3cschool_author VARCHAR(40) NOT NULL,
submission_date DATE,
PRIMARY KEY ( w3cschool_id )
);
实例解析:
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
案例来源:https://www.w3cschool.cn/mysql/mysql-create-tables.html
=============================删除表==================================
#删除表
DROP TABLE 表名 ;
#删除表中数据
DELETE FROM w3cschool_tbl WHERE w3cschool_id=3
如果没有where将删除表中所有记录
=============================插入数据=================================
#插入数据
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
#插入一条数据到 w3cschool_tbl
INSERT INTO w3cschool_tbl
->(w3cschool_title, w3cschool_author, submission_date)
->VALUES
->("JAVA Tutorial", "Sanjay", '2007-05-06');
#在以上实例中,我们并没有提供 w3cschool_id 的数据,因为该字段我们在创建表的时候已经设置它为 #AUTO_INCREMENT(自动增加) 属性
========================================================================
选取主键的一个基本原则是:不使用任何业务相关的字段作为主键。(如身份证、手机号虽然唯一,但是不能做为主键)
外键:可以把数据与另一张表关联起来,这种列称为外键
关系数据库通过外键可以实现一对多、多对多和一对一的关系。外键既可以通过数据库来约束,也可以不设置约束,仅依靠应用程序的逻辑来保证。
索引:通过对数据库表创建索引,可以提高查询速度。
=========================================查询========================================
基本查询:
SELECT * FROM 表名
条件查询
SELECT * RROM 表名 WHERE 条件表达式
投影查询(查看个别几个列):
SELECT 列1,列2 ... FROM 表名
SELECT 列1 别名1, 列2 别名2, 列3 别名3 FROM ...
====================================排序=====================================
排序:(写在where 子句后面)
只要在上面查询的语句后面加上 ORDER BY 列名
如果排序结果要反过来就加上 DESC
默认的排序规则是ASC
:“升序”,即从小到大
如果一个列有相同的值,可以继续添加列名 ORDER BY 列1 DESC, 列2
=================================分页查询=======================================
当数量很多的时候,select 查询可以用分页功能
select * from 表名 order by 列1 LIMIT <M> OFFSET <N>
M 为一页展示多少条记录,
N为当前页的索引。 M*(索引-1)
==============================聚合查询==========================================
SELECT COUNT(*) FROM 表名; 返回表中有多少条记录。
也可以起别名,然后用 where
SELECT COUNT(*) 别名1 FROM 表名 WHERE 条件表达式;
注意,MAX()
和MIN()
函数并不限于数值类型。如果是字符类型,MAX()
和MIN()
会返回排序最后和排序最前的字符。如果聚合查询的WHERE
条件没有匹配到任何行,COUNT()
会返回0,而SUM()
、AVG()
、MAX()
和MIN()
会返回NULL
分组聚合
SELECT COUNT(*) num FROM 表名
GROUP BY
列名1; 根据列1不同的值统计总数。
==========================================多表查询=======================================
SELECT * FROM 表1,表2
可以给列取别名,但是用
表名.列名
的方式访问
SELECT 表1.列名 别名, 表2.列名 FROM 表1,表2
SELECT 表1别名.列名 别名, 表2别名.列名 FROM 表1 表1别名,表2 表2别名
这种方式的多表查询是笛卡尔查询,返回的结果列数等于两个表的列数和,表的行数等于两个表的行之乘积。
=================================连接查询(拼接查询)============================
========================插入、更新、删除===================================
INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...);
UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...;
当update没有设置where的时候,将会更新整个列的数据
DELETE FROM <表名> WHERE ...;
使用 truncate 表 可以连通id一起删除。