mysql数据库的安装:
选择 typical 类型 》install》next》next》 configure teh mysql server now 打勾 点击finish detailed configuration developer machine multifunctional database decisionsupport (dss)/olap character set 字符编码 utf8 设置密码 enable root access from remote machines 打勾 允许远程机器访问 exeute finish
数据库 mysql
数据库是用于维护业务数据,共享数据资源的管理系统。
为什么要用数据库管理数据?
第一:数据库可以不断的新增和更新数据,并且可以分布式存储。
第二:数据是企业最重要的资源。需要定期备份,数据库有自带功能强劲的备份功能。
第三:数据库系统可以做大量的数据计算货分析。为企业领导层做出正确决策提供帮助。
数据库的结构:
第一:数据库(Database)
第二:数据表(Table)每个数据库有多个表。
第三:字段(Field)每个表有多个字段。
第四:记录(Record)记录就是表中每条具体的数据。
目前流行的数据库都以sql语言为标准,都是关系型数据库。
非关系数据库也有。使用不多。
SQL语言简介
它是结构化查询语言,用于查询,更新,管理数据库。
SQL分三个部分:
第一:数据库定义语言(DDL),用来建库建表建列等,比如输入语句:create table(创建表),drop table(删除表)等。
第二:数据库操作语言(DML),用于数据表数据的增加(insert),删(delete),查(select),改(update)
第三:数据库控制语言(DCL),比如事务的提交或者回滚,权限的控制,网络远程访问的配置等。比如语句有:grant,commit ,rollback。
SQL语言内的数据类型
常用的数据类型:数值型,字符型,文本型,日期型。
数值型有:整型(int) 浮点型(float) 双精度(double)
字符型有:char(固定长度字符),varchar(可变长度字符),
文本类型有:text
日期类型:datetime,timestamp(后者范围比前者小。但是占的存储空间更加小)
MYSQL 5.0 的dos操作界面
输入密码进入
通过命令:show databases; 回车进入数据库中的库。
现在要如何使用库呢?首先进入。
通过命令:use mysql; 回车进入mysql这个库。
接着就打开这个库内的表(tables)了
通过命令:show tables;回车打开库中所有表。
接着查询表中数据。
通过命令:select * from 输入表名 ;回车就查询到这个表中所有数据。
通过以上的命令简单操作数据库。
库和表的创建 亏a特 通过命令:create database 数据库名字 例如:
create database testmysql;这样就创建了一个库。
使用命令:use testmysql;就可以打开这个库。
接着创建表
create table 表名(num<字段1 num> int not null auto_increment<自动增加的意思> ,name<字段2 name> varchar(20),primary key<主键>(某个字段 比如:num));
varchar(10)必须要给长度。
同一个库不能有相同的数据表。如果要覆盖已有的可以先删除在创建新表。 急哦扑 drop table if exists test1;假如存在test1表就删除。
create table test1(里面是字段,主键等信息)重新创建
增/删/查/改语句的掌握 音色特 给表中增加数据 通过语句:insert into 表名 (字段1,字段2。。。)values(值1,值2。。。); va 溜 也可以直接insert into 表名 values(值1,值2。。。); 值有 '2' '名字' 无论数字和中文都用单引号 框起来! 主键可以设置为null 自动增长 什么是主键 :主键是唯一用来定位某条数据的,所以主键值是不能重复的(不能重复也叫主键约束)
删除表内数据 通过语句:delete from 表名 where 条件 切记这里如果不加入where条件就会删除整个表的所有数据。
where条件后面的语句是计算真或者假的。比如删除所有名字为zlb2的人。
delete from car1 where name="zlb2";
where条件可以有多个。比如:
zlb2的人。
DELETE from orderinfo where ordernum='2185' and sex='0'; 删除ordernum为2185 并且 sex 为0的数据
delete from car1 where name="zlb2" (and or连接起来起到并且或者的意思); 色la可特 挑选 查询数据 通过语句:select * from 表名 where条件 这里的*表示所有列 如果需要查询你需要查询的列可以这样:select 这里输入列名可以多个 from car1;
where在这里的用法和delete一样
select * from users where toid='11';
在查询的时候可以给表取一个别名 表名 as 别名
select c.name from car1 as c
有时候我们会忘记name存入的是什么数据
c.name as '姓名' 当你查询数据的时候name那一列就显示的是姓名。
只用在命令行中。
更新和修改数据:通过语句:
修改数据 update 表名 set 字段1=值1 ,字段2=值2 where 条件
update testafei set testname='abc' where toid=9;
where的用法和其他语句一样,不加where条件,那么就会修改这个表的所有数据
mysql 高级知识
第一。多表关联
OA系统,部门和员工的管理
外键 foreign key 用于表示多个表之间的关联关系。保持数据的完整性
多表查询 建立了主外键关联的多表
第一:内连接查询:inner join on 只连接匹配的行 on后面是条件 使用别名
例如:select * from teachers_sql as t INNER JOIN student as s on t.teacher_id=s.id;
当然没有主外键关联的多表也可以查这样询。
上面的表达式和下面这个一样。
select * from teachers_sql as t ,student as s where t.teacher_id=s.id;
左连接查询:left join on 经常考试
以左表为准,去右表找数据,(左表数据全部出来) 右边表单如果没有匹配的数据则以null补空位。on 后面是条件
看查询表达式:
select * from teachers_sql t LEFT JOIN student s on t.teacher_id=s.id;
右连接 RIGHT JOIN
以右表为准,去右表找数据,如果左边表单没有匹配的数据则以null补空位。on 后面是条件
看查询表达式:
select * from teachers_sql as t RIGHT JOIN student as s on t.teacher_id=s.id;
where条件
where后面一般连接着比较运算符,如>,<,=,!=; 运算符表达式之间用and or等连接;使用between表示某个范围;
select * from student where age BETWEEN 22 and 24;
模糊查询:like
%表示任意字符;_ 表示单个字符。
select * from student as s where s.name
like "%碧%";
关键字in 可以根据范围进行子查询,
select* from student as s where s.id in(1,2)
in内部是一个查询。看下面查询姓名为莫建立和何小林的人
select * from student as s where s.stuname in ( select stuname from student as a where s.stuname='莫建立' or s.stuname='何小林' );
select * from student as s where s.age in ( select s.age from student as a where s.age='20' or s.age='25' );
传入其他表的数据类似内连接 student表内age字段有符合条件的就会被查询出来,更多的时候in内的select语句是查询的主键.
select * from student as s where s.age in ( select t.teacher_age from teachers_sql as t where t.teacher_age=29 or t.teacher_age=31 or t.teacher_age=35 );
排序:order by asc/desc
asc:升序,默认
desc:降序
例如:select * from student as s order by s.age ase;
分组查询:group by 意思分组依据
面试问:根据什么就group by 什么
以下语句查询一个表中年龄最大的学生信息。 select * from student s where age in (SELECT MAX(s1.age) from student s1);
聚合函数:sum() mysql内置函数,用于求和。还有avg()平均,count()计数 max() min()等
select s.age,SUM(t.teacher_age) from student as s ,teachers_sql as t where t.studentid=s.id GROUP BY s.age;
以上代码命令就是根据年龄求和。
select * from student as s,grade as g where s.gradeid=g.toid AND s.age in(select MAX(s1.age) from student as s1 GROUP BY s1.gradeid );
以上查询每个班级 年龄最大的学生信息
having子句 在分组后过滤数据后面的条件一般包含聚合函数
select t.teacher_id ,MAX(s.age) from student as s,teachers_sql as t where s.tcid=t.teacher_id GROUP BY t.teacher_id HAVING MAX(s.age)<=200;
limit 字句限定结果数
select * from student LIMIT 10,10;
表示显示从第十条到第二十条数据
以下代码:查询每个班级中年龄最大的学生信息
SELECT * from student s1 where s1.age in( select MAX(s.age) from student s GROUP BY s.claid );
以下代码:关联2个表查询每个班级的信息并且显示这个班级中年龄最大的学生信息
select * from student s INNER JOIN class c on s.claid=c.num where s.age in( select MAX(age) from student GROUP BY claid) ORDER BY c.num;
这个语句如果一个班级中最大年龄学生年纪是10岁,并且还有一个学生年纪是9岁,而且另一个班级最大年纪的学生年纪是9岁,这时候就会把那个班级中的年龄为9岁的学生也查询出来。如果要避免这个问题,用下列查询语句:
select * from student s1 inner join (select MAX(age) maxage,claid from student GROUP BY claid) s2 on s1.age=s2.maxage and s1.claid=s2.claid;
以下代码:查询每个班级中有那些学生名字。并且显示最大年龄
select GROUP_CONCAT(s.studentname), MAX(s.age) from student s GROUP BY s.claid
Navicat 发音 :na v k特
INSERT into studenttable values(null,'张毅承','1','1','四川成都');
select * FROM studenttable where studentage='15';
update studenttable set studentname='张三丰' where studentname='张理斌' and studentage='15';
update studenttable set studentaddress='湖北武汉' where studentage='17';
DELETE from studenttable where studentage='18';
佛锐 king foreign key 外键 主外键关联 只是为了保证数据完整性。什么是完整性?就是保证你添加数据的时候必须和另外 一个表的主键对应的上。不做主外键关联同样可以查询出来 只不过你需要自己注意不要没法和另外一个表主键对不上