Musql 默认端口3306
0
111111111111111111111111111111111111111111111111111111111111111111关0键字与函数名名称大写
数据库名称,表名称、字段0名称小写
SQL语句以分号结尾
如 SELECT USER();
{}表示内容是必须的,|表示或者,[]表示内容可有可无
查看当前服务器下的数据库列表: SHOW DATABASES; SHOW CREATE DATABASE
创建数据库:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET
修改数据库编码方式
ALTER {DATABASE | SCHEMA} [db_name] [DAFAULT] CHATACTER SET [=] charaset_name;
删除数据库
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;
数据类型:选择最合适的,越精确则占内存越大
整型 浮点型:FLOAT[(M,D)] M是数字总位,D是小数点后位数,若省略,则精确到七位
**打开数据库:**USE db_name
查看数据列表:SHOW TABLES [FROM db_name] [LIKE ‘patten’ | WHERE expr]
查看数据表: SHOW COLUMNS FROM tal_name
插入记录到表中 INSERT tbl_name [(col_name,…)] VALUES(val,…)
col_name 列名称可省略,若省略则按照所有数据列的对应赋值,少写会报错
记录的查找:SELECT expr,… FROM tb1_name
空值和非空:NULL 字段可以为空;NOT NULL。字段不能为空
这里用户名是不允许为空的
自动编号(AUTO_INCREMENT,):必须与主键组合使用,默认初始值为1,每次增量为1
主键约束(PRIMARY KEY):每张数据表只能存在一个主键,保证记录的唯一性,为NOT NULL
id处表示此行为主键,并且是自动编号,因此不用赋值。
唯一约束(UNIQUE KEY):可以保证记录的唯一性,字段可以为空,保证的空值只有一个。
每张数据表可以存在多个唯一约束。
默认约束(DEFAULT):
约束:保证数据的完整性和一致性,分为表级约束和列级
外键约束(FOREIGN KEYp)
1. 子表和父表存储引擎相同,为InnoDB,禁止临时表
2. 外键列和参照列数据类型必须相同,数字的长度和符号必须相同,字符的长度可以不同
3. 外键列和参照列必须创建索引,参照列没有索引,将自动生成,外键列没有不会
可在my.int中编辑默认存储引擎
首先先创建一张父表
插入记录:
① (最常用)
INSERT [INTO] tbl_name [(col_name,…)] {values | value} ({expr|DEFAULT},…
如何希望对记录自动编号的字段复制的话,可以输入null到id位置上。
如果希望输入默认值得话,输入DEFAULT到对应位置即可。
② (只能插入一条记录)
INSERT [INTO] tbl_name SET col_name={expr | DEFAULT},
区别:此方法可以使用子查询(SubQuery)
③ (可以将查询结果插入到指定数据表)
INSERT [INTO] tbl_name [(col_name,…)] SELECT…
更新记录(单表更新,修改)UPDATE:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1 = {expr1|DEAFULT} [,col_name2 = {expr2 | DEFAULT}] … [WHERE where_condition]
,
加条件:
删除记录(单表删除)DELETE
DELETE FROM tbl_name [WHERE where_condition]
删除后,再默认添加,id号会在最后加一,而不是补全之前删除的位置
查找:SELECT
SELECT select_expr[ , select_expr…]
[
FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | position} [ASC | DESC],…]
[HAVING where_condition]
[ORDER BY {col_name | expr | position} [ASC | DESC],…]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
]
查询表达式
可以查询部分列,并且修改返回顺序,*表示所有列
可见返回的列顺序与原始顺序不同
如果是多张表,则要在字段前加表名,因为不同表有相同的字段。
如。Users.id
字段的别名。AS不要省略
条件表达式WHERE 用在GROUP BY 前面,在查询前去掉不符合的,不能包含聚合函数
查询结果分组 GROPE BY
[GROUP BY {col_name | position} [ASC(升)|DESC(降)],…]
组合使用HAVING条件时,在分组后筛选满足条件的组,条件必须符合前面的选择字段。除非使用聚合函数(sum,count)
此处使用了count(id)
对结果排序:ORDER BY
[ ORDER BY { col_name| expr |position} [ASC|DESC],…]
以多个字段排序: .依次满足条件排序。
限制返回数量:LIMIT {[offset,],row_count |row_count OFFSEToffset}]
输入一个数x,默认从头返回x行,输入两个数x,y,返回从第x+1(因为是从0行开始)行数的y行。
表一数据插入到表二
条件:先知晓表二字段数量及名称,选择插入的内容字段要对应上表二的字段。
test有两个字段,而users则不止,插入位置要如图指定才行。