数据库微课(持续更新)
第一节.数据库基本简介
什么是库?
库是用来存放n张表
什么是表?
在数据库中,表(table)类似于excel,可以用来存放数据
字段:类似于excel中的表头
数据类型:字符串(varchar),整数(tinyint,int,bigint),小数(float),日期(Data)
什么是数据?
文本,视频,图片,音频等
第二节.创建数据库
语法规则:
create database 库名;
删除指定数据库:drop database 库名
在创建库时,希望指定编码语法:create database 库名 character set 编码名
第三节.表的创建及其信息的录入
创建表语法:
CREATE TABLE 表名(
字段1 数据类型,
字段2 数据类型,
....
)
由于先有库(database),然后在库中创建表(table)
选中某一个数据库:use 库名;
创建例子:
CREATE TABLE Java成绩表(
姓名 VARCHAR(20),
班级 VARCHAR(20),
Java成绩 FLOAT
)
删除指定表格语法:drop table 表名;
DROP TABLE java成绩表;
-往表中添加,删除,修改,查询数据(CRUD)-
往指定的表中添加数据:insert into 表名(字段1,字段2....)value(值1,值2....)
INSERT INTO java成绩表(姓名,班级,java成绩) VALUES('王二麻子','dt55',90.5);
INSERT INTO java成绩表(姓名) VALUES('王五');
注意:在插入时,可以省略表后面的字段名,但前提是values关键字后面的字段值数量必须与表字段数一致
INSERT INTO java成绩表 VALUES('王二麻子','dt55',90.5);
插入数据的第二种语法:insert into 表名 set 字段名1=字段值1,字段名2=字段值2...
如果“=”是放在set关键字后面,则是“赋值运算符”
INSERT INTO java成绩表 SET 姓名='李四';
同时插入多条数据
INSERT INTO java成绩表(姓名,班级,java成绩)
VALUES('abc','dt55',90.5),('def','dt55',90.5),('fgh','dt55',90.5);
删除数据语法:delete from 表名 where 条件
如果“=”放在where关键字后面,则是“关系运算符”
DELETE FROM java成绩表 WHERE 姓名='李四';
第四节.运算符
1.关系运算符
在mysql中常用的关系运算符有:=(等于),>(大于),>=(大于等于),<(小于),<=(小于等于),!=(不等于)
在mysql中关系运算符放在where之后
查询语法规则:select 字段1,字段2...from 表名 [where 条件]
例:
查询某一张表中的所有数据记录
SELECT 姓名,班级,java成绩 FROM java成绩表;
SELECT 姓名 FROM java成绩表;
SELECT * FROM java成绩表;
注:"*"代表查询某一张表的所有字段
查看java成绩表中java成绩>=60的所有学生的名字
SELECT 姓名 AS 名字 FROM java成绩表 WHERE java成绩>=60;
在查询数据的时候,可以通过as来给某一个字段取别名
SELECT 姓名 as username FROM java成绩表 WHERE java成绩>=60;
2.逻辑运算符
在mysql中常见的逻辑运算符有:与(and),或(or),非(not)
查询java成绩表中班级为b班且java成绩>70的学生姓名
SELECT 姓名 FROM java成绩表 WHERE 班级=’b’ java成绩>70;
作业:
1.创建一个库,在库下创建一张student表
(1)students表中的字段有:id(int类型),stuName(varchar类型),weight(体重,float类型)。
(2)往students表中同时插入3条数据。
(3)查询students表中的信息,为每个字段取一个别名:id(主键),stuName(学生名字),weight(体重),age(年龄)。
注:作业做完可以联系本作者,可免费检查正确与否。
第五节.对表数据的增(insert)
删(delete)改(update)查(select)
修改语法:update 表名 set 字段名1=值1,字段名2=值2....where 条件
例:
UPDATE students SET stuName='司马平波',age=18 WHERE id=1;
全改
UPDATE students SET age=25 WHERE 1=1;
删除students表中的所有数据(找不回来的,谨慎使用)
DELETE FROM students WHERE 1=1;
对sql语句进行分类
数据库查询语言:DQL(database QUERY Language) 对表的查询,select
数据库定义语言:DDL(database defined Language) create
database,drop database,create table,drop
table等
数据库操作语言:DML(database manage Language) update
insert,delete
DDL之操作数据库:
添加数据库:create database 库名【character set utf8/gbk】
删除指定数据库:drop database 库名
查询指定库的详细信息:
(1)SHOW CREATE DATABASE 库名;查看某一个数据库详细信息。
(2)SHOW DATABASES:查看mysql服务器下所有库。
(3)查看:
当前用户连接的是哪个数据库:select DATABASE();
(4)查看指定的数据库下有哪些表:show TABLES;
练习:创建一个库,在库下创建一张表(bank)
字段要求:
id(编号) int,bankNo(卡号) varchar,username() varchar,money(余额) float
第六节.DDL之对表的增删改查
创建一张表
CREATE TABLE 表名(字段名1 数据类型,..........);
删除表:drop table 表名;
查询:
(1),查询某一张表的结构:
desc 表名
例:
DESC bank;
(2),打印某一张表sql创建信息:show CREATE TABLE 表名;
例:
SHOW CREATE TABLE bank
修改表:
(1),对已经存的表进行重命名:rename TABLE 旧表名 TO 新表名;
例:
RENAME TABLE yinghang TO bank;
SELECT * FROM yinghang;
(2),往已经存在的表中添加字段信息:alter TABLE 表名 ADD 字段名 数据类型;
例:
ALTER TABLE bank ADD gender VARCHAR(2);
(3),删除某一张表中的字段:
alter TABLE 表名 DROP 被删除的字段名;
例:
ALTER TABLE bank DROP gender;
(4),对某一字段进行重命名:
alter TABLE 表名 CHANGE 旧字段名 新字段名 新字段名数据类型
例:
ALTER TABLE bank CHANGE aaa username VARCHAR(20);
(5),修改某一个字段数据类型长度:ALTER TABLE bank CHANGE bankNo
bankNo VARCHAR(25);
往bank表中添加一个字段birthday
ALTER TABLE bank ADD birthday DATE;
date类型只有年月日
UPDATE bank SET birthday=
'2000-2-28'WHERE id=1;
ALTER TABLE bank CHANGE birthday
birthday DATETIME;
datetime:年月日时分秒
第七节.对某一个数据库的备份与还原
第一种:
通过命令mysqldump -uroot -p密码
需要备份的数据库名>c:\备份后的sql脚本名;
例:
cmd--->mysqldump -uroot -proot dt55_account>c:\dt55_account_back.sql
还原备份的文件数据:
首先进入到mysql环境--->创建一个库---->在库下还原数据
------>source 备份数据库的脚本
source c:\dt55_account_back.sql
第二种通过图形化界面工具:选中需要备份的数据库---->右键--->备份/导出----转储到sql
训练
创建出版社信息表
数据库微课(持续更新)补充内容:
数据类型的属性
mysql中常见的数据类型:varchar(n),float,int(n),bigint(n),date,datetime,text
默认值:default '默认值'
非空:not null
自动增长:auto_increment,尽量作用在int类型的字段上
主键:primary key,不能够重复,一张表中只有一个字段可以作为主键
唯一键:unique
两种删除方式的区别:
DELETE FROM students WHERE 1=1;
适用于只删除单条数据,删除数据后,自增列不会从1开始
TRUNCATE TABLE students;
删除整个表的数据,如果字段是自增的,则重新从1开始