小白上手Mysql数据库指南~~
数 据 库 原 理 及 简 单 操 作
一、数据库定义语言(DDL)及简单操作
1、登录数据库
mysql -u root -p 然后键入密码
2、数据库定义语言常用关键字
create 创建表
alter 修改表中对应的列
drop 删除表TRUNCATE 删除表中所有内容
3、数据库的增删查改
- 创建数据库: create database chen;
- 删除数据库: drop database wang;
- 查看系统里面有哪些数据库: show databases;
- 每一次进入一个数据库的时候,都要用use 加上数据库名字 ,表示使用它。
- 可用show create table chen; //最后一个chen,为表名。可以查看创建该表时的一些设定属性。
- 之后,便可以创建表了:比如:
create table Person1(personID int NOT NULL
AUTO_INCREMENT,PRIMARY KEY(personID),FirstName
varchar(15),LastName varchar(15),Age int);
- 也可以在int后面加上成绩信息:score, float 等。
- 删除表:可以用drop table chen; 最后为表名。
- 选中查看表格为:select * from chen; *表示表格所有内容,最后一个为表名
4、修改表的某一行----alter的使用
修改表:使用alter table 语句 追加, 修改, 或删除列的语法。
例如:
//增加一列
alter table persons add addr varchar(15);
//修改列名addr为addr1
alter table persons change addr addr1 varchar(15);
//删除表格中某一列
alter table score drop column chen; score为表名,chen为列名
注:关于数据库常见数据类型后面补。
二、数据库操纵语言(DML)
1、数据操纵语言常用关键字
insert update delete //插入 修改 删除
2、操纵语言的一些实例:
- //使用insert 语句向表中插入数据
- insert into persons (FirstName,LastName,Age) values('Peter','bob','40');
- //通过使用 update语句修改表中数据
//语法为:set子句指示要修改哪些列和要给予哪些值。where子句指定应更新哪
些行。如没有where子句,则更新所有的行。
- update persons set LastName='sky' where personID=2;
- 要修改where处的personID=2所对应的LastName的值改为sky项。
- 使用 delete语句删除表中数据:是删除的是where处设定的那一行。
- 如果不使用where子句,将删除表中所有数据。Delete语句不能删除某一列的值(可使用update)使用delete语句仅删除记录,不删除表本身。
- delete from persons where personID=2;
注:如要删除表,使用drop table语句。 同insert和update一样,从一个表中删除
记录将引起其它表的参照完整性问题,在修改数据库数据时,头脑中应该始终不
要忘记这个潜在的问题。
三、简单的数据查询语言(DQL)
1、常用关键字: select
语法:Select 指定查询哪些列的数据。
column指定列名。 *号代表查询所有列。from指定查询哪张表。distinct可选,指显示结果时,是否剔除重复数据
2、Select的用法
在select语句中可使用表达式对查询的列进行运算eg:可进行对应的加减乘除
select gongzi+score from score;
select gongzi*score from score;
在select语句中可使用as语句 来给对应的列起别名。
select column as 别名 from 表名;
select语句使用order by 子句排序查询结果。
select column1, column2. column3.. from table; order by column asc|desc //asc 递增升序 //desc 表示降序
语法:order by 指定排序的列,排序的列即可是表中的列名,也可以是select 语句后指定的列名。
asc 升序、desc 降序
order by子句应位于select语句的结尾
3、select语句在where子句中经常使用的运算符:
4、数据完整性简介及主键的作用
数据完整性定义:
数据完整性主要分为以下三类:实体完整性: 规定表的一行(即每一条记录)在表中是唯一的实体。实体完整性通过表的主键来实现。域完整性: 指数据库表的列(即字段)必须符合某种特定的数据类型或约束。比如NOT NULL。参照完整性: 保证一个表的外键和另一个表的主键对应。
数据库主键阐述:一个表只能有一个PRIMARY KEY约束,而且PRIMARY KEY约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。
主键的作用 : 1)保证实体的完整性;
2)加快数据库的操作速度
3) 在表中添加新记录时,会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。 4) 自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
创建外键例子:
create table pats(patID int NOT NULL AUTO_INCREMENT,PRIMARY KEY(patID),person1ID int default NULL,FOREIGN KEY (person1ID) REFERENCES persons(personID));
5、定义表的约束
定义表的约束:
定义主键约束 primary key:不允许为空,不允许重复(可以区分两条记录的唯一性)
删除主键:alter table tablename drop primary key ;
定义主键自动增长 auto_increment
定义唯一约束 unique
定义非空约束 not null
定义外键约束 constraint ordersid_FK foreign key(ordersid) references orders(id),
四、数据库常见的数据类型
五、数据查询语言(实用篇)
1、连接查询类别
交叉连接(cross join):不带on子句,返回连接表中所有数据行的笛卡儿积。
内连接(inner join):返回连接表中符合连接条件及查询条件的数据行。
外连接:分为左外连接(left out join)、右外连接(right outer join)。
与内连接不同的是,外连接不仅返回连接表中符合连接条件及查询条件的数据行,也返回左表(左外连接时)或右表(右外连接时)中仅符合查询条件但不符合连接条件的数据行。
例:交叉连接查询CUSTOMER表和ORDERS表 SELECT * FROM customer CROSS JOIN orders;
2、内连接
内连接分三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结 果中列出被连接表中的所有列,包括其中的重复列。
例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:select * from authors as a inner join publishers as p on a.city=p.city
2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
3、左外连接查询
使用left outer join关键字,在on子句中设定连接条件
SELECT * FROM customer as c LEFT OUTER JOIN orders as o ON c.id=o.customer_id;
不仅包含符合c.id=o.customer_id连接条件的数据行,还包含左表中的其他数据行联合查询能够合并两条查询语句的查询结果,去掉其中的重复数据行,然后返回没有重复数据行的查询结果。
联合查询使用union关键字
eg:
SELECT * FROM orders WHERE price>100 UNION
SELECT * FROM orders WHERE customer_id=1;
注意:联合查询的各子查询使用的表结构应该相同,同时两个子查询返回的列也应相同
4、报表查询对数据行进行分组统计
其语法格式为: select … from … [where…] [ group by … [having… ]] [ order by … ]其中group by 子句指定按照哪些字段分组,having子句设定分组查询条件。
5、常见统计函数
count() sum() avg() max() min()
- Count(列名)返回某一列,行的总数(有多少条记录)
- Select count(*)|count(列名) from tablename [WHERE where_definition] //其中|就是或者的意思
- Sum函数返回满足where条件的行的和
- Select sum(列名){,sum(列名)…} from tablename [WHERE where_definition]
- AVG函数返回满足where条件的一列的平均值
- Select avg(列名){,avg(列名)…} from tablename [WHERE where_definition]
- Max/min函数返回满足where条件的一列的最大/最小值
- Select max(列名) from tablename [WHERE where_definition]
6、group by 子句的使用
elect语句使用group by 子句对列进行分组
SELECT column1, column2. column3.. FROM table; group by column
Select语句使用having 子句过滤
SELECT column1, column2. column3.. FROM table; group by column having ...
7、数据库备份
数据库备份: cmd命令下 mysqldump -u root -p test>test.sql数据库恢复:
创建数据库并选择该数据库 在cmd命令下:mysql -u root -p test<test.sql
或者: 在mysql >命令行下 执行 SOURCE 数据库文件
小白上手Mysql数据库指南~~相关推荐
- xampp安装教程,新建数据库,小白上手MySQL
XAMPP安装教程–sql语言-mysql-数据库,小白上手简单明了,如何新建数据库? 前几天需要下载MySQL来编写数据库,然后就自己下载xampp,里头包括Apache+MySQL+PHP+PER ...
- 小白学习MySQL - 数据库软件和初始化安装
作为个人学习环境来说,搭建一套VMWare的环境,算是性价比最高的一种选择,当然你可以购买一些公有云服务器(有些则是免费的,例如Oracle Cloud,可参考<Oracle Cloud云端账号 ...
- php mysql数据库 指南_用 PHP 创建 MySQL 数据库
创建一个数据库 创建和删除数据库你应该有管理特权.它很容易创建一个新的 MySQL 数据库.PHP 使用 mysql_query 函数创建一个MySQL 数据库.这个函数接受两个参数执行成功并返回 T ...
- 小白学习MySQL - 一次慢SQL的定位
同事提了个问题,某套测试环境MySQL执行语句出现hang. 作为小白,每次碰到问题,都是在积累经验.执行SQL出现hang,说明应该有会话处于等待状态,可以通过show processlist看下当 ...
- 小白学习MySQL - 不同版本创建用户的些许区别
MySQL创建用户有很多种方法,例如常规create user,再通过grant,授予权限,还可直接grant连带创建用户和授权一起做了.最近创建过程中,发现不同版本操作有些区别. MySQL 5.7 ...
- 小白学习MySQL - 聊聊数据备份的重要性
最近某套MySQL数据库服务器异常关机,导致MySQL不能正常拉起来,启动过程中,error日志中记录了如下的信息,可以看到,数据库因为异常关闭,此时会进行实例恢复的操作, [Note] InnoDB ...
- 小白学习MySQL - 增量统计SQL的需求
这篇文章在爱可生开源社区首发<技术分享 | MySQL中一个聚类增量统计 SQL 的需求>. 同事提了一个MySQL数据库中SQL增量统计的问题,我用测试数据模拟一下,测试表tt有三个字段 ...
- 小白学习MySQL - Generated Columns功能
碰巧看到MySQL有这种的语法"INTEGER GENERATED ALWAYS AS IDENTITY",一知半解,了解一下. 官方文档介绍了这种Generated Column ...
- 小白学习MySQL - varchar类型字段为什么经常定义成255?
很多时候我们看到一些表字符串类型的字段定义为varchar(255),开始以为varchar只能定义为255这个长度值,其实不然. 官方文档所说,varchar有效的最大长度取决于行的容量,以及用的字 ...
最新文章
- MySQL 5.5单实例 编译安装
- ubuntu vscode上使用cmake、编译、调试
- Qt写ini配置文件
- TensorFlow for Hackers - Part II
- linux系统让一个命令在后台运行,Linux——Linux后台运行命令详述
- SAP Commerce开发时的Spring学习要点记录
- 五轴加工的RTCP技术
- 华为鸿蒙等不急了,华为最强巨作,鸿蒙OS+六摄+麒麟985,网友:等不及了!
- Altium Designer哪里下载和导入元件库_图文教程
- 一位工作了10年的C++程序员总结出这些忠告
- Deformable CNNs论文笔记
- mysql5.6配置区分大小写
- leetcode算法题第三题(c++)
- python内存泄漏解决方案_Python内存泄漏和内存溢出的解决方案
- Youzi2D推出开源HTML5游戏加速引擎
- 成功三大定律:荷花定律、金蝉定律、竹子定律
- STC12C5A60S2独立PWM
- self.view.window, self.view.superView的意思
- 世界最快的超级计算机 神威太湖之光,揭秘全国产世界最快超级计算机“神威·太湖之光”(组图)...
- 测试用例(微信发朋友圈/评论/点赞/搜索/购物车)
热门文章
- 新建文件的UID和GID
- a=a+b和a+=b的区别
- 移动发布手机病毒警示信息 发现六种新型病毒
- 蓝桥杯第八届省赛JAVA真题----拉马车
- img 错误样式css,css设置图片大小_css 控制img图片的大小样式
- itextpdf添加表格元素_java使用iText生成pdf表格详解
- Redis基础-下载安装配置
- oracle 数据库字段html显示正常text显示不全,layui表格字段表格显示不全(自适应)...
- linux编译mesa,如何在Ubuntu 16.04,17.10中安装Mesa 17.3.3
- python董付国教程_董付国老师python教学——学习笔记(一)