<p>SQL:</p>
讯享网
Structured Query Language结构化的查询语言,用来对数据库进行查询、更新和管理的一种特殊的语言。DML是SQL语言的核心。
包含三个部分:
- DML
Data Manipulation language数据操纵语言
用于检索或更新数据库表:insert、delete、update、select增删改查
- DDL
Data Defination language数据定义语言
用于定义的数据的结构:create alter drop
- DCL
Data Control language数据控制语言
用于定义数据库用户的权限:grant revoke
1、数据类型
整数型:smallint、int、bigint
小数型:float、double
日期时间:date、time、datetime、timestamp
字符串:varchar、char,text
其他:clob存储文本大数据
blod存储二进制大数据
2、创建表
语法:
Plain Textcreate table 表名( 列名 数据类型 特征, – 字段名 属性名 列名 数据类型 特征, …… 列名 数据类型 特征)charset=utf8;
示例:
Plain Textcreate table t_user( id int, username varchar(20), password varchar(50));
SQlcreate table t_student( id int primary key auto_increment, – 将id设为主键 自动增长 默认从1开始,每次递增 name varchar(10) not null, – 不允许为空 age int, sex varchar(8) not null default ‘男’, – 指定默认值 address varchar(100), height double, birthday date)charset=utf8;
SQlinsert into t_student(name,age,sex,birthday,height) values(‘张无忌’,21,‘男’,‘2002-10-9’,176.3);insert into t_student(name,age,birthday,height) values(‘张三丰’,21,‘2002-10-9’,176.3);insert into t_student(name,age,sex) values(null,22,‘女’);insert into t_student values(‘钱多多’,20,‘女’,‘南京’,172.1,now());
2、创建表
语法:
Plain Textcreate table 表名( 列名 数据类型 特征, – 字段名 属性名 列名 数据类型 特征, …… 列名 数据类型 特征)charset=utf8;
示例:
Plain Textcreate table t_user( id int, username varchar(20), password varchar(50));
SQlcreate table t_student( id int primary key auto_increment, – 将id设为主键 自动增长 默认从1开始,每次递增 name varchar(10) not null, – 不允许为空 age int, sex varchar(8) not null default ‘男’, – 指定默认值 address varchar(100), height double, birthday date)charset=utf8;
SQlinsert into t_student(name,age,sex,birthday,height) values(‘张无忌’,21,‘男’,‘2002-10-9’,176.3);insert into t_student(name,age,birthday,height) values(‘张三丰’,21,‘2002-10-9’,176.3);insert into t_student(name,age,sex) values(null,22,‘女’);insert into t_student values(‘钱多多’,20,‘女’,‘南京’,172.1,now());
5、截断表
清空表中的数据,作法类似于无条件的delete语句
语法:
truncate table 表名;
示例:
truncate table t_student;
select * from t_student;
insert into t_student(name,gender) values(‘tom’,‘男’);
insert into t_student(name,gender) values(‘mike’,‘女’);
select * from t_student;
delete与truncate的区别:
- delete会记录日志,所以速度慢,而truncate不记录日志,清空表并释放资源,速度快
- delete可以指定条件只删除部分数据,而truncate只能用来清空表中所有数据
- delete不会将自动增长列归零,而truncate会使自动增长的列如id列归零
6、创建库
语法:
create database 数据库名 charset utf8;
create database if not exists 数据库名 charset utf8;
示例:
create database if not exists shop charset utf8;
7、删除库
语法:
drop database 数据库名;
drop database if exists 数据库名;
示例:
drop database if exists shop;
第八章:
1、查看所有表
show tables;
2、 创建表
前提:切换数据库,需要明确在哪个数据库中新建表
CREATE TABLE table_name ( – table_name 表名 特别说明:数据库名、表名都应该有一意义
column1_name data_type constraints, – 列名 类型 属性
column2_name data_type constraints,
….
)ENGINE=InnoDB DEFAULT CHARSET=utf8;– 存储引擎 字符集
3、示例:
创建一个用户表
CREATE TABLE users ( – 在DB数据库下新建一个user表
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL, – null值 表示是一个不确定的值
birth_date DATE,
phone VARCHAR(11) NOT NULL UNIQUE
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
主键:primary key 在一个表中至少应该有这样一个字段,这个字段所对应的值一不能有重复,二不能为空,这个字段所对应的值能够起到唯一标识表中每一条记录的作用。
上面的语句创建了一个名为users的表,其中包含5个字段id、name、birth_date和phone。注意,每个字段后面都有一个数据类型声明,表示该字段将存储何种类型的数据,例如:整数、字符串、日期等。
一、Mysql简介
1、介绍
1.1 什么是数据库?
数据库:database,数据的仓库(用来存放数据库对象)按照一定的数据
结构来组织、存储和管理的数据的仓库,简单来说就是存储数据的仓库。
数据库系统组成:DBS是由DB和DBMS两部分组成。
计算机硬件、DBMS、DB、DBA、DBAS。
DBS:数据库系统
DBMS:数据库管理系统—–系统软件,用来管理数据库的软件系统,常见
的DBMS有Mysql、oracle、Ms SQL server、DB2、sysbase、Access
等。
1.2 什么是mysql?
Mysql:是一个开源的关系型数据库管理系统,由瑞典Mysql AB公司开
发,后来被oracle公司收购,所以目前属于oracle公司。
特点:体积小、速度快、成本低、开源,中小型网站都使用Mysql数据
库。
版本:企业版Enterprise、社区版Community
DBA:Database Administrator数据库管理员1.3 数据、数据库、表
用户数据—>表(行、列)—>数据库
2、安装Mysql
2.1 版本
分平台:windows、Linux、MAC-OS
分版本:5.x、6.x、7.x、8.x
2.2 安装
安装位置:D:mysql-8.0.39-winx64
bin:可执行文件
data:数据库文件
my.ini or my.cnf核心配置文件
2.3 服务
安装Mysql之后,会在操作系统中添加一个mysql服务
需要先启动服务才能使用mysql;
[root@linux ~]# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; ena
Active: active (running) since 五 2024-09-13 00:53:36 CST;
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.ht
Main PID: 9437 (mysqld)
Tasks: 41
CGroup: /system.slice/mysqld.service
└─9437 /usr/local/mysql/bin/mysqld –defaults-file=
9月 13 00:53:36 linux.test.com systemd[1]: Started MySQL Serve
[root@linux ~]# systemctl start mysqld.service #开启mysql服务
[root@linux ~]# systemctl enable mysqld.service #设置开机自动启
二、基本操作
1、连接Mysql
语法:
mysql -u 用户名 -p密码 -h 数据库服务器的地址 -D 数据库名
安装Mysql以后,默认有一个管理员root
显示登录
隐式登录
2、查看数据库和表
show databases;—–查看当前所有数据库
use 数据库名;——-切换数据库
show tables;——-查看当前数据库中的所有表
select user();—–显示当前登陆的用户
select database();—-显示当前操作的数据库
mysql库属于系统数据库,包含mysql的相关系统信息,不要修改
3、导入初始数据
3.1 导入数据
准备好1个以.sql结尾的文件是数据库脚本文件
先连接登陆mysql数据库。然后执行如下命令:
source E:/init.sql;
3.2 表结构
知识点:
表结构:只有列名称(属性)的空表
表记录:所有记录的集合
EMP表 雇员表
source E:/init.sql;
desc 表名;—–查看表结构
select * from 表名; ——查看表中的所有记录
EMPNO int整型 雇员编号
ENMAE varchar可变长度的字符串 雇员姓名
JOB varchar可变长度的字符串 工作,职位
MGR int整型 上司或领导的编号
HIREDATE date日期 入职时间
SAL double双精度型小数 薪水、工资
COMM int整型 奖金
DEPTNO int整型 部门编号
列名 类型 含义
DEPTNO int整型 部门编号
DNAME varchar变长字符型 部门名
LOC varchar变长字符型 部门位置
DEP部门表
SALGRADE工资等级表列名 类型 含义
GRADE int整型 等级编号
LOSAL int整型 最低工资
HISAL int整型 最高工资
bouns奖金表
三、SQL简介
SQL:Structured Query Language结构化的查询语言,用来对数据库进
行查询、更新和管理的一种特殊的语言。DML是SQL语言的核心。
包含三个部分:
DML
Data Manipulation language数据操纵语言
用于检索或更新数据库表:insert、delete、update、select增删改查
DDL
Data Defination language数据定义语言
用于定义的数据的结构:create alter drop
DCL
Data Control language数据控制语言
用于定义数据库用户的权限:grant revoke
四、表和库的管理
1、数据类型
整数型:smallint、int、bigint
小数型:float、double
日期时间:date、time、datetime、timestamp
字符串:varchar、char,text
其他:clob存储文本大数据
blod存储二进制大数据
2、创建表
语法:
create table 表名
(
列名 数据类型 特征, – 字段名 属性名
列名 数据类型 特征,
……
列名 数据类型 特征
)charset=utf8;
示例:
create table t_user
(
id int,
username varchar(20),
password varchar(50)
);
create table t_student
(
id int primary key auto_increment, – 将id设为主键 自动增长
name varchar(10) not null, – 不允许为空
age int,
sex varchar(8) not null default ‘男’, – 指定默认值
address varchar(100),
height double,
birthday date
)charset=utf8;
insert into t_student(name,age,sex,birthday,height) values(‘张
insert into t_student(name,age,birthday,height) values(’张三丰
insert into t_student(name,age,sex) values(null,22,‘女’);
insert into t_student values(‘钱多多’,20,‘女’,‘南京’,172.1,now(
3、修改表
添加列
语法:
create table t_user
(
id int,
username varchar(20),
password varchar(50)
);

create table t_student
(
id int primary key auto_increment, – 将id设为主键 自动增长
name varchar(10) not null, – 不允许为空
age int,
sex varchar(8) not null default ‘男’, – 指定默认值
address varchar(100),
height double,
birthday date
)charset=utf8;
insert into t_student(name,age,sex,birthday,height) values(‘张
insert into t_student(name,age,birthday,height) values(’张三丰
insert into t_student(name,age,sex) values(null,22,‘女’);
insert into t_student values(‘钱多多’,20,‘女’,‘南京’,172.1,now(
示例:
在t_student表中增加1个名为weight体重字段,类型为双精度。
修改列的类型
语法:
示例:
将t_student表中name姓名字段的宽度修改为250。
修改列名
示例:
将t_student表中sex字段名称修改为gender。
alter table 表名 add 列名 数据类型;
alter table t_student add weight double;
alter table 表名 modify 列名 新数据类型;
alter table t_student modify name varchar(250);
alter table 表名 change 原列名 新列名 数据类型;
alter table t_student change sex gender varchar(8);
删除列
语法:
示例:
删除t_student表中weight列(字段)。
修改表名
语法:
示例:
将t_student表名修改为student。
4、删除表
语法:
alter table 表名 drop 列名;
alter table t_student drop weight;
alter table 原表名 rename 新表名;
或
rename table 原表名 to 新表名;
alter table t_student rename student;
rename table student to t_student;
示例:
删除test数据库中的t_user表?
5、截断表
清空表中的数据,作法类似于无条件的delete语句
语法:
示例:
delete与truncate的区别:
delete会记录日志,所以速度慢,而truncate不记录日志,清空表并释
放资源,速度快
drop table 表名;
drop table if exists 表名;
drop table t_user;
drop table if exists t_user;
truncate table 表名;
truncate table t_student;
select * from t_student;
insert into t_student(name,gender) values(‘tom’,‘男’);
insert into t_student(name,gender) values(‘mike’,‘女’);
select * from t_student;delete可以指定条件只删除部分数据,而truncate只能用来清空表中所
有数据
delete不会将自动增长列归零,而truncate会使自动增长的列如id列归
零
6、创建库
语法:
示例:
7、删除库
语法:
示例:
五、查询操作
create database 数据库名 charset utf8;
create database if not exists 数据库名 charset utf8;
create database if not exists shop charset utf8;
drop database 数据库名;
drop database if exists 数据库名;
drop database if exists shop;
4、删除表
语法:
alter table 表名 drop 列名;
alter table t_student drop weight;
alter table 原表名 rename 新表名;
或
rename table 原表名 to 新表名;
alter table t_student rename student;
rename table student to t_student;
示例:
删除test数据库中的t_user表?
5、截断表
清空表中的数据,作法类似于无条件的delete语句
语法:
示例:
delete与truncate的区别:
delete会记录日志,所以速度慢,而truncate不记录日志,清空表并释
放资源,速度快
drop table 表名;
drop table if exists 表名;
drop table t_user;
drop table if exists t_user;
truncate table 表名;
truncate table t_student;
select * from t_student;
insert into t_student(name,gender) values(‘tom’,‘男’);
insert into t_student(name,gender) values(‘mike’,‘女’);
select * from tstudent;delete可以指定条件只删除部分数据,而truncate只能用来清空表中所
有数据
delete不会将自动增长列归零,而truncate会使自动增长的列如id列归
零
6、创建库
语法:
示例:
7、删除库
语法:
示例:
五、查询操作
create database 数据库名 charset utf8;
create database if not exists 数据库名 charset utf8;
create database if not exists shop charset utf8;
drop database 数据库名;
drop database if exists 数据库名;
drop database if exists shop;
1.简介
1.1 语法
示例:
①查询所有雇员的姓名
1.2 用法
字符串连接concat()
示例:
编号为7369的雇员,姓名为smith,职位为clerk
select 列名 from 表名;
select 列名1,列名2,… from 表名;
select 列名1 别名1,列名2 别名2,…. from 表名;
select ename from emp;
select ename,job,hiredate from emp;
select * from emp;
select ename xm,job zw,hiredate rzsj from emp;
select ename “姓名”,job “职位”,hiredate “入职时间” from emp;
select empno,ename,sal your salary from emp;—-语法错误
别名中有空格,需要使用双撇号
select empno,ename,sal “your salary” from emp;
四则运算 + - * /
例:查询雇员的姓名和年薪?
在MySQL中,null与任何值进行运算,结果都为null。
例:查询所有的职位
2.限定查询
语法:
2.1 比较运算符
select concat(“编号为”,empno,“的雇员,姓名为”,ename,“,职位为”,jo
select ename “雇员姓名”, sal*12 “年薪” from emp;
select ename “雇员姓名”, (sal+comm)*12 “年薪” from emp; —-
select ename “雇员姓名”, (sal+ifnull(comm,0))*12 “年薪” from
select job from emp;—–有重复值
select distinct job from emp;
select 列名1,列名2,…
from 表名
where 条件;
> > = < 或<>
> >
> > ```
> >
> > ```
例:查询工资大于1500的雇员信息
select * from emp where sal>1500;select * from emp where sal>=1500;例:查询雇员编号不是7369的雇员信息例:查询姓名是smith的雇员编号,姓名,工资和入职时间。注:字符串要用单撇号或双撇号括起来,同时MySQL中不区分大小写2.2 null或not null例:查询每月可以获得奖金的雇员信息?select * from emp where empno!=7369;select empno,ename,sal,hiredate from emp where ename=‘smith’;select * from emp where comm is not null;select * from emp where comm is null;注:判断是否为null时使用的是is,不能使用比较运算符。2.3 and例:查询基本工资大于1000,并且可以获取奖金的雇员姓名、工资、奖金2.4 or例:查询从事销售工作,或工资大于等于2000的雇员信息?2.5 not例:查询从事销售工作,并且工资不小于1500的雇员编号,姓名、职位和入职时间2.6 between …and… 在…与…之间例:查询基本工资大于1500,但小于3000的雇员信息select ename,sal,comm from emp where sal>1000 and comm is notselect * from emp where job = “salesman” or sal>=2000;select empno,ename,job,sal,hiredate from emp where job != “salselect empno,ename,job,sal,hiredate from emp where not(job = ”注:between … and …包含临界值例:查询1981年入职的雇员编号、姓名、入职时间、所在部门编号?注意:日期必须使用单撇号或双撇号括起来2.7 in 或 not in例:查询编号为7369、7499、7788的雇员信息例:查询姓名为smith,allen,king的雇员编号、姓名、入职时间2.8 like用来进行模糊查询,需要结合通配符一起使用select * from emp where sal>1500 and sal3000;select * from emp where sal between 1500 and 3000;select * from emp where sal>=1500 and sal3000;select empno,ename,hiredate,deptno from emp where hiredate betselect * from emp where empno=‘7369’ or empno =‘7499’ or empnoselect * from emp where empno in (‘7369’,‘7499’,‘7788’);select empno,ename,hiredate from emp where ename in (‘smith’,‘常用的通配符:% 匹配任意长度的字符只能匹配单个字符例:查询雇员姓名以S开头的雇员信息例:查询雇员姓名中包含M的雇员信息例:查询从事销售工作,并且姓名长度为4个字符的雇员信息例:查询1981年入职的雇员编号、姓名、入职时间、所在部门编号3. 排序3.1 语法语法:select * from emp where ename like ’s%‘;select * from emp where ename like ’%M%‘;select * from emp where job=’salesman‘ and ename like ’____‘;select empno,ename,hiredate,deptno from emp where hiredate lik默认按升序排列;3.2 示例例:查询所有雇员信息,按工资由低到高进行排序例:查询部门10的雇员信息,按工资由高到低进行排序,如果工资相同,则按入职时间由早到晚进行排序。例:查询雇员编号、姓名、年薪按年薪由高到低排序

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/176607.html