第二十四节MySQL

MySQL
services.msc命令行打开系统服务 或者控制面板服务
第二种方式DOS打开服务 管理员权限打开CMD net start/stop mysql
mysql -h服务器主机地址 -u用户名 -p密码

结构化查询语言SQL structured query language
DML数据操作语言 用来操作数据库中所有包含的数据 insert update delete
DDL 数据定义语言 用于创建和删除数据库对象等操作 create drop alter
DQL 数据查询语言 用于对数据库中的数据进行查询 select
DCL 数据控制语言 用来控制数据库组件的存取许可,存取权限的等 crant commit rollback
SQL也存在运算符 跟java类似
赋值运算符 set@name=’王华’
逻辑运算发 AND OR NOT
算术运算符 + -* / %
比较运算符 = > < >= <= (!= <> 都是不等于 )
为减少数据查找的麻烦,允许数据有一定的冗余

DDL
create database 数据库名; 创建数据库 以分号为结束符,不可缺
show databases 查看数据库列表
use 数据库名; 选择数据库
drop database 数据库名 ; 删除数据库

MySQL数据类型–数值类型
TINYINT 非常小的数据 -2的七次方到2的七次方-1 有符号0–2的八次方-1

SMALLINT 较小的数据 有符值: -215 ~ 215-1 无符号值: 0 ~ 216-1 2字节
MEDIUMINT 中等大小的数据 有符值: -223 ~ 223-1 无符号值: 0 ~ 224-1 3字节
INT 标准整数 有符值: -231 ~ 231-1 无符号值:0 ~ 232-1 4字节
BIGINT 较大的整数 有符值: -263 ~263-1 无符号值:0 ~264-1 8字节
FLOAT 单精度浮点数 ±1.1754351e -38 4字节
DOUBLE 双精度浮点数 ±2.2250738585072014e -308 8字节
DECIMAL 字符串形式的浮点数 Decimal(M,D) M+2个字节
UNSIGNED 标识为无符号数
ZWROFILL属性 宽度不足以0填充 如被指定自动添加UNSIGNED

单行注释 – 单行注释(有一个空格) /**/多行注释

非空约束 NOT NULL 字段不允许为空
默认约束 DEFAULT 赋予某字段默认值
唯一约束 UNIQUE KEY(UK) 设置字段的值是唯一的 允许为空,且可以包含多个空值, 可设置为not null 为非空
主键约束 PRIMARY KEY(PK) 设置该字段为表的主键 可唯一标识该表记录
外键约束 FOREIGN KEY(FK) 用于在两表之间建立关系, 需要指定引用主表的哪一字段
自动增长 AUTO_INCREMENT 设置该列为自增字段 默认每条自增1 通常用于设置主键
charset=字符集名
set names ‘GBK’ 命令行告诉数据库给我gbk 避免乱码
desc 表名 查看表定义
DROP table
修改表名 alter table oldtable rename to newtable
添加字段 alter table 表名 Add 字段名 数据类型 [属性]
修改字段 alter table 表名 change 原字段名 新字段名 数据类型[属性]
删除字段 alter table 表名 drop 字段
添加主键 alter table 表名 add constraint (约束) [主键名] primary key 表名 (主键字段)
添加外键 alter table 表名 add constraint [外键名] foreign key (外键字段) references
关联表名 (关联字段)
like子句 查找包含某字符”com” %表示任意字符 like ‘%com’
union 连接多个个查询语句
支持正则表达式
临时表 temporary table 当前连接可见 关闭连接 删除表 释放资源
char[m] 长度不足补充空格,浪费内存
存储引擎 九种 MyISAM InnoDB Memory CSV
MyISAM多由于全文检索 当表与表之间存在关联时InnoDB更加适合
show engines 查看数据库搜索引擎
insert into 表名 [(字段名列表)] values(值列表)
如果插入部分字段 那么字段名一定要写 且与值对应
从一张表中取数据,创建一个新表,把数据插入新表 只执行一次 因为这是创建表不能重复创建
create table newtable(select .. … … from table);

从一个表中取数据,存入一个已经存在的表中(可执行多次数据冗余)
insert into tablename(select … … .. from tablename2);

数据更新(千万别乱用 尽量条件约束)
update tablename set … … ..where 条件

删除数据
delete from tablename 全部删除数据
delete from tablename where 条件 一条一删 产生日志
1 truncate table tablename 一次性全删除不产生日志 (删表再创建新表)
2 delete 和 truncate 都会保留表的结构(字段、索引、约束保持不变),delete不会重置自增列,truncate会重置自增列

注意:一般数据库中数据不会真的删除,会假删除
数据中有一个字段,表示数据是否已经删除 0正常 1删除

select * from tablename 查询所有列
select 字段1 as 别名,字段2 as 别名 from tablename
where 条件
as可以省略

把查询出的数据 合并为一列 concat()函数
select concat(字段1,字符串,字段2,字段3)
+号适合int 相加

null的判断用的是is null
查询添加常量列
,’要添加的’ as 别名 数据库不会改变这只是查询出来的

注意以下函数基本上都是select时使用的!!!!!!
聚合函数
avg() 返回字段的平均值
count() 个数 * 0 1 都是一样的
max()
min()
sum()
合并一起写
select avg(),max(),…,from tablename

字符串函数
concat()字符串连接
insert(“这是sql server数据库”,1,10,”mysql”) 字符串替换
14,0 是在14后面插入
lower()转为小写
upper()转为大写
substring(‘字符串’,5,5)截取 从5位置截取5个

日期函数
curdate 当前日期
curtime 当前时间
now 当前日期和时间
week(时期) 当前第几周
year(时期)
hour(时期)
minute(时期)
datediff(date1,date1)两个日期相差的时间
adddate(add天数)

数学函数
ceil
floor
rand() 返回0-1之间的随机数
order by
实现俺一定顺序显示查询结果
desc 降序asc升序
带条件排序 条件在排序前面
limit 显示输出分页 0偏移量 2取两条记录

limit分页 3条记录一页 5条记录

子查询
一个查询里面嵌套另一个查询

如果使用比较运算符子查询结果只能有一个值
in 子查询 查询结果可以使多个
not in 不在(取反in的)
Exists子查询
select …from 表名 while exists (子查询)
exists子查询结果为true 外层查询执行,查询结果为false则外层不查询
分组查询group by在where后面
分组后只能吧包含1,分组的列 2,聚合函数
多列分组 eg每个年级的男女人数
group by gradeId,sex;
分组筛选 having
where先进行判断,获得结果后0 group by进行分组 , having再对分组的信息进行过滤
多表查询
内连接 inner join(不区分主附表)
select * from a inner join b on判断条件 可以进行多个表内连接

select * from a,b;(没有什么意义不适用)
外连接(区分主附表)
左外连接left join 只能两个表之间建立外表
右外连接right join

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值