MySQL数据库
一、mysql数据库简介
1、MySQL
MySQL数据库是一个多用户、多线程的SQL数据库,是一个客户机/服务器结构的应用,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。
2、存储数据的方法
第一种方法:用大脑来记住数据。
第二种方法:写在纸上。
第三种方法:写在计算机的内存中。
第四种方法:写成磁盘文件。
3、数据库可以做什么?
存储大量数据,方便检索和访问;保持数据信息的一致、完整、共享和安全;通过组合分析,产生新的有用信息。
4、数据库的作用及要求
4.1、作用:存储数据、检索数据、生成新的数据。
4.2、要求:统一、安全、性能等
5、时下流行的数据库
时下流行的数据库:Oracle数据库、SQL Server数据库、MySQL数据库。
6、数据库
数据就是“数据”的“仓库”;数据库中包含表、关系以及操作对象;数据存放在表中。
7、MySQL数据库的优势
7.1、运行速度快
7.2、使用成本低
7.3、可移植性强
7.4、适用用户广
8、MySQL数据库的版本
8.1、社区版:免费,开源;适合普通用户。
8.2、企业版:收费,不可自由下载;功能和服务更完善;适合对功能和安全要求高的企业用户。
9、MySQL数据库支持的接口
标准C的API、JDBC、CDBC、.NET、PHP、Python、Perl、Ruby、Cobol
二、数据表概述
1、约束性
约束性:组键PK:是唯一的;外键FK。
2、数据的完整性
数据的完整性:该有的要有,不该有的不要有。
3、域完整性
域完整性:int、varchar(String类型)
三、mysql数据库的简单命令
cmd后进入数据库:mysql -u root -p密码
例:mysql -u root -p123456
单行注释:#…;多行注释:/……/
多字段使用逗号分隔;保留字用撇号括起来;
显示中文:set names gbk;
查看数据库某一个表的字段等相关信息:desc 表名;
三、数据库的语法:
1、创建数据库:CREATE DATABASE 数据库名;
例:create database myschool;
2、查看数据库列表:show tables;
3、选择数据库:USE 数据库名;
例:use myschool;
4、删除数据库:DROP DATABASE 数据库名;
例:drop database myschool;
5、创建表:CREATE TABLE [IF NOT EXISTS] 表名 (字段1 数据类型 [字段属性|约束][索引][注释], ……,字段n 数据类型 [字段属性|约束][索引][注释])[表类型][表字符集][注释];
例:#创建学生表
create table student
(studentNo
INT(4) PRIMARY KEY, name
CHAR(10),……);
6、主键:create table student(studentNo
INT(4) PRIMARY KEY,……);
7、注释:create table test (id
int(11) unsigned comment‘编号’)COMMENT='测试表’;
8、设置字符集编码:CREATE TABLE [IF NOT EXISTS] 表名(#省略代码)CHARSET = 字符集名;
9、插入单条数据记录:INSERT INTO 表名 [(字段名列表)] VALUES (值列表);
例:insert into student
( loginPwd
, studentName
, gradeld
, phone
, bornDate
) values (‘123’, ‘黄小平’, 1, ‘13956799999’, ‘1996-5-8’);
10、插入多条数据记录:INSERT INTO 新表(字段名列表) VALUES(值列表1),(值列表2),……,(值列表n);
例:insert into subject
(subjectName
, classHour
, gradeID
) values (Logic Java
,220,1), (HTML
,160,1), (Java OOP
,230,2);
11、将查询结果插入新表:CREATE TABLE 新表(SELECT 字段1,字段2, …… FROM 原表);
例:create table phoneList
( SELECT studentName
,phone
from student
);
例:create table phoneList
( SELECT studentName
,phone
from student
);
12、数据更新:UPDATE 表名 SET 字段1=值1,字段2=值2,…,字段n=值n [WHERE 条件];
例:update student set sex = ‘女’;
update student set address = ‘北京女子职业技术学校家政班’ where address = ‘北京女子职业技术学校刺绣班’;
13、删除数据记录:DELETE FROM 表名 [WHERE条件];
TRUNCATE TABLE 表名;
例:delete from student WHERE studentName = ‘王宝宝’;
truncate table student;
14、查询语法:SELECT <列名|表达式|函数|常量> FROM <表名> [WHERE <查询条件表达式>] [ORDER BY <排序的列名>[ASC或DESC]];
例:select studentNo
,studentName
,phone
,address
,bornDate
from student
where gradeId
= 1 order by studentNo
;
15、查询全部的行和列:select * from student
;
16、查询部分列:SELECT studentNo
,studentName
,address
FROM student
where address
=‘河南新乡’;
17、使用AS命名:SELECT studentNo
AS 学生编号,studentName
AS 学生姓名, address
AS 学生地址 FROM student
WHERE address
<> ‘河南新乡’;
例:select firstName
+ ‘.’ + lastName
as 姓名 from employees
;
注意:
-
- 连接的数据类型必须兼容
- 如果 + 连接字符型数据,结果为字符串数据的连接
- 如果 + 连接数值型数据,结果为数值的和
18、查询空行:SELECTstudentName
FROMstudent
WHEREemail
IS NULL;
例:selectstudentName
as 姓名,address
as 地址,‘北京信息中心’ as 学校名称 fromstudent
;
19、聚合函数
函数名 | 作用 |
---|---|
AVG() | 返回某字段的平均值 |
COUNT() | 返回某字段的行数 |
MAX() | 返回某字段的最大值 |
MIN() | 返回某字段的最小值 |
SUM() | 返回某字段的和 |
20、字符串函数
函数名 | 作用 | 举例 |
---|---|---|
CONCAT(str1,str1,…,strn) | 字符串连接 | select concat(‘My’,‘S’,‘QL’); 返回:MySQL |
INSERT(str,pos,len,newstr) | 字符串替换 | select insert(‘这是SQL Server数据库’,3,10,‘MySQL’); 返回:这是MySQL数据库 |
LOWER(str) | 将字符串转为小写 | select lower(‘MySQL’); 返回:mysql |
UPPER(str) | 将字符串转为大写 | select upper(‘MySQL’); 返回:MYSQL |
SUBSTRING(str,num,len) | 字符串截取 | sellect substring(‘JavaMySQLOracle’,5,5); 返回:MySQL |
21、ORDER BY子句(升序:asc 降序:desc):把成绩都降低10%后加5分,再查询及格成绩,并按照成绩从高到低排序。
select studentNo
as 学生编号,(studentResult*0.9+5 ) as 综合成绩 from result
where (studentResult
*0.9+5) >=60 order by studentResult desc;