以shool数据库的demo为例:
#切换数据库
USE school;
#创建测试表
CREATE TABLE demo(
id INT(4) NOT NULL,
name VARCHAR(20)
) ;
一、修改表的语法
修改表名
ALTER TABLE 旧表名 RENAME [TO] 新表名;
添加字段
ALTER TABLE 表名 ADD 字段名 数据类型 [属性];
- 如果表中已经存在数据则添加的列不可以有非空约束 (not null)
查看表格结构
DESC demo1;
修改字段
ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];
删除字段
ALTER TABLE 表名 DROP 字段名;
添加主键
- 语法:
ALTER TABLE 表名 ADD CONSTRAINT 主键名
PRIMARY KEY 表名(主键字段);
例题:
如何设置school表中demo字段为主键?
ALTER TABLE demo1 ADD CONSTRAINT pk_demo1_id PRIMARY KEY demo1(id);
添加外键
条件 :
1.外键在从表上创建
2.创建外键时 表里面不可以有数据
3.外键对于两张表关联的列所有特性必须完全一致,但是列名可以不相同
4.创建外键后两张表的增删改功能会被关联
5.删除主表数据必须先删除从表数据
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键字段) REFERENCES 关联表名(关联字段);
例题:
添加外键:学生和年级
DML:数据库
语法:
INSERT INTO 表名 [(字段名列表)] VALUES (值列表)
注意:
- 字段名是可选的,如省略则依次插入所有字段
- 多个列表和多个值之间使用逗号分隔
- 值列表和字段名列表一一对应
- 如插入的是表中部分数据,字段名列表必填
快速复制表
- 复制表的结构和数据
- 只复制表的结构
增加:
插入单条记录: 语法:INSERT INTO 表名 [(字段名列表)] VALUES (值列表);
插入多条数据记录: 语法:INSERT INTO 新表(字段名列表) VALUES(值列表1),(值列表2),……,(值列表n);
例:
修改
语法:
UPDATE 表名
SET 字段1=值1,字段2=值2,…,字段n=值n
[WHERE 条件];
删除
语法:
- DELETE FROM 表名 [WHERE条件];
- TRUNCATE TABLE 表名;
DQL:散户局查询语言
- select 查询内容 from 表名
- where 查询条件
- group by 分组依据
- order by 排序依据 desc/asc
- limit 起始行的下标,返回的行数
例题:
聚合函数
函数名 | 作用 |
---|---|
AVG() | 返回某字段的平均值 |
COUNT() | 返回某字段的行数 |
MAX() | 返回某字段的最大值 |
MIN() | 返回某字段的最小值 |
SUM() | 返回某字段的和 |
limit子句
返回固定行数的数据 limit 起始行下标 ,行数 下标是从0开始的行的
日期函数
#获取年月日信息
SELECT CURDATE();
#获取时分秒信息
SELECT CURTIME();
#获取详细的时间和日期信息
SELECT NOW();
#获取某个时间是一年中的第几周
SELECT WEEK(NEW());
#计算两个时间之间间隔的天数
SELECT DATEDIFF(NOW(),‘1997-11-27’);
#推算日期
SELECT ADDDATE(NOW(),1000);
属性函数
#向上取整
SELECT CEIL(24.1);
#向下取整
SELECT FLOOR(24.1);
#随机数 0-1
SELECT RAND();