数据库
【链接】mysql之系统默认数据库
https://www.cnblogs.com/progor/p/8462802.html
https://blog.csdn.net/qq_43028054/article/details/93138503
数据库
- 结构化查询语句
- ddl create alter drop
- dml insert update delete
- dql select
- dcl grant授权 revoke回收
数据库操作命令
-
启动 net start mysql
-
关闭 net stop mysql
-
登录 mysql -u user -p 密码
-
创建用户 create user 用户名称 identified by ‘密码’;
-
授权 grant 权限 on 范围 to 用户
-
创建用户时分配权限 grant 权限 on 范围 to 用户 identified by ‘密码’
-
回收 revoke 权限 on 范围 from 用户
-
刷新权限机制 flush privileges;
-
更改密码
-
更改指定用户密码
set password for c =password(‘123’);
-
更改自己的密码
set password password=password(‘123’);
-
-
创建数据库 create database 数据库名
-
建表 create table 表名
-
mysql数据类型
数值型:
- 整形 tinyint smallint mediumint int bigint
- 浮点型 float double
- 定典型 decimal
字符型:char、varchar、blob、text、enum、set
日期和时间类型:date、time、datetime、timestamp、year
char与varchar的却别;datetime与timestamp的区别
-
更新语句
update 表名 set 列名 字段1=字段值,字段2=字段值2…… 【where条件表达式】
-
删除用户 drop user 用户名
-
删除数据库/表 drop database 数据库名 drop table 表名
-
unsigned 整形非负数限定
自动递增
Auto_increment 是一种数组列的一种属性,只适用于数字类型
Auto_increment 必须具备not null
一个表只能有一个字段使用auto_incerment
将字段设置auto_incerment之后,必须将设置成主键或者主键的一部本
enum、set的应用
enum 枚举字符串
另类的insert
-
Insert into 表名(字段列表)values(字段值1,字段值2……)
-
insert ……select……(必须先创建表)
insert into表名(字段名)select (字段名)from 表名
-
create ……select……(插入前自动根据源表所选字段构件表)
create table 表名 select 字段列表 from 表名
约束(constraint)
Unique 唯一键 primary key 主键约束 主键不能为空 且唯一
primary key(字段1,字段2)组合主键 not null 非空约束
主键和唯一键会自动构建索引
数据完整性:是指存储在数据库中的数据的一致性和正确性
域完整性 not null 指定某列不为空 default 指定某个列中的默认数值
实体完整性 primary key主键 unique唯一(“候选主键”)
引用完整性 foreign key 外键
constraint fk_no_id foreign key(no) references A(id)在当前表no字段上构建引用于表A字段的id的名为fk_no_id的外键
删除语句(实质就是修改表结构)
- delete from 表名
-
如果有关联的情况,要删除从表对应的关系,在删除主表数据
-
或者构建外键引用时,设置级联操作
-
或者将外键临时取消作用或删除外键引用
-
模糊匹配 like 通配符(%一个或者多个,_一个字符)
-
截取字符串
left(源字符串,长度)从左边到右边
right(源字符串,长度)从右边到左边
substring(源字符串,开始字符位数,截取的长度)
-
truncate table 表名 删除表中所有数据 不可恢复 ddl语句(与delete的区别)
-
drop table 表名删除表 连数据对象都删除
修改数据库对象 alter
alter table 表名 drop foreign key 外键名称;删除外键
alter table 表名 drop index 唯一键名称; 删除唯一键
alter table 表名 drop primary key; 删除主键 (如果主键为自增字段则不能删除)
show create talbe A;查看建表语句
-
对已经存在的表的结构进行修改
添加字段:alter table 表名 add 列名 类型;
更改字段属性:alter table 表名 modify 列名 类型 (约束);
删除已有字段:alter table 表名 drop 列名;
函数
时间函数
字符串
拓展
explain 、desc 三大范式
![image-20200115092940284](/Users/tongfei/Library/Application%20Support/typora-user-images/image-20200115092940284.png)
事务、存储过程、触发器、函数
select查询
-
查询数据 select 字段名 from 表名
-
列重命名 select 列名 【as】 ‘新列名’ from 表名
-
排序 order by select * from 表名 order by 字段1 【desc】字段2 【desc】……出现在where字句后面
有时候因为语言设置为utf-8,使用中文字段排序须进行编码修改order by convert(字段 using gbk)
-
limit 限制 查询数据的限制 select * from 表名 limit (a,b) ab为数字 a表示从第几位开始 b表示几条
-
聚合函数 聚合函数不能直接出现在where子句中
max(字段名)最大值
min(字段名)最小值
avg(字段名)平均值 只能针对数值型
sum(字段名)求和 只能针对数值型
count(*)
count(1)
count(主键字段)
count(非主键字段)
ps:1、max()\min()\avg()\sum()count(非主键字段)在统计时自动排除字段中的null值
2、count(*)、count(1)、count(主键字段)返回表中所有信息,不考虑空值
3、avg(字段)、sum(字段)在统计字段的时候返回的值为0
-
取消重复值(distinct)如果distinct 后面跟多个自己 表示去组合的重复值
-
子查询
外部数据大于内部数据,使用in
内部数据大于外部数据,使用exists
-
合并结果集 union (默认将结果集中的重复值取消,如果不想取消重复值,则在union后加all)
-
聚合函数可以作为排序依据,如order by count(字段)desc
-
连接技术
-
group by