mysql单表
数据库: 文件系统,通过SQL语言获取数据. 关系型数据库: 保存的就是实体之间的关系.(一对多的关系) 类: 描述事物属性的集合. Mysql默认: UTF8; 命令行默认: gbk; dos命令行: 重启 net stop mysql exit退出 运行: 重启 services.msc 自动增长: auto_increment. int可以为null因为会自动为它设置值; 1. mysql的安装 1. mysql的端口号(port)3306 2. 运行 + services.msc mysql启动/停止服务 3. windows + R dos命令行 4. 32位的mysql登陆密码 : 123 2. mysql的存储方式 1. 服务器:硬件/软件. 硬件:一台计算机 .软件:电脑上安装数据库服务器,允许别人访问 2. 一台电脑如果安装了mysql.这台电脑就是mysql数据库服务. 3. mysql -u root -p; -h:hostname主机名;-p:port 4. 数据库 > 表 > 记录 用户类,产品类,订单oder类, 类中包含各种属性. 一个项目创建一个数据库,一个实体(类)创建一个表(表中包含属性字段),一个对象的实例添加一个新记录. 横向: 一条记录对应一个用户对象. 一般用"表"储存数据. 5. CRUD:增删改查 3 . SQL概述 1. 结构化查询语言 2. 分类: DDL 数据定义语言,Create,Drop,Alter DCL 数据控制语言,if,grant DML 数据操纵语言,insert插入,update,delete DQL 数据查询语言,select 4 . SQL-数据库-增删改查 1. 新增: create database 数据库名称【 character set 字符集 collate 字符集校对规则】可以省略 校对: 排序作用 2. 查看所有数据库: show databases; 查看某个数据库的定义信息:show create database 数据库名称; 3. 修改: alter database 数据库名称 character 字符集 collate校对规则 4. 删除: drop database 数据库名称 5. 数据库切换: use 数据库名称 6. 查看当前的数据库: select database(); 5 . 表 ▲1 . 增: create table 表名称( 字段名称 字段类型(长度) 约束, 字段名称 字段类型(长度) 约束, 字段名称 字段类型(长度) 约束 ); 长度:int不写长度,char,varchar写长度. 约束:对字段约束.保证数据完整性. 自动增长:auto_increment. 约束: 主键约束: primary key 唯一非空,如:学号 唯一约束: unique 如:用户名 非空约束: not null 不能为空 Java类型: Mysql类型: byte/short/int/long tinyint/smallint/int/bigint char/String char固定长度/varchar长度可变 date datetime 存入null/timestamp存入当前时间 File BLOB/TEXT float float double double boolean bit(0 , 1) 2 . 查: show tables; desc 表名; 结构信息 3 . 删: drop table 表名; 4 . 修: ▲1 . 添加列(字段) alter table 表名 add 列名 类型(长度) 约束. ▲2 . 修改类型长度约束 alter table 表名 modify 列名 类型(长度) 约束; 3 . 删除列 alter table 表名 drop 列名; 4 . 修改列名(属性名) alter table 表名 change 旧列名 新列名 类型(长度) 约束;表名(类名) 5 . 修改表名(类名) rename table 表名 to 新表名; 6 . 修改字符集 alter table 表名 character set 字符集; ▲6 . 记录 1 . SQL给表添加记录: 某些列赋值: insert into 表名 (列名1,列名2,列名3...) values (值1,值2,值3...); 所有列赋值: insert into 表名 values (值1,值2,值3...); 注意: 值类型是字符串/日期,使用单引号. 中文乱码: Mysql在内部可以把gbk转为utf8; my.ini文件utf8改为gbk; 2 . 修改记录 update 表名 set 列名=值,列名=值 [where 条件];---值和where没有逗号; update user set password='abc' where password='123'; 3 . 删除记录 delete from 表名 [where 条件]; delete from user where id=2; 删除一行记录, 不加条件,默认删除所有记录. 删除表中记录的两种做法: delete from user;逐条删除,可以恢复rollback; truncate table user;全部删除,重新创建不可恢复 ▲4 . 查看记录 基本查询: select[distinct]*|列名 from 表 [条件]; select * from 表名; select name,english from 表名; select distinct english from 表名;多个字段,都相同才会去重; select name,english+chinese+math from exam; select name,english+chinese+math as sum from exam;别名查询a s可省. 条件查询: select * from exam where name='李四'; select * from exam where name='李四' and english > 90; select * from exam where name like '李%'; _代表一个字符. select * from exam where english in (69,75,89);英语等于 使用where子句 > , < , >= ,<= , <> ,= like:模糊查询 in:范围查询 条件关联:and , or,not 排序查询: order by 字段名 asc/desc select * from exam order by chinese;asc默认升序可以加asc select * from exam order by chinese desc;从大到小,倒序 select * from exam order by chinese desc, english asc;语文倒序,成绩相同,英语倒序. select * from exam where name like '李%' order by english desc;姓李的学生,英语倒序. 分组统计查询: 聚合函数: sum(); count()分页 max() min()a vg() select sum(english) from exam; select sum(english) ,sum(math) from exam; select sum(english) from exam where name like '李&'; select sum(english)+sum(chinese)+sum(math) from exam;竖着加 select sum(english+chinese+math) from exam;横着加,ifnull select sum(ifnull(english,0)+chinese+math) from exam;把null值当成0ifnull(english,0) select count(*) from exam; select count(*) from exam where name like '李%'; select max(math) from exam; select min(chinese) from exam; select avg(chinese) from exam; 分组查询: group by 字段名; where 后面不能跟聚合函数; 总结: S(select)...F(from)...W(where)...G(group by)...H(having)...O(oder by) select product, count(*) from orderitem group by product;按商品名称统计,每类商品个数. select product, sum(price) from orderitem group by product; select product, sum(price) from orderitem group by product having sum(price) >5000; select product,sum(price) from orderitem group by product having sum(price)>5000 . order by sum(price) asc; 7 . 重置MySQL密码 停止MySQL服务---无需权限认证的启动---登陆MySQL无需密码---修改root密码---结束mysqld进程 8 .数据库备份还原 备份: 还原:
|