1.数据库的概念

传统的数据存储:计算机程序时运行在内存的,内存空间有限,并且不能持久保存,所以 程序运行之前需要均价在的数据、运行中需要保存的数据以及运行完需要产生的数据都需要持久化的保存,即需要保存到磁盘中,而磁盘管理数据的方式是通过文件,所以数据的持久化存储一般是在磁盘中以文件的形式来保存;传统的文件包保存方式有txt,ppt,doc,exe,jpg等不同格式的文件可以保存不同类型的数据
由于传统的数据存储方式,在数据操作、共享、远程操作等方面存在明显的缺陷,因此我们可以用数据库系统来处理数据
常用的数据库有两大类:关系型数据库(mysql、SQLserver、Oracle、access等),非关系型数据库(redis、MangoDB等)

2.MySQL数据库

关系型数据库MYSQL:
数据库服务器:提供数据库的运行、维护以及查询操作和并发等的一个服务程序
MYSQL数据库:用于存储数据,程序中产生的数据或者是要持久化存储的数据都可以用数据库来存,操作数据库文件需要借助于数据库服务器的管理系统
表:向MySQL这样的关系型数据库在存储数据时是用二维表来存,这个二维表我们成为关系表
记录:表中的每一行代表一条记录(即一条数据)
字段(属性):表中的每一列代表一个属性

2.1 安装MySQL关系型数据库的服务器以及客户端

sudo apt-get install -y mysql-server mysql-client
安装成功以后Mysql数据库服务器默认是开启,我们可以直接用MYSQL客户端来链接
mysql -h 服务器地址(本地为localhost或者127.0.0.1) -u 用户名(root) -p
然后回车,输入用户名对应的密码(root用户的默认密码一般是123456),就可以进入数据库的命令行终端

我们可以设置跳过密码验证:
cd /etc/mysql/mysql.conf.d
vim mysqls.cnf
在[mysql]下面添加一行如下配置
skip-grant-tables
然后wq
重启服务器:service mysql restart

1)创建一个mysql服务器的新用户
首先敲mysql命令进入mysql的控制终端
(1) create user ‘lemonc’@’%’ identified by ‘123’;
(2) GRANT ALL PRIVILEGES ON . TO ‘bobo’@’%’ IDENTIFIED BY ‘123’ WITH GRANT OPTION;
(3) flush privileges;

2)mysql的远程登录
(1) 首先在云服务器下面配置3306的端口号安全组
(2) 检测防火墙ufw status,日哦国防火墙开启,我们需要允许3306端口的访问ufw allow 3306
(3) vim /etc/mysql/mysql.conf.d/mysql.cnf
找到"bind-address = 127.0.0.1"注释掉
(4) 重启服务sudo service mysql restart
可以用远程的mysql客户端来连接:mysql -h 主机名 -u 用户名 -p 然后回车输入密码
可以用远程的可视化终端来连接:navicat等工具

3)数据库的基本操作指令
(1) 查看数据库
show databases;
(2) 创建数据库
create database 数据库名 default charset=utf8; # 数据库命名的时候要用英文
(3) 删除数据库
drop database 数据库名;
(4) 使用数据库
use 数据库名;
(5) 查看当前数据库中的表
show tables;
(6) 查看数据库创建语句
show create database 数据库名 ;
(7) 查看选中的数据库
select database();
(8) 修改数据库的字符集
alter database 数据库名 default charset=xxx;

   #每条sql语句要以";"或者\g结束退出数据连接用quit或者exit

2.2 SQL

SQL用于操作关系型数据库,常用的SQL语句可以分为如下几大类:
数据库定义语言DDL(create、drop)
数据操作语言DML(insert、delete、update)
数据查询语言DQL(select、where、groupby等)
数据控制语句DCL(grant、revoke)
事务处理语言TPL(commit、rollback)

2.3 操作数据库

数据库本身的增删改查,终端下的sql操作,还可以借助于可视化工具来操作

2.4 数据库表

1)创建表:
create table [if not exists] 表名(
字段1 类型 [限制],
字段2 类型 [限制],

字段n 类型 [限制]
)[engine=innodb | myisam][default charset=utf8];

  创建学生表create table student(id int primary key auto_increment,name varchar(30),age int,sex varchar(1),num varchar(12) unique);#复合主键create table grade(sid int,cid int,score float,primary key(sid,cid));

2)删除表
drop table 表名;

3)字段限制
primary key 把当前字段设置为主键;主键用于在一个表中唯一标识一条记录,主键不允许为空且不能重复,主键的数据类型一定是int类型,主键值只是对这条记录的标记 一般情况下和内容不会发生关系
not null 非空;如果某个字段设置为not null,当我们插入数据的时候,这个字段对应的内容不能为空否则会报错
unique 唯一,如果设置某个字段为unique,则当我们输入数据的时候,这个字段内容不能和其他记录重复

4)查看表结构
desc 表名;
5)查看建表语句
show create table 表名;

6)修改表
(1) 修改字段类型
alter table 表名 modify 字段名 类型 [限制];
(2) 增加字段
alter table 表名 add [cloumn] 字段名 类型 [限制];
(3) 删除字段
alter table 表名 drop [column] 字段名;
(4) 修改字段的名字和类型
alter table 表名 change [column] 旧字段名 新字段名 类型 [限制];
(5) 修改表名
alter table 表名 rename 新表名;
(6) 我们在增加字段的时候可以通过first、after等指定插入位置
alter table student add address varchar(100) not null after sex; #在sex这个字段后面插入一个字段address

2.5数据类型

1)数值型
整形:包括int、smailint、tinyint
# int(3)或者tinyint(2):整数中的3或者2这样的数字不会限制存储数据的长度,只有配合zerofill零填充的时候才有意义
浮点数:float、double
数值类型介绍
类型 大小 范围(有符号的范围) 范围(无符号范围) 用途
tinyint 1字节 -128-127 0-255 最小整形数
int 4字节 -2^31 ~ 2^31-1 0 ~ 2^32 最大的整形数
float 4字节 单精度浮点数
double 8字节 双精度浮点数

2)字符串类型
char 0 ~ 255字节 存储定长字符串
varchar 0 ~ 65535字节 变长字符串
text 0 ~ 65535字节 长文本数据
blob 0 ~ 65535字节 二进制文本
enum 枚举
set 集合
#char与varchar的区别
char的执行效率要高于 varchar,varchar比char节省空间
如果使用char传入的数据的长度小于指定长度值,存储的实际长度不够会拿空格来填充
如果使用varchar传入的数据的长度小于指定长度,存储实际长度就是传进来的数据的长度

3)日期

     类型                  大小                          范围                                      格式                      用途date                  3           1000-01-01 ~ 9999-12-31         YYYY-MM-DD          日期值time                 3               -838:59:59 ~ 838:59:59          HH:MM:SS             时间值year                    4                       1901-2155                               YYYY                        年份datetime         8            1000-01-01 00:00:00             日期和时间的混合~ 9999-12-31 12:59:59

4)枚举
枚举类型是多选一
alter table student modify sex enum(“男”,“女”)default “男”;
此时在插入的时候,sex这个字段的值只能从"男"和"女"中取一个
insert into student(sex) values(“男”);
5)集合
集合类型可以选择多个
alter table student add hobby set(“打球”,“唱歌”,“跳舞”,“拳击”,“喝酒”,“抽烟”,“烫头”,“玩游戏”);
此时插入的时候,hobby这个属性可以从set中取出若干个
insert into student(hobby) value(1+2+3);
insert into student(hobby) value(5+6+7);
insert into student(hobby) value(5 | 6 | 7);
insert into student(hobby) value(“打球,唱歌”);

2.6 数据操作

1)insert
向表中插入一条记录
写法一:
INSERT INTO 表名(字段1,字段2,…字段n) VALUES(值1,值2,…,值n);

#如果有的字段没有赋值,会按照规则自动填充

写法二:
INSERT INTO 表名 VALUES(值1,值2,…,值n);

    INSERT INTO student VALUES(NULL,'小任',19,'女','201732010022','山东日照',2+3);

#如果"表名"后面不跟字段,"VALUES"后面就需要按照顺序将所有的字段的取值写上,如果不想去取对应的位置设置为NULL
写法三:
同时插入多条记录
INSERT INTO 表名(字段1,字段2,…字段n) VALUES(值1,值2,…,值n),(值1,值2,…,值n),…;
写法四:
INSERT INTO 表名(字段1,字段2,…,字段n) selcet 字段1,字段2,…,字段n from 另一张表;


```mysql
2)删除语句DELETE FROM 表名 WHERE 条件;           #如果不加条件,会删除所有数据清空表,自增主键不会重新开始 TRUNCATE TABLE 表名;
TRUNCATE TABLE 表名;  和   DELETE FROM 表名 WHERE 条件;    的区别:前者会清空以后主键从1开始自增,后者不会清空主键3)updateUPDATE 表名 SET 字段1=值1,字段2=值2 WHERE 条件;

2.7数据库查询

2.7.1 基本查询语句

查询语句的基本结构:select 字段列表 from 表名;
(1) 基本查询
select * from stu; #查询stu表中的所有字段
select name,sex from student; #查询stu的所有的记录姓名和性别的字段
select distinct sex from stu; #distinct修饰的时候可以对查询的结果去除重复
(2) 条件查询
select 字段列表 from 表名 where 条件
1)关系运算
关系运算符:>,<,=,>=,<=,!=between and
select student_id,course_id,number from score where number>60;
select student_id,course_id,number from score where sid!=5;
select student_id,course_id,number from score where number between 60 and 90;
2)逻辑运算
逻辑运算符:and,or,not
select * from score where sid<6 and number >60;
select * from score where number>90 or number<60;
3)成员运算符
成员运算符:in,not in
select * from stu where sid in (1,2,3);
select * from stu where sid not in (1,2,3);
4)判空
运算符:is null,is not null
select * from student where grade_id is null;
5)字符串的模糊查询
通配符:_代表一个字符,%代表任意长度的字符
select * from stu where name like “韩%”;
3)排序
select 字段列表 from 表名 where 条件 order by 某字段 asc|desc; #asc代表升序,desc代表降序
select * from score order by number asc;
select * from score order by number desc;
多字段排序
select * from score order by number student_id asc,number; #先按照student_id的升序排列,如果student_id有相同的则相同的那些再按照number的升序来排
select * from score order by number student_id asc,number desc; #先按照student_id的升序排列,如果student_id有相同的则相同的那些再按照number的降序来排
# order by 字段 如果字段后面什么都不加,默认是按照升序

4)限制结果集
limit n; #显示查询结果的前3条
limit offset,n; #对查询结果从offset开始取,向后取n条

  select * from score limit 3;select * from score limit 1,3;     #offset从0开始数

5)集合函数
count 统计结果集中记录的个数;
max 结果集中的最大值
min 结果集中的最小值
avg 结果集中的平均值
sum 结果集的和

        用法: select 集合函数(字段列表) from 表名;select * from score limit 1,3;select max(number) from score;select count(distinct grade_id) num from stu;      #统计去重后的grade_id,并且把查询结果的字段命名为numselect * from score where number=max(number);       //错误#集合函数是对select的查询结果进行的操作,不能作为where的条件

6)分组
group by 将结果集进行分组统计,规则:
(1) 如果出现了 group by 的查询语句, select 后面的字段只能加上集合函数,此时会将查询的数据集按照 group by 后面的字段的值进行分组,然后对组内的记录用集合函数进行集合运算

       #统计学生表中每个班的学生数量,对grade_id分组,对任意字段集合,集合方式countselect count(*) from stu group by grade_id;#统计成绩表每个学生的最高成绩#分析:对student_id分组,对number集合,集合方式maxselect max(number) from score group by student_id;(2) 可以对分组进行过滤,用 having#从成绩表中过滤考试门数为2门以上的学生select student_id,count(*) num from score group by student_id having count(*)>=2;#where与havingwhere针对于原始表进行过滤, where的条件中不能用集合函数having是针对于分组进行过滤, having的条件中可以用集合函数的# 前的id如何加select在进行分组的时候,分组的关系属性可以和集合函数一起写在 select后面作为查询选项,其他和分组属性无关的属性不可一写在 select

查询小结
以下的顺序不能颠倒:
select 属性列表 from 表名
[where 条件]
[group by] #如果用分组,前面的属性列表要按照规则写
[having]
[order by]
[limit]

2.7.2 高级查询
1)子查询(1) 子查询嵌套到其他查询语句中的查询语句,子查询的语句只能出现在 from 、 where和 having中(2) 子查询一般只返回一列(3) 子查询如果返回多值,则外侧的查询语句的运算符不能是关系运算符(4) 子查询中一般不要用*select number from score where student_id in (select sid from stu where name="汤姆");select * from (select sid,name,sex from stu where sex='男') as u;
2)多表联合查询(1)      #多表连接必须要有连接条件,否则没有意义select stu.sid,name,sex,number from stu,score;       #这个连接没有连接条件,即stu表中的每一个记录都会和score中的每一个记录匹配,这种匹配没有意义select stu.sid,name,sex,number from stu,score where stu.sid=score.student_id;      #此时我们指定了连接条件,就是stu表中的sid和score表中的student_id保持一致(2) 多表连接有两种写法:隐士和显示内连接1)隐式内连接:即把连接条件写在where语句中#查询成绩大于60分的学生的姓名,性别以及成绩select stu.sid,name,sex,number from stu,score where stu.sid=score.student_id having number>60;2)显式内连接(inner join)#查询成绩大于60分的学生的姓名,性别以及成绩select name,sex,number from stu inner join score on stu.sid=score.student_id #把student和score通过"A inner join B on XXX"这些关键字连接成一个表where number>60;#查询成绩大于60分的学生的姓名,性别,学科以及成绩select stu.name,sex,course.name,number from stu inner join score on stu.sid=score.student_id inner join course on score.course_id=course.cid where number>60;#查询成绩大于60分的学生的姓名,性别,学科以及成绩、任课老师# select后面的字段如果多个表中都有,则引用的时候必须加上 表名.字段名select stu.name, sex,course.name course,teacher.name teacher,number from stu inner join score on stu.sid=score.student_id inner join course on score.course_id=course.cid inner join teacher on course.teacher_id=teacher.tid where number>60;
3)外连接关系表的对应:一对一、一对多、多对多两张表在联合查询的时候,根据以那张表为主分为左外连接和右外连接(1) 左外连接在连接的时候以左边的表为主,如果右边的表在左边没有匹配的记录,给他添加一条空记录select renwu.name,sex,skill.name skill,renwu.level,skill.level shanghai from renwu left join skill on renwu.rid=skill.sid;(2) 右外连接在连接的时候以右边的表为主,如果左边的表右边没有匹配的记录,给他添加一条空记录(3) 内连接两侧的表中记录有不匹配的项直接舍去
4)集合操作可以使用union将两个查询结果合并,MySQL只支持并集运算,不支持交集和差集(1) 两个结果中的字段数一样,对应的字段类型要兼容(2) 自动去除重复记录,不去除重复可以用 union all(3) order by要放在最后select * from stu where sex= '女' union select * from stu where grade_id=1;5)内部函数字符串函数函数          功能  char_length(str)            获取字符串的字符个数  length(str)         获取字符串的字节数   concat(s1, s2, ... , sn)            连接s1, s2, ..., sn 为一个字符串    lower(str)          将字符串str中所有的字符转换为小写  upper(str)          将字符串str中所有的字符转换为大写  left(str, x)            返回字符串str最左边的x个字符    right(str, y)           返回字符串str最右边的y个字符    lpad(str, n, pad)           用字符串pad对str最左边进行填充, 直到长度为n个字符长度  rpad(str, n, pad)           用字符串pad对str最右边进行填充, 直到长度为n个字符长度  ltrim(str)          去掉str中最左边的空格    rtrim(str)          去掉str中最右边的空格    trim(str)           去掉字符串str两边的空格   repeat(str, x)          返回str中重复出现x次的结果 replace(str, a, b)          将字符串str中的a更换为b  insert(str, x, y, instr)            将字符串str从第x位置开始, y个字符长度的子字符串替换为字符串instr   strcmp(s1, s2)            比较字符串s1, s2 substring(str, x, y)            返回字符串str x位置开始y个字符长度的字符串(下标从1开始)  日期函数函数名         功能  curdate()           得到当前日期  curtime()           得到当前时间  now()           得到当前日期和时间   date            获取日期    year(date)          得到date的年份   month(date)         得到date的月份   day(date)           得到date的天    hour(time)          得到time的小时   minute(time)            得到time 的分钟  second(time)            得到time的秒    week(date)          得到date是一年中的第几周  date_format(date,fmt)           按格式化串fmt返回date的日期字符串    select DATE_FORMAT(now(),'%Y- %m-%d %H:%i:%s');       数学函数函数名         功能  abs(x)          求x的绝对值  ceil(x)         向上取整    floor(x)            向下取整    round(x,d)          四舍五入,d为保留小数的位数   pow(x,y)            x的y次幂   rand()          0~1之间的随机小数  mod(x,y)            等同于x % y,求x对y的模 其它函数函数名         功能  convert(expr ,type)/cast(expr as type)          将表达式expr转换为type类型,type可以是:char(n)、date、datetime、integer、decimal   md5(str)            计算str的哈希值,返回一个 32位十六进制数字的二进制字符串  sha1(str)/sha(str)          计算str的哈希值,返回一个 40位十六进制数字的二进制字符串          #内部函数可以在任何地方直接对字段使用

2.8 数据控制

1)事务事务把一组操作看成是一个整体,要么都操作成功,要么就都操作失败数据库的引擎:引擎是驱动数据库系统工作的核心,MySQL数据库常见的引擎有, myisam,innidb,archive, ndb, memory 等表的数据库引擎操作是 innodb,innodb可以支持事务,myisam不知处事务修改表的引擎 :alter table 表名 engine=innodb;提交:MySQL数据库默认的提交事务是自动提交,我们写的sql语句一旦执行,产生的数据就会直接被提交到数据库中保存,如果不是自动提交,产生的数据首先会在内存的缓存区域保存,然后我们手动的提交以后才能把数据存入数据库表。查询是否是自动提交:select @@autocommit            #如果为0则是手动,为1则是自动设置自动提交方式:set autocommit=0;           #为0关闭自动变成手动,为1则开启自动手动提交commit;回滚:在内存的缓存区操作,我们执行了sql语句产生的数据首先存入内存的缓存区,我们可以通过回滚将本次操作产生的数据从缓存中撤回(在提交之前,如果已经提交无法撤回)rollback;
2)授权管理创建一个用户create user '用户名 '@'服务器地址' identified by '密码';删除用户drop user '用户名'@'服务器地址';修改当前用户密码set password=password('123456');修改其他用户密码set password for '用户名'@'服务器' = password('123456');刷新flush privileges;授权grant 权限 on 数据库.表 to '用户名'@'服务器';grant select on jiaowudb.renwu to 'lemonc'@'%';grant all on  *.* to 'lemonc'@'%';#all代表所有权限,*.*代表所有的表权限包括: select,insert,update,alter,drop等回收权限revoke select on testdb.test from 'lemonc'@'%';

2.9 外键

如果表A的主关键字是表B的一个字段,则称该字段为表B的外键,此时表A为主表,表B为表A的从表
1)数据库表的引擎必须是innodb
2)主表和从表的相关外键字段类型必须兼容
3)外键的取值:要么为空,要么从主表的主键中取#添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY  (从表的外键列) REFERENCES  主表名 (主键列)
[ON DELETE reference_option]
[ON DELETE reference_option]reference_option:RESTRICT、CASVADE、SET NULL、NO ACTION1)CASCADE:从父表中删除或者更新对应的行,同时会删除或者更新子表中匹配的行2)NO ACTION: Innodb拒绝删除或者更新父表3)SET NULL:从父表中删除或者更新对应的行,同时会把子表中的对应行的外键置空4)RESTRICT:拒绝更新父表#删除外键
ALTER TABLE 从表 DROP FOREIGN KEY 外键名:
2)关系表的对应1)一对一表A中的每一条记录在表B中有且只有一条和它对应2)一对多表A中每一条记录在表B中可以有多条记录和它对应表A作为主表,表B作为表A从表3)多对多表A中的每一条记录在表B中有多条和他对应,表B中的每一条记录在表A中也可以由多条和它对应多对多的关系需要一个关系表C来体现C既做A的从表,又做B的从表

2.9 索引视图

1)索引索引就相当于图书的目录,可以加速查询索引的特点:加速检索,保证数据的唯一性,降低分组、排序的时间索引的缺点:占用空间,降低增删改查的效率不建立索引的情况:频繁更新的字段不建议建索引,没有出现where、having的字段不建议建索引、数据量少的表没有必要建索引,唯一性比较差的字段不要建索引索引分类:普通索引creat index 索引名 on 表名(字段 asc/desc);       #默认是asc唯一索引#唯一索引所在列 不能有重复值create unique index 索引名 on 表名(字段 asc / desc);        默认是 asc主键索引创建表,主键索引会自动添加,要求在主键上不能有重复值复合索引使用联合索引,必须包含前缀aa,ba,b,c全文索引一般会用全文索引服务器,不会直接创建索引删除索引drop index 索引名 on 表名;查看索引show index from 表名; 用 explain关键字来查看是否使用了索引explain select * from skill where name = '乾坤大挪移''explain select * from skill where level=80;type:all             代表全盘扫描index     使用索引range       在指定范围内查找const       常量查询其他创建索引的方式:alter table 表名 add index(字段1,字段2,...);alter table 表名 add primary key(字段1,字段2,...);         alter table 表名 add unique(字段1,字段2,...);alter table 表名 add fulltext(字段1,字段2,...);        2)视图有时候经常会遇到复杂的查询,写起来比较麻烦,这个时候我们可以使用试图来简化查询。试图就是固化sql语句,可以不把视图看作基本表使用创建试图create view 试图名(字段列表) as select语句;删除试图drop view 视图名;查询试图的创建语句show create view 视图名;

2.x 数据库的备份与恢复

备份不用登陆MySQL,直接执行mysqldump指令,将数据库备份到指定的家目录下或者文件夹下mysqldump -uroot -p 数据库名 > ~/备份目录/备份文件名.sql;恢复首先要创建一个数据库,然后退出MySQL,执行恢复指令mysql -uroot -p 数据库名 < ~/备份目录/备份文件名.sql;

2.11 pymysql与MySQL数据库操作

import pymysql#创建一个Mysql链接
link = pymysql.connect(host='114.55.253.63',port=3306,user='lemonc',password='123456',db='wuxiadb',charset='utf8')
print(link)     #<pymysql.connections.Connection object at 0x7fcb7405e518>#创建游标
cursor = link.cursor()
print(cursor)# #执行sql语句
# #创建一条sql语句
# sql = "INSERT INTO renji VALUE(NULL,2,4,90.5)"
#
# #执行sql语句
# num = cursor.execute(sql)
# print(num)sql = "SELECT * FROM renji"
res = cursor.execute(sql)
print(res)         #res中记录的是游标执行完sql语句获取到的数据集中的对象个数#获取数据集
result = cursor.fetchall()
print(result)#提交
link.commit()#关闭连接和游标
cursor.close()
link.close()

MySQL数据库整理相关推荐

  1. MySQL数据库查看表占用空间大小及碎片整理

    查询数据库所占空间 1 2 3 select concat(round(sum(data_length/1024/1024),2),'MB') as data from  information_sc ...

  2. 使用php从网络访问mysql数据库,使用PHP从web访问mysql数据库

    一. web数据库构架的工作原理 1. 用户由浏览器发出HTTP请求,请求特定的web页面. 2. web服务器接受接收到对特定页面的请求,检索相应文件,并将其传递给php引擎处理. 3. php引擎 ...

  3. MySQL数据库字符集和整理

    MySQL数据库字符集和整理(2009-11-20 22:23:37) mysql数据库 it    其实这个表在MySQL数据库中通过phpMyAdmin就能看到,icech只是把表格整理了一下方便 ...

  4. mysql数据库 常用函数_《MySQL数据库》常用函数整理

    原标题:<MySQL数据库>常用函数整理 以下内容,是我整理出来的比较常用的字符串函数,数值函数,日期函数. 第一类:字符串函数 1.conv(n,from_base,to_base):对 ...

  5. 整理了MariaDB和MySQL数据库历年发布版本和对应关系,方便记忆命令。

    一,目前最新版本 MariaDB 10.5.8 10.4.17 10.3.27 10.2.36 MySQL 8.0.23 二,oracle MySQL版本和MariaDB版本对应表: MariaDB版 ...

  6. 必看的100道MySQL数据库经典面试题解析,已整理成文档

    前言 最近刷到了一句耐人寻味的话,"解决雪崩问题的最好办法是不发生雪崩". 不论是在硅谷互联网公司里还是在国内的互联网平台上,曾多次遇到过海量规模的交易瞬间吞噬平台的悲惨故事. 核 ...

  7. JAVA+MySQL 数据库课设的问题及解答的整理 以【学生管理系统】为例

    JAVA+MySQL 数据库课设的问题及解答的整理 以[学生管理系统]为例.帅气学长哦! 编写这篇博文初衷 MySQL的一些问题 Eclipse导入项目的一些问题 数据库的建立和连接 最后一步 编写这 ...

  8. mysql数据库的优化整理之查询优化

    作为程序员,天天都要和数据库打交道,而且以mysql居多,而数据库的优化,也是一个老生常谈的话题.今天我就整理一下mysql数据库的优化方式. 开始: 首先是查询优化: 一条查询语句在数据库中执行,如 ...

  9. MySQL数据库基础到进阶笔记整理包含事务、SQL优化、锁等内容

    写在前面 本文是在学习MySQL数据库时整理的笔记,可供初学者学习 是在https://dhc.pythonanywhere.com/entry/share/?key=12e4a7324f68371d ...

最新文章

  1. 在Oracle 11g中用看Oracle的共享内存段---------IPCS
  2. Tomcat和搜索引擎网络爬虫的攻防
  3. CSS 背景尺寸 background-size属性
  4. ISA频繁断线的原因和解决方法
  5. (转载)Cocos2dx-OpenGL ES2.0教程:初识MVP(3)
  6. 只返回数据表的部分字段(不建类)
  7. 基于Altium Designer的4层PCB板的绘制
  8. 使用密码字典暴力破解加密rar、zip压缩文件
  9. CAD系统与PDM系统集成技术研究
  10. 整天说“B超”,你知道“B”指的是什么吗?
  11. PyS60开发环境搭建
  12. 算法与程序的区别与联系
  13. 如何批量将图片转换为 PDF 文档
  14. python爬取奇书网小说
  15. SICP Python 描述 中文版
  16. 让电代替人工去计算——机电时期的权宜之计
  17. 【数据结构(25)】5.7 哈夫曼树及其应用
  18. 地统计工具异常值查询和趋势分析
  19. object-c中的对象的释放
  20. ab压力测试 及结果分析

热门文章

  1. 宝塔面板修改默认的放行端口8888为8001并且生效
  2. C语言二维数求矩阵每行的最大值与最小值
  3. 数据驾驶舱只是面子工程?它的真正作用你根本就不了解
  4. python从文件中读取数据_【Python】从文件中读取数据
  5. 什么样的项目适合UI自动化测试
  6. 转载和积累系列 - L4负载均衡的设计与实现
  7. bootstrap的学习-基础样式和排版一
  8. 计算机体系结构--进制及其运算
  9. 应用程序无法正常启动(oxc000007b):解决方案
  10. 判断闰年(YZOJ-1045)