对表结构进行操作的一些语句:
- 添加字段名: alter table 表名 add 字段名 varchar()
- 修改:1. 修改数据类型: alter table 表名 modify 字段名 数据类型
2.修改字段名字和字段类型: alter table 表名 chance 旧段名 ,新字段 数据类型
- 删除字段 alter table 表名 drop 字段名
- 修改表名:alter table 表名 rename to 新表名
- 删除表: drop table 【if exists 】表名
truncate table 表名
对表中一些数据进行处理
- 添加数据:insert into 表 (字段名) values(值)
- 修改数据:update 表名 set 字段名1 = 值1,字段名2 = 值 where
- 删除数据:delete from 表名 where
对数据库中一些表的结构进行约束
- 非空约束 not null 不为空
- 唯一约束 unique 所有数据唯一且不重复
- 主键约束 primary key 主键一行数据的唯一标识,非空且唯一
- 默认约束 default 保存数据时,若没有指定值,则采用默认值
- 检查约束 check 字段值满足一个值
- 外键约束 foreign key 两张表数据之间建立连接,保证数据一致性和完整性
主键约束,自动增长:primary key ,auto_increment
不为空,并且唯一:not null, unique
大于0,并且小于等于120 check
若没有值,默认为 1 default
添加 外键:
alter table 表名 add constraint 外键名称 foreign key (外键名称)references 主键名称
删除主键:alter table 表名 drop 外键名称
主键作用(外键):
外键取值规则:空值或参照的主键值
(1)插入非空值时,如果主键值中没有这个值,则不能插入。
(2)更新时,不能改为主键表中没有的值。
(3)删除主键表记录时,可以在建外键时选定外键记录一起联删除还是拒绝删除。
(4)更新主键记录时,同样有级联更新和拒绝执行的选择。
no action 不允许删除 restrict同上
cascade 检查是否有外键,若有,删除时两者同时进行删除
set null 删除记录时,检查记录是否有外键 若有,则设置为null
set default 父表进行变更时,子表将外键设置为默认值
中学
DCL:data control language 管理数据库,控制数据库访问权限。
create user ‘用户名’ @‘主机名’ identified by '密码';
alter user '用户名' identified with mysql_native_password by '新密码' drop user '用户名' @‘主机名’
DCL 权限控制
show grants for '用户名' @ ‘主机名’;
多表查询
内连接:查询两表交集部分
隐式内连接:select 字段名 from 表1, 表2 where 条件(连接条件)
显示内连接:select 字段名 fROM 表1 join表2 on 条件(连接条件)
两者之间区别:隐式连接好理解好书写,语法简单,担⼼的点较少。但是显式连接可以减少字段的扫描,有更快的执⾏速度
外连接 :得到的是对应连接的一些数据
左外:左表所有的数据 select 字段名 from 表1 left join 表2 on 连接条件
右外: 右表所有的数据 select 字段名 from 表1 right join 表2 on 连接条件
自连接:自己表进行了解
select 字段名列表 from 表1 别名A join 表B on 条件
联合查询:union ,union all
将两个表进行拼接:这里需要注意的是union按理 会删除相同的部分
一些常用的函数:
- 字符串函数
concat(s1,s2) 字符串的拼接
lpad(str,n,pad) 左填充 用pad 进行左填充,达到n个字符串长度
rpad(str,n,pad) 左填充 用pad 进行左填充,达到n个字符串长度
trim(str) 去掉头尾部空格
substring(str,start,len) 返回字符串从str 从start位置起的len个长度的字符串
- 数值函数
ceil(x) 向上取整
floor(x) 向下取整
mod(x,y) 返回x/y的模
rand() 返回0—1的随机数
round(x,y) 对x四舍五入,保留y位小数
- 日期函数
curdate() 当前日期
curtime() 当前时间
now() 日期+时间
year(date) 指定date年份
month(date) 指定date 月份
day(date) 指定date日期
day_add(date, interval, expr,type) 返回日期/时间值加上一个时间间隔expr 后的时间值
datediff(date1,date2) 返回起始时间date1和结束时间date2的天数差
timestamps(seconds,date1,date2)
- 流程控制函数
if (value,t, f)value为TRUE 返回t,否则f
ifnull(value1,value2) value1不为空,返回value1,否则返回value2
case
when value1 (value1 为TRUE)
then res
else
default
end;
case expr
when value1 (value1为expr)
then res
else
default
end;
Row_number()函数是SQL SERVER系统函数中的一种,它为结果集的分区中的每一行分配一个连续的整数。