mysql

设计

1)服务器管理
2)数据库管理
3)表管理
4)字段管理
5)索引管理

操作

1)sql语句
2)单表操作
3)多表操作

索引 记录 字段
mysam innodb ibdata1 三种引擎

innodb表引擎
1.user.frm 表字段
2.user.idb 表索引加部分数据

mysql基本命令

1关闭 开启
net start/stop mysql

2查看表结构
desc user

3修改表名
rename table user to user2

mysql数据设计

1.数据表引擎
2.数据值和列类型
3.数据字段属性
4.mysql服务器默认字符集
5.索引管理

表字段类型

1.数值
tinyint (比如存储年龄)
有符号 -128~127
无符号 0~255

smallint mediaini

int(日期一般用数值)

2.字符串类型
最大长度或最大数值
char 0~255(一个汉字三个字符) 一般用在
varchar 0~65535
text 0~65535

varchar text blog是变长类型

3.日期和时间
日期不是时间戳不方便加减乘除

字段属性

1.unsigned 无符号
2.zerofill 0填充
3.auto_increment
mysql> create table t9(
-> id int unsigned auto_increment primary key,
-> username varchar(50)
-> );

4.null
age int null

5.not null
age int not null

6.default
age int not null default 18;

mysql服务器默认字符集

mysql

my.ini
建议客服端字符集utf8
default-character-set = utf8
mysql服务端字符集为utf8
character-set-server = utf8
mysql服务器校验字符集
collation-server = utf8_general_ci (防止排序混乱)
1.utf8

字段管理

1.添加字段
alter table user add age tinyint unsigned not null;
alter table user add pass varchar(30) not null after user;(添加到某个字段之后)
2.删除字段
alter table user drop password;
3.修改字段
alter table user modify username varchar(30) not null;
alter table user change username user varchar(30) not null;
4.查看字段
desc user;

索引

外键带强制性 最好不要
1.主键
添加
mysql> create table t9(
-> id int unsigned auto_increment,
-> username varchar(50)
-> primary key(id)
-> );
删除 (先删除自增再删除主键)
alter table user2 modify id int unsigned not null;
alter table user2 drop primary key;

查看

2.唯一
添加(唯一索引需要名称,前提要有主键,不常见)
alter table user2 add unique u_username(username);
alter table user2 drop index u_username;

3.普通
alter table user2 add index i_username(username);
alter table user2 drop index i_username;

数据库操作

数据定义语言 create drop alter
数据操作语言 insert update delete
数据查询语言 select
数据控制语言 grant commit rollback

desc delete from user where username='user5'\G
判断删除操作需要遍历的row(如果有索引会更快)

条件查询
1.where id>3
2.where id>=3
3.where id>=3 and id<=7
4.where id between 3 and 7
5.where id=3 or id=5 or id=6
6.where id in(1,4,5,7)

update user set username='user33',password='123' where id=2;

数据库查询select

1.select username from user
select * from user
查询一般优化:
1.查单列的速度要优于多列
2.查主键索引的列中的所有值比其他列速度快

选择特定的字段:
select id,username from user;

给字段名起别名
select username as user,password as pass from user;
select username user,password pass from user;

distinct关键字的使用
select distinct password from t1;

like 标题 价格 标签用来查询(会让索引失效)搜素引擎技术
select * from user where username like '%u%';
数据量大的时候会很慢 上千万一亿条数据需要5~10分钟查出来

数据库设计(标签查询):
课程表:
id name
1 linux服务器运营
2 shell脚本编程

标签:(name加索引)
id name c_id
1 linux 1
2 shell 1
3 unix 1
4 linux 2
5 shell 2

shell脚本编程:
标签:linux,shell

网站搜索技术
1.like
2.标签
3.搜索引擎技术:如sphinx客户端

order by 排序 asc(升序) desc(降序)
limit限定输出个数(分页实现)
select * from user order by id limit 0,2;
select * from user order by id limit 5; //limit 0,5 前五个

delete与truncate区别
delete可以清除表数据 不会清除计数器(自增)
delete from user;
truncate可以清除表数据清除计数器(自增)
truncate user;

mysql常用函数

1.连接函数concat (字符串连接)
select concat(user,pass) from t1;
2.随机数rand函数 随机取出数据
select * from user order by rand() limit 1;
3.统计个数count函数
统计表总行数: select count(*) from t1;
4.求和sum()
slect sum(age) from user;

5.avg() max() min()

6.group by分组聚合 按条件进行分组 然后在分组的基础有条件的聚合
select * group by class;
select concat(class,'班级') as 班级,count(*) as 人数
from t1 group by class;

mysql多表查询

1.普通多表查询
关联字段 表名+id
查询最好用索引 索引占空间 不要随意加索引

需求2:查询每一个学员的姓名,年龄,班级名称和班级创建时间 并把时间戳转换成正常日期显示出来
select user.username,user.age,class.name,from_unixtime(class.ctime) ctime from user,class where user.class_id=class.id;

2.嵌套查询或子查询
缺点:两个表的关系不能体现 一般是取其一
需求3:查询user表中所在的所有班级的信息
select * from class where id in (select distinct class_id from user);

需求4:查询班级表中的每个班的所有学员信息
select * from user where class_id in(select id from class);

3.链接查询
普通多表查询
1)左链接
需求5:在左边的数据全部出来 以左边的表为主导
统计每个班级的总人数
select c.name,count(u.id) count from class c left join user u on c.id=u.class_id group by c.id;
2)右链接
左右链接效果类似
3)内链接 等同于普通多表查询
需求6:查询每个用户对应的用户名,班级名称
select u.username,c.name from user u inner join class c where u.class_id=c.id;

mysql设计-基本操作的更多相关文章

  1. MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具

      MySQL  Workbench是一款专为MySQL设计的ER/数据库建模工具.它是著名的数据库设计工具DBDesigner4的继任者.你可以用MySQL  Workbench设计和创建新的数据库 ...

  2. MYSQL设计优化

    本文将从各方面介绍优化mysql设计的一些方式. 1.优化sql语句 (1)定位须要优化的sql语句 1)show status统计SQL语句频率 对Myisam和Innodb存储引擎都计数的參数: ...

  3. linux的基本操作(mysql 的基本操作)

    Mysql 的基本操作 在前面两个章节中已经介绍过MySQL的安装了,但是光会安装还不够,还需要会一些基本的相关操作.当然了,关于MySQL的内容也是非常多的,只不过对于linux系统管理员来讲,一些 ...

  4. php基础系列:从用户登录处理程序学习mysql扩展基本操作

    用户注册和登录是网站开发最基本的功能模块之一,现在通过登录处理程序代码来学些下php对mysql的基本操作. 本身没有难点,主要是作为开发人员,应该能做到手写这些基本代码,算是自己加强记忆,同时希望能 ...

  5. mysql 的基本操作总结--增删改查

    本文只是总结一下mysql 的基本操作,增删改查,以便忘记的时候可以查询一下 1.创建数据库 语法:CREATE DATABASES 数据库名; 例子: CREATE DATABASES studen ...

  6. MySQL Workbench基本操作

    MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具.它是著名的数据库设计工具DBDesigner4的继任者.你可以用MySQL Workbench设计和创建新的数据库图示,建 ...

  7. MySQL 设计与开发规范

    MySQL 设计与开发规范 1 目的 本规范的主要目的是希望规范数据库设计与开发,尽量避免由于数据库设计与开发不当而产生的麻烦:同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很好保 ...

  8. (三)mysql SQL 基本操作

    文章目录 MySQL服务器对象 mysql 的基本操作 SQL的注释 库操作 表(字段)操作 数据操作 MySQL服务器对象 mysql 服务器对象内部分成了 4 层: 系统(DBMS)----> ...

  9. mysql数据库基本操作sql语言

    mysql的启动与关闭 启动 /etc/init.d/mysql start 多实例使用自建脚本启动 2种关闭数据库方法 mysqladmin -uroot -p密码 shutdown #优雅关闭/e ...

随机推荐

  1. 用exp、dmp导入导出用户到同一个实例下时,类型type会有问题

    oralce的type都有唯一id,在同一个实例下,通过导入导出方法创建type时,会有唯一性问题 最好的解决方法使用impdb,expdb的方式导入导出 用oid=n解决. 实在不行,可用稍微麻烦的 ...

  2. sql 2012先分离迁移mdf mlf 文件到别的机器后附加 数据库成只读的修复方法

    SQL Server2008附加数据库之后显示为只读时解决方法   从本地分离的数据库文件放到远程服务器上,附加数据库出现数据库为(只读情况) 阅读了以下两篇文章: 第一篇:http://blog.c ...

  3. 泛型集合List<T>

  4. 在Centos7中安装elasticsearch5.5

    在Centos7中安装elasticsearch5.5 第一步:必须要有jre支持 elasticsearch是用Java实现的,跑elasticsearch必须要有jre支持,所以必须先安装jre ...

  5. Jar中的Java程序如何读取Jar包中的资源文件

    Jar中的Java程序如何读取Jar包中的资源文件 比如项目的组织结构如下(以idea中的项目为例): |-ProjectName |-.idea/  //这个目录是idea中项目的属性文件夹 |-s ...

  6. 并发之AtomicIntegerArray

    5 并发之AtomicIntegerArray     该类是Java对Integer数组支持的原子性操作:在认识这个类之前我们先来看一个方法,这个方法是Integer类中的:  public sta ...

  7. solr4.3+tomcat入门部署

    solr4.3的入门配置   目前阿帕奇官方仅推荐2个比较稳定的版本一个是4.3的版本,一个3.6的版本     3.6的版本没有用过,所以在此无涉及,下面就来说说solr4.3的入门配置     s ...

  8. 虚拟机安装CentOS以及SecureCRT设置【完美无错版】

    一.CentOS简介 CentOS是Linux的发行版之一,它安全.稳定.高效,是我最喜欢的Linux发行版之一.CentOS根据Red Hat Enterprise Linux开放源代码编译而成,与 ...

  9. vector的简单用法

    vector是C++中容器的一种,与普通的数组相比,它可以动态的增长,而且还有封装了用于顺序表的操作的方法. 使用vector定义了容器之后,如果定义了容器的大小,则可以在大小范围之内直接使用数组的方 ...

  10. commons-X系列

    1 commons-lang 1.1 ReflectionToStringBuilder 将对象进行字符串拼接 /* * Licensed to the Apache Software Foundat ...