mysql 详细笔记总结

mysql 详细笔记总结
mysql 详细笔记总结

主要知识点:

数据库与表的创建、删除

字段的类型、约束

关系的存储

数据行的增加、修改、删除

数据行的查询

试图、事务、索引

基础

1、ER模型、三范式

ER模型:E表示entry,实体。

R表示relationship,关系。

一个实体转换为数据库中的一个表。

关系描述两个实体之间的对应规则,包括:一对一、一对多、多对多

三范式:经过研究和对使用中问题的总结,对于设计数据库提出一些规范,这些规范被称为范式。

第一范式(1NF):列不可拆分(够用就行:比如商品的生产日期)

第二范式(2NF):唯一标识(通过一个属性直接找到一个唯一的对象)

第三范式(3NF):引用主键

说明:后一个范式,都是在前一个范式的基础上建立的

2、数据完整性

字段类型:

·数字:int,decimal(a,b):a表示一共有多少位,b表示小数有多少位

·字符串:char(有限长度,字符固定),varchar(有限长度,字符可变),text(大文本)·日期:datetime(包括日期和时间)

·布尔:bit

约束:

·主键:primary key

·非空:not null

·唯一:unique

·默认:default

·外键:foreign key

3、逻辑删除

·对于重要数据,并不希望物理删除,一旦删除,数据无法找回

·一般对于重要数据,会设置一个isdelete/deleteflag的列,类型位bit,表示逻辑删除·大于大量增长的非重要数据,可以进行物理删除

·数据的重要性,要根据实际开发决定

4、连接服务器

5、创建表

1)表操作

·显示当前所有数据库:Show databases;

·删除当前数据库:drop database 数据库名;

例如:drop database gy1;

·查看当前选择的数据库:select database();

·创建数据库:Create database 数据库名charset=utf8; 例如:Create database python1 charset=utf8;

·使用/切换数据库:use 数据库名;

例如:use python1;

·查看当前数据库中所有表:show tables;

2)创建表

auto_increment 表示自动增长

create table 表名(列及类型);

·创建表:create table 表名(字段类型约束);

例如:

Create table students(

Id int auto_increment primary key not null,

Name varchar(10) not null,

Gender bit default 1,

Birthday datetime);

·查看表:desc 表名;

例如:desc students;

·修改表:alter table 表名add|change|drop 列名类型;

例如:alter table students add isdelete bit default 0;

·查看表的创建语句:show create table students;

·删除表:drop table 表名;

·修改表的列名:alter table 表名称change 列名新列名varchar(10);

例如:alter table stu change title name varchar(10);

6、数据操作

·查询:Select*from 表名;

例如:Select*from students;

·添加:insert into 表名values(),()...; 只要执行insert就会有新的行产生。例如:insert into students values(0,’白敬亭’,1,’1990-1-1’,0);

全列插入:insert into 表名value(...)

缺省插入:insert into 表名(列1,...) values(值1,...)

同时插入多条数据:insert into 表名values(...),(...)...;

或insert into 表名(列1,...) values (值1,...),(值1,...)...;

·主键列是自动增长,但是在全列插入时需要占位,通过使用0,插入成功后以实际数据为准。

·修改:update 表名set 列1=值1,... where 条件

例如:Update students set birthday=’1999-2-2’ where id=2;

·删除:delete from students where id=3;(物理删除)

·Update students set isdelete=1 where id=3;(逻辑删除,其实就是修改操作update)

·更改表名:rename table 原表名to 新表名;

例如:rename table stu to s;

7、备份与恢复

·备份

第一步:找出要备份的数据库,退出mysql

第二步:使用mysqldump命令备份数据库

Mysqldump -uroot -p 数据库名> 保存名.sql

例如:Mysqldump -uroot -p py21 > C:/abc.sql。c盘目录下有个abc.sql文件,则备份成功。

·恢复

退出MySQL,执行mysql -uroot -p py11

再次连接MySQL,则可以查看py11中含有恢复的表。

查询

1.建立表rooms、stu、外键

create table rooms(id int primary key not null,

title varchar(10));

Create table stu(id int primary key auto_increment not null,

Name varchar(10),

Roomid int);

·外键

Alter table stu add constraint stu_room foreign key(roomid) references rooms(id);

Insert into rooms values(314,’聚义厅’);

Insert into stu values(0,’郭靖’,314);

·错误处理

Alter table areas modify title varchar(20) character set gbk;

2.查询

·from 关键字后面写表名,表示数据来源于是这张表

·select后面写表中的列名,如果是*表示在结果中显示表中所有列

·在select后面的列名部分,可以使用as为列起别名,这个别名出现在结果集中

·如果要查询多个列,之间使用逗号分隔

查询所有:Select*from students;

查询部分:select id ,name from students;

3.消除

在select后面列前使用distinct可以消除重复的行

Select distinct gender from students;

4.条件

·使用where子句对表中的数据筛选,结果为true的行会出现在结果集中

Select*from 表名 where 条件;

·比较运算符:等于 = ;大于 >;大于等于 >=;小于 < ;小于等于 <= ;不等于!= 或 <> 。·查询id大于3的学生

Select*from students where id>3;

·查询id<=4的科目

Select*from subjects where id<=4;

·查询姓名不是黄蓉的学生

Select*from students where name!=’黄蓉’;

·查询未被删除的

Select*from students where isdelete=0;

·逻辑运算符:and or not

·模糊查询: like

%表示任意多个任意字符

_表示一个任意字符

·查询姓黄的学生

Select*from students where name like ‘黄%’;

·查询姓黄并且名字是一个字的学生Select*from students where name like ‘黄_’;

·查询姓黄或叫靖的学生

Select*from students where name like ‘黄%’or name like ‘%靖%’;

·范围查询:

·In表示在一个非连续的范围内

查询编号是1或3或8的学生

Select*from students where id in(1,3,8);

·between...and...表示在一个连续的范围内

查询学生是3至8的学生

Select*from students where id between 3 and 8;

查询学生是3至8的男生

Select*from students where id between 3 and 8 and gender=1;

5.空判断

·注意null(没有内存)与’’(空字符串)是不同的

·判空 is null

查询没有填写生日的学生

Select*from students where birthday is null;

·判非空 is not null

查询填写了生日的男生

Select*from students where birthday is not null and gender =1;

6.优先级

·小括号,not,比较运算符,逻辑运算符

·and比or先运算,如果同时出现并希望先算or,需要结合()使用。聚合

聚合得不到具体信息,通过子查询可以得到详细信息。

·count()表示计算总行数,括号内写*或列名,结果是相同的

计算未删除的学生

Select count(*) from students where isdelete=0;

·Max(列)表示求此列的最大值

计算当gender=0时,id的最大值

Select max(id) from students where gender=0;

·Min(列)表示求此列的最小值

计算未删除学生的最小编号

Select min(id) from students where isdelete=0;只能看到编号,不能看到是谁

计算未删除学生的最小编号,并列出学生的信息

Select*from students where id=(select min(id) from students where isdelete=0);

·Sum(列)表示求此列的和

计算gender=1,id的和

Select sum(id) from students where gender=1;

·Avg(列)表示此列的平均值

查询未删除gender=0(女生)的编号的平均值

Select avg(id) from students where isdelete=0 and gender=0;

分组

按照字段分组,表示此字段相同的数据会被放到一个组中

分组后,只能查询出相同的数据列,对于有差异的数据列无法出现在结果集中

可以对分组后的数据进行统计,做聚合计算

语法:select 列1,列2,聚合...from 表名

group by 列1,列2,列3...

Having 列1,...聚合...

注:having后面的条件运算符与where的相同。Where是对from后面指定的表进行数据筛选,属于对原始数据筛选,having是对group by 的结果进行筛选。

·根据性别分组

Select count(*) from students group by gender;

Select gender,count(*) from students group by gender;

Select gender,count(*) from students group by gender having gender=0;

Select gender,count(*) from students group by gender having count(*)>2;

Select gender,count(*) as rs from students group by gender having rs>2;

排序

·将行数据按照列1进行排序,如果某些行列的值相同,则按照列2排序,以此类推·默认按照值从小到大排序

·asc从小到大排序,即升序

·desc从大到小排序,即降序

1.查询未删除男生学生信息,按学号降序

Select*from students where gender=1 and isdelete=0 order by id desc;

2.为subjects添加isdelete列,并删除linux和redis

查询未删除科目信息,按名称升序

Select*from subjects where isdelete=0 order by id asc;

分页

Select*from 表名

Limit start, count

从start开始,获取count条数据,start索引从0开始select*from students limit 2,1;

select*from students limit 1,3;

·示例:分页

·已知:每页显示m条数据,当前显示第n页

·求总页数:此段逻辑后面会在python中实现

查询总条数p1

使用p1除以m得到p2

如果整除则p2为总数页

如果不整除则p2+1为总数页

·求第n页的数据

Select*from students

Where isdelete=0

Limit(n-1)*m,m

总结执行顺序:

From 表名

Where...

Group by...

Select distinct*

Having...

Order by...

Limit star ,count

关系

建立关系表

Create table scores(

Id int auto_increment primary key not null,

Scores decimal(4,1),

Stuid int,

Subid int,

Foreign key(stuid) references students(id),

Foreign key(subid) references subjects(id));

外键的级联操作

·在删除students表的数据时,如果这个id值在scores中已经存在,则会抛异常

·推荐使用逻辑删除,还可以解决这个问题

·可以创建表时指定级联操作,也可以在创建表后再修改外键的级联操作

·语法

Alter table scores add constraint stu_sco foreign key(stuid) references students(id);

级联操作的类型包括:

·restrict(限制):默认值,抛异常

·cascade(级联):如果主表的记录删掉,则从表中相关联的记录都将被删除

·set null :将外键设置为空

·no action :什么都不做

例子:

·问:查询每个学生每个科目的分数

·分析:学生姓名来源于students表,科目名称来源于subjects,分数来源于scores表,怎么将3个表放到一起查询,并将结果显示在同一个结果中呢?

·答:当查询结果来源于多张表时,需要使用连接查询

·关键:找到表间的关系,当前的关系时

·students表的id---scores表的stuid

·subjects表的id---scores表的subid

则上面问题的答案为:

Select https://www.360docs.net/doc/b95745204.html,,subjects.title,scores.scores

From scores

Inner join students on scores.stuid=students.id

Inner join subjects on scores.subid=subjects.id;

·结论:当需要对有关系的多张表进行查询时,需要使用连接join

连接查询

·连接查询分类如下:

·表A inner join 表B:表A与表B匹配的行会出现在结果中

·表A left join 表B:表A与表B匹配的行会出现在结果中,外加表A中独有的数据,未对应的数据使用null填充

·表A right join 表B:表A与表B匹配的行会出现在结果中,外加表B 中独有的数据,未对应的数据使用null填充

·在查询或条件中推荐使用“表名.列名”的语法

·如果多个表中列名不重复可以省略“表名.”部分

·如果表的名称太长,可以在表名后面使用’as简写名’或’简写名’,为表起个临时的简写名称

关联查询

查询男生的姓名、总分

Students.gender=1

https://www.360docs.net/doc/b95745204.html,

Sum(scores.score)

建立连接:students.id=scores.stuid

使用sum->分组,姓名:每个人的总分

例如:Select name ,sum(scores)

From students

Inner join scores on students.id=scores.stuid

Where gender=1

Group by students.id;

查询科目的名称、平均分

Subjects.title

Avg(scores.score)

连接:sunjects.id=scores.subid

Avg->group by subjects.title

例如:Select subjects.title,avg(scores.scores)

From scores

Inner join subjects on scores.subid=subid=subjects.id

Group by subjects.title;

查询未删除科目的名称、最高分、平均分

Where subjects.isdelete=0

Subjects.title

Max(scores.scores)

Avg(scores.scores)

连接:subjects.id=scores.subid

Max,avg->group by subjects.title

例如:Select subjects.title,avg(scores.scores),max(scores.scores) From scores

Inner join subjects on scores.subid=subjects.id

Where subjects.isdelete=0

Group by subjects.title;

自关联

create table areas (id int not null primary key auto_increment , title varchar(20) ,pid int,

foreign key(pid) references areas(id));

导入数据

Source areas.sql;

查询有多少条

Select count(*) from areas;

·查询一共有多少个省

Select count(*) from areas where pid is null;

·查询省的名称为‘山西省’的所有城市Select city.*from areas as city

Inner join areas as province on city.pid=province.id Where province.title=’山西省’;

·查询市的名称为“广州市”的所有区县Select dis.*from areas as dis

Inner join areas as city on city.id=dis.pid

Where city.title=’广州市’;

Select sheng.id as sid,sheng.title as stitle,

Shi.id as shiid,shi.title as shititle

From areas as sheng

Inner join areas as shi on sheng.id=shi.pid

Where sheng.pid is null

Limit 0,100;

Select sheng.id as sid,sheng.title as stitle,

Shi.id as shiid,shi.title as shititle

From areas as sheng

Inner join areas as shi on sheng.id=shi.pid

Where sheng.pid is null and sheng.title=’山西省’;

视图

·对于复杂的查询,在多次使用后,维护是一件非常麻烦的事情·解决:定义视图

·视图本质就是对查询的一个封装

·定义视图

Create view stuscore as

Select student.*,scores.scores from scores

Inner join students on scores.stuid=students.id;

·视图的用途就是查询

Select*from stuscore;

建立一个视图

Create view v_1 as

Select stu.*,sco.scores,sub.title from scores as sco

Inner join students as stu on sco.stuid=stu.id

Inner join subjects as sub on sco.subid=sub.id;

查询表

Alter view v_1 as

Select stu.*,sco.scores,sub.title from scores as sco

Inner join students as stu on sco.stuid=stu.id

Inner join subjects as sub on sco.subid=sub.id

Where stu.isdelete=0 and sub.isdelete=0;

事务

·当一个业务逻辑需要多个sql完成时,如果其中某条sql语句出错,则希望整个操作都退回

·使用事务可以完成退回的功能,保证业务逻辑的正确性

·事务四大特性(ACID)

·原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行

·一致性(consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致

·隔离性(isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的

·持久性(durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障

·要求:表的类型必须是innodb或bdb类型,才可以对此表使用事务

·查看表的创建语句

Show create table students;

·修改表的类型

Alter table ‘表名’ engine=innodb;

·事务语句

开启begin;

提交commit;

回滚rollback;

·使用事务的情况:当数据被更改时,包括insert、update、delete

示例1:

·步骤1:打开两个终端,连接mysql,使用同一个数据库,操作同一张表终端1:

Select*from students;

终端2:

Begin;

Insert into students(name) values(‘王子’);

·步骤2:

终端1:

Select*from students;

·步骤3

终端2:

Commit;

终端1:select*from students;

示例2:

·步骤1:打开两个终端,连接mysql,使用同一个数据库,操作同一种表终端1:

Select*from students;

终端2:

Begin;

Insert into students(name) values(‘张飞’);

·步骤2

终端1:

Select*from students;

·步骤3

终端2:

rollback;

终端1:

Select*from students;

索引

·当数据库中数据量很大时,查找数据会变的很慢

·索引能提高数据访问性能

·主键和唯一索引,都是索引,可以提高查询速度

在MySQL中怎么实现索引:

·选择列的数据类型

·越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快

·简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂·尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。

操作

·索引分单列索引和组合索引

·单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引

·组合索引,即一个索包含多个列

·查看索引

Show index from students;

·创建索引

Create index indexname on students(name(10));

·删除索引

Drop index indexname on students;

缺点

·虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行insert、update、

MySQL 数据库常用命令 简单超级实用版

MySQL 数据库常用命令简单超级实用版 1、MySQL常用命令 create database name; 创建数据库 use databasename; 选择数据库 drop database name 直接删除数据库,不提醒 show tables; 显示表 describe tablename; 表的详细描述 select 中加上distinct去除重复字段 mysqladmin drop databasename 删除数据库前,有提示。 显示当前mysql版本和当前日期 select version(),current_date; 2、修改mysql中root的密码: shell>mysql -u root -p mysql> update user set password=password(”xueok654123″) where user='root'; mysql> flush privileges //刷新数据库 mysql>use dbname;打开数据库: mysql>show databases; 显示所有数据库 mysql>show tables; 显示数据库mysql中所有的表:先use mysql;然后 mysql>describe user; 显示表mysql数据库中user表的列信息); 3、grant 创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令some thing做这个 mysql> grant all privileges on *.* to user@localhost identified by 'something' with 增加新用户

我的MYSQL学习心得

我的MYSQL学习心得 一、使用视图的理由是什么? 1.安全性。一般是这样做的:创建一个视图,定义好该视图所操作的数据。之后将用户权限与视图绑定。这样的方式是使用到了一个特性:grant语句可以针对视图进行授予权限。 2.查询性能提高。 3.有灵活性的功能需求后,需要改动表的结构而导致工作量比较大。那么可以使用虚拟表的形式达到少修改的效果。 这是在实际开发中比较有用的 例子:假如因为某种需要,a表与b表需要进行合并起来组成一个新的表c。最后a表与b表都不会存在了。而由于原来程序中编 写sql分别是基于a表与b表查询的,这就意味着需要重新编写大量的sql(改成向c表去操作数据)。而通过视图就可以做到不修改。定义两个视图名字还是原来的表名a和b。a、b视图完成从c表中取出内容。

说明:使用这样的解决方式,基于对视图的细节了解越详细越好。因为使用视图还是与使用表的语法上没区别。比如视图名a,那么查询还是"select * from a"。 4.复杂的查询需求。可以进行问题分解,然后将创建多个视图获取数据。将视图联合起来就能得到需要的结果了。 视图的工作机制:当调用视图的时候,才会执行视图中的sql,进行取数据操作。视图的内容没有存储,而是在视图被引用的时候才派生出数据。这样不会占用空间,由于是即时引用,视图的内容总是与真实表的内容是一致的。 视图这样设计有什么好处?节省空间,内容是总是一致的话,那么我们不需要维护视图的内容,维护好真实表的内容,就可以保证视图的完整性了。 二、通过更新视图实现更新真实表 看到很多例子,更新视图可以更新真实表。原因,我是这样理解的:视图并没有保存内容。只是引用数据。那么,更新视图,其实就是以引用的方式操作了真实表

Enterprise-Architect-中文经典教程

Enterprise Architect 中文经典教程 一、Enterprise Architect简介 Enterprise Architect是一个对于软件系统开发有着极好支持的CASE软件(Computer Aided Software Engineering)。EA不同于普通的UML画图工具(如VISIO),它将支撑系统开发的全过程。在需求分析阶段,系统分析与设计阶段,系统开发及部署等方面有着强大的支持,同时加上对10种编程语言的正反向工程,项目管理,文档生成,数据建模等方面。可以让系统开发中各个角色都获得最好的开发效率。 二、创建新项目 安装好了EA汉化版后,启动软件。点击“创建新的项目”,打开创建新项目对话框。 【图1】 这里可以选择各种的初始的模板包。 【图2】

我们选择了其中几个,然后确定打开了项目浏览器。我们的项目将从这里开始了。 【图3】 三、EA软件配置 在使用软件之前,我们先来对它进行配置。打开“工具”–>“选项”。 【图4】 常规配置中,比较重要的是作者这项。因为在EA项目的团队协作中,作者是每个人的身份标识。 在代码工程中,最好把文件编码设置成UTF8或者是GB中文。 其他方面的配置,因为都是中文的,也比较容易理解。有些不明的地方,可以多琢磨。 另外对于最下面的十种编程语言,可以根据自己的需要,进行一些配置。比如PHP,可以配置PHP4或者是PHP5,那么生成的代码也是有些不同的。还可以隐藏其他没有用到的语言。 四、用例图,类图的使用

用例图(use case) 用例图是我们做系统分析的通常第一步,是非常重要的。毕竟大部分的开发流程,都将需求分析作为首要步骤,也是必要步骤。将系统需求化作图型表达出来。首先是在项目浏览器中,右键“添加”–>“新建图表”。 【图5】 然后可以加入一些角色和用例,在每次在工具箱里面拉出一个元件,都将打开这个元件的设置对话框,在对话框内填入元件的名称等信息。现在我们是表达一个用户注册和登录的场景:

常用MySQL语句大全

MySQL服务的配置和使用 修改MySQL管理员的口令:mysqladmin –u root password 密码字符串 如:mysqldmin –u root password 111111 连接MySQL服务器,使用命令:mysql [-h 主机名或IP地址] [-u 用户名] [-p] 如:mysql –u root –p 如已有密码需修改root密码用命令: mysqladmin –u root –p password 新密码字符串 如:mysqladmin –u root –p password 111111 创建数据库格式为:CREATE DATABASE 数据库名称; 如:mysql>create database abc; 默认创建数据库保存在/var/lib/mysql中 查看数据库是 mysql>show abc; 选择数据库是 USE 数据库名称; 如:mysql>use abc; 删除数据库是 DROP DATABASE 数据库名称;如:mysql>drop database abc; 数据库的创建和删除 创建表是CREATE TABLE 表名称(字段1,字段2,…[表级约束]) [TYPE=表类型]; 其中字段(1,2 )格式为:字段名字段类型[字段约束] 如创建一个表student,如下: mysql>create table student ( sno varchar(7) not null, 字段不允许为空 sname varchar (20 )not null, ssex char (1) default …t?, sbirthday date, sdepa char (20), primary key (sno) 表的主键 ); 可用describe命令查看表的结构。 默认表的类型为MYISAM,并在/var/lib/mysql/abc 目录下建立student.frm(表定

Mysql数据库学习心得

Mysql数据库学习心得(1) 由于工作中需要使用mysql,笔者通过网上学习,动手实践,终于从一个"数据库菜鸟"变成了能熟练操作mysql的"准大虾"了,:)。现将学习心得整理如下。 MySQL是完全网络化的跨平台关系型数据库系统,一个真正的多用户、多线程SQL数据库服务器,同时是具有客户机/服务器体系结构的分布式数据库管理系统。它具有功能强、使 用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL数据库的程序,对于中、小型应用系统是非常理想的。除了支持标准的ANSI SQL语句,更重要的是,它还支持多种平台,而在Unix系统上该软件支持多线程运行方式,从而能获得相当好的性能。对于不使用Unix的用户,它可以在Windows NT系统上以系统服务方式运行,或者在Windows 95/98系统上以普通进程方式运行。而在Unix/Linux系统上,MySQL支持多线程运行方式,从而能获得相当好的性能,而且它是属于开放源代码软。 MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成,MySQL的执行性能非常高,运行速度非常快,并非常容易使用,是一个非常棒的数据库。MySQL的官方发音是"My Ess Que Ell"(不是MY-SEQUEL )。 一.获得MySQL 首先必须下载MySQL。Mysql的官方网站是:,在中国的镜像是:或者:,可以下载MySQL的稳定版本截止到笔者发稿为止)。其版本名称是,不但免费而且没有所谓的"30天使用期限"。 二.MySQL的安装 (一)在Win98/Winnt下的安装 到一个目录,运行Setup程序,会提示整个安装的过程。它默认安装到c:mysql下,如果要安装到其它目录下还有改动一些东西,作为初学者,可以先不管,以默认的目录安装。好了,安装后,进入c:mysql in 目录下,运行文件在Win98下直接运行,正常情况下,没有什么提示信息。 1。将下载后的文件解压解压到一个临时目录。 2。点击安装到c:mysql(默认)。 3。将拷贝到c:,把文件中的#basedir=d:/mysql/改为basedir=c:mysql。 4。进入msdos,到目录c:mysql in。 5。输入mysqld-shareware -install,此为启动Mysql数据库服务。

个人总结的mysql常用命令大全

第一招、mysql服务的启动和停止 net stop mysql net start mysql 第二招、登陆mysql 语法如下:mysql -u用户名-p用户密码 键入命令mysql -uroot -p,回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql 的提示符是: mysql> 注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP 第三招、增加新用户 格式:grant 权限on 数据库.* to 用户名@登录主机identified by "密码" 如,增加一个用户user1密码为password1,让其可以在本机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令: grant select,insert,update,delete on *.* to user1@localhost Identified by "password1"; 如果希望该用户能够在任何机器上登陆mysql,则将localhost改为"%"。 如果你不想user1有密码,可以再打一个命令将密码去掉。 grant select,insert,update,delete on mydb.* to user1@localhost identified by ""; 第四招:操作数据库 登录到mysql中,然后在mysql的提示符下运行下列命令,每个命令以分号结束。 1、显示数据库列表。 show databases; 缺省有两个数据库:mysql和test。mysql库存放着mysql的系统和用户权限信息,我们改密码和新增用户,实际上就是对这个库进行操作。 2、显示库中的数据表: use mysql;

Mysql数据库学习总结

Mysql数据库学习总结 数据库的基本操作:创建删除查瞧 Create database school; 用于创建数据库,并且数据库的名字不可以更改 Show create database; show databases; 用来查瞧创建数据库的语句 Drop database; 用于删除数据库 表的基本操作: Create table; 用于创建表,table后面加表名称 Create table student{ Id int; Name varchar(10); Sex Boolean; } Show tables; 用于显示数据库中的所有表 Describe student; 这里显示了字段、数据类型、就是否为空、主外键、默认值与额外信息Show create table; 显示创建表时的详细信息 Drop table student; 删除表的操作 完整性约束

就是对字段进行限制,从而该字段达到我们期望的效果 设置表的主键:主键能够标识表中的每条信息的唯一性。(primary key) 创建主键的目的在于快速查找到表中的某一条信息 多字段主键:由多个属性组合而成 例如:primary key(id,course_id); 设置表的外键; 设置表的外键的作用在于建立与父表的联系 比如表A中的id就是外键,表B中的id就是主键 那么就可以称表B为父表,表A为子表 比如表B中id为123的学生删除后,表A中id为123的记录也随着消失这样做的目的在于保证表的完整性。 设置表的非空约束: 设置表中的字段不为空 设置表的唯一性约束 唯一性约束指表中该字段的值不能重复出现,也就就是给表中某个字段加上unique 设置表的属性值自动增加: auto_increment 主要用于为表中插入的新纪录自动生成唯一ID 一个表中只能由一个字段使用此约束,并且该字段必须为主键的一部分,约束的值ibixu 就是整型值。 设置表中属性的默认值 在表中插入一体哦新的记录时,如果没有为该字段赋值,那么数据库系统就会为该字段附上一条默认值。 修改表 修改表需要用到alter table 修改表名:

传智 韩忠康 mysql 课程笔记5(吐血整理)

昨天作业 2013年4月20日星期六 09:56 class as h on m.host_id =h.id left join

select 2013年4月20日星期六10:06

生成的文件格式: 默认的,采用行来区分记录,而采用制表符,来 区分字段。 为了满足某种特别的需求,会采用不同的分割方式。 支持,在导出数据时,设置记录,与字段的分割符。 通过如下的选项: fields:设置字段选项 Lines: 设置行选项(记录选项) 先看默认值: 字段:fields terminated by '\t' enclosed by '' escaped by '\\‘ 记录:lines terminated by '\n' starting by '' 可以自己设定: select * into outfile 'e:/amp/three' fields terminated by ',' lines terminated by '\n' starting by 'start:' from teacher_class where t_name = '韩信'; 字段包裹 select * into outfile 'e:/amp/four' fields terminated by '\t' enclosed by 'x' lines terminated by '\n' starting by 'start:' from teacher_class where t_name = '韩信'; 注意: 常规的,所有的记录,应该通过行来显示例外是保存二进制数据:

非常经典的solr教程

非常经典的solr教程,照着上面做完全能成功! duogemajia Solr 3.5 入门配置应用 机器上已安装: Tomcat 6.0 jdk1.7 mysql 5.0 1 访问https://www.360docs.net/doc/b95745204.html,/dyn/closer.cgi/lucene/solr , 在这个网址里选择一个路径, 下载solr 3.5 的版本 2 solr3.5 在本机解压缩以后, 把apache-solr-3.5.0\example\webapps 目录下 的solr.war 文件拷贝到Tomcat 6.0 的webapps 目录下 3 在Tomcat 6.0\webapps\solr 目录里新建一个文件夹conf 4 把solr3. 5 本机解压缩文件夹apache-solr-3.5.0\example 下的multicore 文件夹 考本到Tomcat 6.0\webapps\solr\conf 目录下 5 在Tomcat 6.0\conf\Catalina\localhost 目录下新建一个solr.xml 文件, 里面的内容如下 6 访问你的solr 项目localhost:8080/solr 会显示出两个core , solr 正常运行 7 配置分词, 使用的是mmseg4j 和搜狗词库, 下载地址: https://www.360docs.net/doc/b95745204.html,/p/mmseg4j/ , https://www.360docs.net/doc/b95745204.html,/p/mmseg4j/downloads/ detail?name=data.zip&can=2&q 8 把本地下载的mmseg4j 解压缩, 把里面的mmseg4j-all-1.8.5.jar 文件拷贝到Tomcat 6.0\webapps\solr\WEB-INF\lib 目录下 9 在Tomcat 6.0\webapps\solr 目录下新建一个dic 文件夹, 把新下载的词库拷贝到dic 目录下 10 在\Tomcat 6.0\webapps\solr\conf\multicore\core0\conf\schema.xml 文件的types 节点里添加如下节点:

MySQL笔记..

03_MySQL Day01 一、数据库(DataBase DB) 1、数据库:存储数据的仓库 2、数据库分类: (1)关系型数据库:二维表存储数据(Mysql,SQLServer,Orcale,DB2等) (2)非关系型数据库(Nosql):MongDB等 3、Mysql安装 (1)window:配置文件my.ini 进入命令行开始--运行--cmd (2)Linux:配置文件:/etc/https://www.360docs.net/doc/b95745204.html,f 终端 mysql -uroot -p 说明: Mysql 数据库的存储位置 /var/lib/mysql 4、Mysql登录 mysql -u用户名-p密码[-P3306] [-D数据库名称] 5、Mysql退出 quit exit \q 6、Mysql注释 -- 注释 # 注释 7、修改提示符(Prompt) (1)进入MySQL的命令 prompt 提示符名称 (2)登录MySQL写的命令 mysql -uroot -p --prompt=提示符名称 说明: a.恢复提示符prompt mysql> b.特殊符号 \h 主机名称 \D 系统时间日期 \d 选择数据库名称 8、SQL(Structured Query Language)结构化查询语句 (1)DDL(数据创建语言):创建数据库,创建表、创建视图等

CREATE(创建),DROP(删除),ALTER(修改) (2)DML(数据操作语言):对数据库的数据的增,删,改 INSERT(添加),DELETE(删除),UPDATE(改) (3)DQL(数据查询语言):对数据库的数据查询 SELECT(查询) (4)DCL(数据库控制语言):分配(GRANT)用户权限 及权限(REVOKE)撤销 9、SQL命令行规范 a.系统命令大写,名称小写 b.SQL命令行以分号结束或\g 说明:结束分隔符可以用delimiter 符号名称 c.SQL命令行支持折行,但不能在函数,名称,引号中不能折行 d.SQL命令中的名称不能用关键字和保留字,如果使用必须用反引号``括起来,例如`user` 10、创建数据库(DDL) (1)查看数据库 SHOW DATABASES; (2)创建数据库 CREATE DATABASE [IF NOT EXISTS] 数据库名称[[DEFAULT] CHARACTER SET [=] 编码]; (3)查看创建数据库命令 SHOW CREATE DATABASE 数据库名称; (4)删除数据库 DROP DATABASE [IF EXISTS] 数据库名称; (5)修改数据库的编码 ALTER DATABASE 数据库名称 [DEFAULT] CHARACTER SET [=]编码; (6)选择数据库 USE 数据库名称; (7)查看当前选择的数据库 SELECT DATABASE(); 11、创建数据库中的表 (1)查看表 SHOW TABLES; (2)创建表结构 CREATE TABLE [IF NOT EXISTS] 表名( 字段(Field)名称|列名称数据类型[字段属性|约束条件], 字段(Field)名称|列名称数据类型[字段属性|约束条件] ... )[ENGINE=InnoDB DEFAULT CHARSET=utf8]; 说明:数据库最小单位是表,一定是先有表结构 再添加数据

MYSQL 常用命令

1.导出整个数据库 mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1) mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导出一个表 mysqldump -u 用户名 -p 数据库名表名> 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql 3.导出一个数据库结构 mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:wcnc_db.sql -d 没有数据–add-drop-table 在每个create语句之前增加一个drop table 4.导入数据库 A:常用source 命令 进入mysql数据库控制台, 如mysql -u root -p mysql>use 数据库 然后使用source命令,后面参数为脚本文件(如这里用到的.sql) mysql>source wcnc_db.sql B:使用mysqldump命令 mysqldump -u username -p dbname < filename.sql C:使用mysql命令 mysql -u username -p -D dbname < filename.sql 一、启动与退出 1、进入MySQL:启动MySQL Command Line Client(MySQL的DOS界面),直接输入安装时的密码即可。此时的提示符是:mysql> 2、退出MySQL:quit或exit 二、库操作 1、、创建数据库 命令:create database <数据库名> 例如:建立一个名为xhkdb的数据库 mysql> create database xhkdb;

Mysql总结完整版

一、数据库概述 数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。 数据库软件应该为数据库管理系统,数据库是通过数据库管理系统创建和操作的。 数据库:存储、维护和管理数据的集合。 二、数据库的安装与配置 * 安装 * 参照图解 * 一路下一步 * 卸载 1.停止mysql服务net stop mysql 启动mysql服务net start mysql 2.卸载mysql 3.找到mysql 安装目录下的my.ini datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/" * 运行 * 安装成功了打开cmd --> mysql -uroot -p你的密码 * 修改mysql root用户密码 1) 停止mysql服务运行输入services.msc 停止mysql服务 或者cmd --> net stop mysql 2) 在cmd下输入mysqld--skip-grant-tables 启动服务器光标不动(不要关闭该窗口) 3) 新打开cmd 输入mysql -u root -p 不需要密码 use mysql; update user set password=password('abc') WHERE User='root'; 4) 关闭两个cmd窗口在任务管理器结束mysqld 进程 5) 在服务管理页面重启mysql 服务 密码修改完成 * 配置 * 参照图解

mysql优化笔记

◆Mysql数据库的优化技术<大型网站优化技术> 对mysql优化时一个综合性的技术,主要包括 a: 表的设计合理化(符合3NF) b: 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引] c: 分表技术(水平分割、垂直分割) d: 读写[写: update/delete/add]分离 e: 存储过程[模块化编程,可以提高速度] 数据库的三层结构: f: 对mysql配置优化[配置最大并发数my.ini, 调整缓存大小] g: mysql服务器硬件升级 h: 定时的去清除不需要的数据,定时进行碎片整理(MyISAM) CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON tbl_name (index_col_name,...) ◆什么样的表才是符合3NF (范式) 表的范式,是首先符合1NF, 才能满足2NF , 进一步满足3NF 1NF: 即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只有数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sql server),就自动的满足1NF ?数据库的分类 关系型数据库: mysql/oracle/db2/informix/sysbase/sql server 非关系型数据库: (特点: 面向对象或者集合) NoSql数据库: MongoDB(特点是面向文档) 2NF: 表中的记录是唯一的, 就满足2NF, 通常我们设计一个主键来实现id primary key ; 3NF: 即表中不要有冗余数据, 就是说,表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放. 比如下面的设计就是不满足3NF:显示推导处理

MYSQL数据库命令大全

MYSQL命令大全 常见的MySQL命令大全 一、连接MySQL 格式:mysql -h主机地址-u用户名-p用户密码 1、例1:连接到本机上的MYSQL。 首先在打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>。 2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令: mysql -h110.110.110.110 -uroot -pabcd123 (注:u与root可以不用加空格,其它也一样) 3、退出MYSQL命令:exit (回车)。 二、修改密码 格式:mysqladmin -u用户名-p旧密码password 新密码 1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令: mysqladmin -uroot -password ab12 注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。 2、例2:再将root的密码改为djg345。 mysqladmin -uroot -pab12 password djg345 三、增加新用户。(注意:和上面不同,下面的因为是MySQL环境中的命令,所以后面都带一个分号作为命令结束符) 格式:grant select on 数据库.* to 用户名@登录主机identified by \"密码\" 例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,

mysql学习笔记

创建student表 CREATE TABLE student ( sNo int(11) NOT NULL DEFAULT '0', sName varchar(10) DEFAULT NULL, sSex enum('m','f') DEFAULT 'm', sAge tinyint(4) DEFAULT '18', sClass varchar(10) DEFAULT NULL, PRIMARY KEY (sNo), KEY index_name (sName) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 创建course表 CREATE TABLE course( cNo tinyint(4) NOT NULL, cName varchar(20) NOT NULL, cCredit tinyint(4) NOT NULL, PRIMARY KEY ( cNo) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 创建score表 create table score (sNo int not null, cNo tinyint not null, score tinyint, primary key(sNo,cNo), constraint foreign key(sNo) references student(sNo), constraint foreign key(cNo) references course(cNo) )engine=innoDB default charset=utf8; insert into course values(1,"计算机操作系统",3),(2,"计算机基础教程",2), (3,"计算机导论",4),(4,"C++ Primer",4),(5,"MySQL入门与精通",5); mysql的SQL语句: 创建表: create table student( id int not null primary key, name char(10) not null, sex char(2) not null ); 修改表结构:增加,删除,修改字段 alter table student drop sex, add birthday date,

mysql命令语句大全

show databases; 显示数据库 create database name; 创建数据库 use databasename; 选择数据库 drop database name 直接删除数据库,不提醒 show tables; 显示表 describe tablename; 显示具体的表结构 select 中加上distinct去除重复字段 mysqladmin drop databasename 删除数据库前,有提示。 显示当前mysql版本和当前日期 select version(),current_date; 修改mysql中root的密码: shell>mysql -h localhost -u root -p //登录 mysql> update user set password=password("xueok654123") where user='root'; mysql> flush privileges //刷新数据库 mysql>use dbname; 打开数据库: mysql>show databases; 显示所有数据库 mysql>show tables; 显示数据库mysql中所有的表:先use mysql;然后 mysql>describe user; 显示表mysql数据库中user表的列信息); grant 创建用户firstdb(密码firstdb)和数据库,并赋予权限于firstdb数据库 mysql> create database firstdb; mysql> grant all on firstdb.* to firstdb identified by 'firstdb' 会自动创建用户firstdb mysql默认的是本地主机是localhost,对应的IP地址就是127.0.0.1,所以你用你的IP 地址登录会出错,如果你想用你的IP地址登录就要先进行授权用grant命令。 mysql>grant all on *.* to root@202.116.39.2 identified by "123456"; 说明:grant 与on 之间是各种权限,例如:insert,select,update等 on 之后是数据库名和表名,第一个*表示所有的数据库,第二个*表示所有的表 root可以改成你的用户名,@后可以跟域名或IP地址,identified by 后面的是登录用的密码,可以省略,即缺省密码或者叫空密码。 drop database firstdb; 创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个 mysql> grant all privileges on *.* to user@localhost identified by 'something' with 增加新用户 格式:grant select on 数据库.* to 用户名@登录主机identified by "密码"

我的MYSQL学习心得

我的MYSQL学习心得(十一)视图我的MYSQL学习心得(一)简单语法 我的MYSQL学习心得(二)数据类型宽度 我的MYSQL学习心得(三)查看字段长度 我的MYSQL学习心得(四)数据类型 我的MYSQL学习心得(五)运算符 我的MYSQL学习心得(六)函数 我的MYSQL学习心得(七)查询 我的MYSQL学习心得(八)插入更新删除 我的MYSQL学习心得(九)索引 我的MYSQL学习心得(十)自定义存储过程和函数 我的MYSQL学习心得(十二)触发器 我的MYSQL学习心得(十三)权限管理 我的MYSQL学习心得(十四)备份和恢复 我的MYSQL学习心得(十五)日志 我的MYSQL学习心得(十六)优化 我的MYSQL学习心得(十七)复制 这一篇《我的MYSQL学习心得(十一)》将会讲解MYSQL的视图

使用视图的理由是什么? 1、安全性:一般是这样做的:创建一个视图,定义好该视图所操作的数据。 之后将用户权限与视图绑定,这样的方式是使用到了一个特性:grant语句可以针对视图进行授予权限。 2、查询性能提高 3、有灵活性的功能需求后,需要改动表的结构而导致工作量比较大,那么可以使用虚拟表的形式达到少修改的效果。 这是在实际开发中比较有用的 4、复杂的查询需求,可以进行问题分解,然后将创建多个视图获取数据。将视图联合起来就能得到需要的结果了。 创建视图 创建视图的语法 CREATE[OR REPLACE][ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL]CHECK OPTION] 其中,CREATE:表示新建视图; REPLACE:表示替换已有视图 ALGORITHM :表示视图选择算法 view_name :视图名

mysql数据库常用语句大全

mysql数据库常用语句 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice ’disk’, ’testBack’, ’c:mssql7backupMyNwind_1.dat’ --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明: 删除新表:drop table tabname 6、说明: 增加一个列:Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar 类型的长度。 7、说明: 添加主键:Alter table tabname add primary key(col) 说明: 删除主键:Alter table tabname drop primary key(col) 8、说明: 创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明: 创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围

MySQL基础知识总结

day15-MySQL 数据库 1数据库概念(了解) 1.1什么是数据库 数据库就是用来存储和管理数据的仓库! 数据库存储数据的优先:

●可存储大量数据; ●方便检索; ●保持数据的一致性、完整性; ●安全,可共享; ●通过组合分析,可产生新数据。 1.2数据库的发展历程 ●没有数据库,使用磁盘文件存储数据; ●层次结构模型数据库; ●网状结构模型数据库; ●关系结构模型数据库:使用二维表格来存储数据; ●关系-对象模型数据库; MySQL就是关系型数据库! 1.3常见数据库 ●Oracle(神喻):甲骨文(最高!); ●DB2:IBM; ●SQL Server:微软; ●Sybase:赛尔斯; ●MySQL:甲骨文; 1.4理解数据库 ●RDBMS = 管理员(manager)+仓库(database) ●database = N个table ●table: ?表结构:定义表的列名和列类型! ?表记录:一行一行的记录! 我们现在所说的数据库泛指“关系型数据库管理系统(RDBMS - Relational database management system)”,即“数据库服务器”。 当我们安装了数据库服务器后,就可以在数据库服务器中创建数据库,每个数据库中还可以包含多张表。

数据库表就是一个多行多列的表格。在创建表时,需要指定表的列数,以及列名称,列类型等信息。而不用指定表格的行数,行数是没有上限的。下面是tab_student表的结构: 当把表格创建好了之后,就可以向表格中添加数据了。向表格添加数据是以行为单位的!下面是s_student表的记录: s_id s_name s_age s_sex S_1001 zhangSan 23 male S_1002 liSi 32 female S_1003 wangWu 44 male 大家要学会区分什么是表结构,什么是表记录。 1.5应用程序与数据库 应用程序使用数据库完成对数据的存储!

EA经典教程(实战)

EA经典教程 2009-12-07 来源:https://www.360docs.net/doc/b95745204.html, 一、Enterprise Architect简介 nterprise Architect是一个对于软件系统开发有着极好支持的CASE软件(Computer Aided Software Engineering)。EA不同于普通的UML画图工具(如VISI 支撑系统开发的全过程。在需求分析阶段,系统分析与设计阶段,系统开发及部署等方面有着强大的支持,同时加上对10种编程语言的正反向工程,项文档生成,数据建模等方面。可以让系统开发中各个角色都获得最好的开发效率。 二、创建新项目 安装好了EA汉化版后,启动软件。点击“创建新的项目”,打开创建新项目对话框。 1】 这里可以选择各种的初始的模板包。 2】 我们选择了其中几个,然后确定打开了项目浏览器。我们的项目将从这里开始了。

3】 三、EA软件配置 在使用软件之前,我们先来对它进行配置。打开“工具”–>“选项”。 【图4】 常规配置中,比较重要的是作者这项。因为在EA项目的团队协作中,作者是每个人的身份标识。 在代码工程中,最好把文件编码设置成UTF8或者是GB中文。 其他方面的配置,因为都是中文的,也比较容易理解。有些不明的地方,可以多琢磨。 另外对于最下面的十种编程语言,可以根据自己的需要,进行一些配置。比如PHP,可以配置PHP4或者是PHP5,那么生成的代码也是有些不同的。还可其他没有用到的语言。 四、用例图,类图的使用 用例图(use case) 用例图是我们做系统分析的通常第一步,是非常重要的。毕竟大部分的开发流程,都将需求分析作为首要步骤,也是必要步骤。将系统需求化作图型表达出

相关文档
最新文档